@@ -274,7 +274,8 @@ func TestUpdateWAF(t *testing.T) {
274
274
require .NotNil (t , waf )
275
275
defer waf .Close ()
276
276
277
- wafCtx := NewContext (waf )
277
+ wafCtx , err := waf .NewContext ()
278
+ require .NoError (t , err )
278
279
defer wafCtx .Close ()
279
280
280
281
// Matches
@@ -295,7 +296,8 @@ func TestUpdateWAF(t *testing.T) {
295
296
require .NotNil (t , waf2 )
296
297
defer waf2 .Close ()
297
298
298
- wafCtx2 := NewContext (waf2 )
299
+ wafCtx2 , err := waf2 .NewContext ()
300
+ require .NoError (t , err )
299
301
defer wafCtx2 .Close ()
300
302
301
303
// Matches & Block
@@ -369,11 +371,12 @@ func TestTimeout(t *testing.T) {
369
371
}
370
372
371
373
t .Run ("not-empty-metrics-match" , func (t * testing.T ) {
372
- context := NewContextWithBudget (waf , time .Hour )
374
+ context , err := waf .NewContextWithBudget (time .Hour )
375
+ require .NoError (t , err )
373
376
require .NotNil (t , context )
374
377
defer context .Close ()
375
378
376
- _ , err : = context .Run (RunAddressData {Persistent : normalValue , Ephemeral : normalValue }, 0 )
379
+ _ , err = context .Run (RunAddressData {Persistent : normalValue , Ephemeral : normalValue }, 0 )
377
380
require .NoError (t , err )
378
381
require .NotEmpty (t , context .Stats ())
379
382
require .NotZero (t , context .Stats ().Timers ["_dd.appsec.waf.decode" ])
@@ -383,11 +386,12 @@ func TestTimeout(t *testing.T) {
383
386
})
384
387
385
388
t .Run ("not-empty-metrics-no-match" , func (t * testing.T ) {
386
- context := NewContextWithBudget (waf , time .Hour )
389
+ context , err := waf .NewContextWithBudget (time .Hour )
390
+ require .NoError (t , err )
387
391
require .NotNil (t , context )
388
392
defer context .Close ()
389
393
390
- _ , err : = context .Run (RunAddressData {Persistent : map [string ]any {"my.input" : "curl/7.88" }}, 0 )
394
+ _ , err = context .Run (RunAddressData {Persistent : map [string ]any {"my.input" : "curl/7.88" }}, 0 )
391
395
require .NoError (t , err )
392
396
require .NotEmpty (t , context .Stats ())
393
397
require .NotZero (t , context .Stats ().Timers ["_dd.appsec.waf.decode" ])
@@ -397,34 +401,35 @@ func TestTimeout(t *testing.T) {
397
401
})
398
402
399
403
t .Run ("timeout-persistent-encoder" , func (t * testing.T ) {
400
- context := NewContextWithBudget (waf , time .Millisecond )
404
+ context , err := waf .NewContextWithBudget (time .Millisecond )
405
+ require .NoError (t , err )
401
406
require .NotNil (t , context )
402
407
defer context .Close ()
403
408
404
- _ , err : = context .Run (RunAddressData {Persistent : largeValue }, 0 )
409
+ _ , err = context .Run (RunAddressData {Persistent : largeValue }, 0 )
405
410
require .Equal (t , errors .ErrTimeout , err )
406
411
require .GreaterOrEqual (t , context .Stats ().Timers ["_dd.appsec.waf.duration_ext" ], time .Millisecond )
407
412
require .GreaterOrEqual (t , context .Stats ().Timers ["_dd.appsec.waf.encode" ], time .Millisecond )
408
413
})
409
414
410
415
t .Run ("timeout-ephemeral-encoder" , func (t * testing.T ) {
411
- context := NewContextWithBudget (waf , time .Millisecond )
416
+ context , err := waf .NewContextWithBudget (time .Millisecond )
417
+ require .NoError (t , err )
412
418
require .NotNil (t , context )
413
419
defer context .Close ()
414
420
415
- _ , err : = context .Run (RunAddressData {Ephemeral : largeValue }, 0 )
421
+ _ , err = context .Run (RunAddressData {Ephemeral : largeValue }, 0 )
416
422
require .Equal (t , errors .ErrTimeout , err )
417
423
require .GreaterOrEqual (t , context .Stats ().Timers ["_dd.appsec.waf.duration_ext" ], time .Millisecond )
418
424
require .GreaterOrEqual (t , context .Stats ().Timers ["_dd.appsec.waf.encode" ], time .Millisecond )
419
425
})
420
426
421
427
t .Run ("many-runs" , func (t * testing.T ) {
422
- context := NewContextWithBudget (waf , time .Millisecond )
428
+ context , err := waf .NewContextWithBudget (time .Millisecond )
429
+ require .NoError (t , err )
423
430
require .NotNil (t , context )
424
431
defer context .Close ()
425
432
426
- var err error
427
-
428
433
for i := 0 ; i < 1000 && err != errors .ErrTimeout ; i ++ {
429
434
_ , err = context .Run (RunAddressData {Persistent : normalValue }, 0 )
430
435
}
@@ -441,7 +446,8 @@ func TestMatching(t *testing.T) {
441
446
442
447
require .Equal (t , []string {"my.input" }, waf .Addresses ())
443
448
444
- wafCtx := NewContext (waf )
449
+ wafCtx , err := waf .NewContext ()
450
+ require .NoError (t , err )
445
451
require .NotNil (t , wafCtx )
446
452
447
453
// Not matching because the address value doesn't match the rule
@@ -496,7 +502,9 @@ func TestMatching(t *testing.T) {
496
502
wafCtx .Close ()
497
503
waf .Close ()
498
504
// Using the WAF instance after it was closed leads to a nil WAF context
499
- require .Nil (t , NewContext (waf ))
505
+ ctx , err := waf .NewContext ()
506
+ require .Nil (t , ctx )
507
+ require .Error (t , err )
500
508
}
501
509
502
510
func TestMatchingEphemeralAndPersistent (t * testing.T ) {
@@ -505,7 +513,8 @@ func TestMatchingEphemeralAndPersistent(t *testing.T) {
505
513
require .NoError (t , err )
506
514
defer waf .Close ()
507
515
508
- wafCtx := NewContext (waf )
516
+ wafCtx , err := waf .NewContext ()
517
+ require .NoError (t , err )
509
518
require .NotNil (t , wafCtx )
510
519
defer wafCtx .Close ()
511
520
@@ -557,7 +566,8 @@ func TestMatchingEphemeral(t *testing.T) {
557
566
sort .Strings (addrs )
558
567
require .Equal (t , []string {input1 , input2 }, addrs )
559
568
560
- wafCtx := NewContext (waf )
569
+ wafCtx , err := waf .NewContext ()
570
+ require .NoError (t , err )
561
571
require .NotNil (t , wafCtx )
562
572
563
573
// Not matching because the address value doesn't match the rule
@@ -614,7 +624,9 @@ func TestMatchingEphemeral(t *testing.T) {
614
624
wafCtx .Close ()
615
625
waf .Close ()
616
626
// Using the WAF instance after it was closed leads to a nil WAF context
617
- require .Nil (t , NewContext (waf ))
627
+ ctx , err := waf .NewContext ()
628
+ require .Nil (t , ctx )
629
+ require .Error (t , err )
618
630
}
619
631
620
632
func TestMatchingEphemeralOnly (t * testing.T ) {
@@ -631,7 +643,8 @@ func TestMatchingEphemeralOnly(t *testing.T) {
631
643
sort .Strings (addrs )
632
644
require .Equal (t , []string {input1 , input2 }, addrs )
633
645
634
- wafCtx := NewContext (waf )
646
+ wafCtx , err := waf .NewContext ()
647
+ require .NoError (t , err )
635
648
require .NotNil (t , wafCtx )
636
649
637
650
// Not matching because the address value doesn't match the rule
@@ -672,7 +685,9 @@ func TestMatchingEphemeralOnly(t *testing.T) {
672
685
wafCtx .Close ()
673
686
waf .Close ()
674
687
// Using the WAF instance after it was closed leads to a nil WAF context
675
- require .Nil (t , NewContext (waf ))
688
+ ctx , err := waf .NewContext ()
689
+ require .Nil (t , ctx )
690
+ require .Error (t , err )
676
691
}
677
692
678
693
func TestActions (t * testing.T ) {
@@ -684,7 +699,8 @@ func TestActions(t *testing.T) {
684
699
require .NotNil (t , waf )
685
700
defer waf .Close ()
686
701
687
- wafCtx := NewContext (waf )
702
+ wafCtx , err := waf .NewContext ()
703
+ require .NoError (t , err )
688
704
require .NotNil (t , wafCtx )
689
705
defer wafCtx .Close ()
690
706
@@ -727,7 +743,8 @@ func TestConcurrency(t *testing.T) {
727
743
require .NoError (t , err )
728
744
defer waf .Close ()
729
745
730
- wafCtx := NewContext (waf )
746
+ wafCtx , err := waf .NewContext ()
747
+ require .NoError (t , err )
731
748
defer wafCtx .Close ()
732
749
733
750
// User agents that won't match the rule so that it doesn't get pruned.
@@ -821,7 +838,8 @@ func TestConcurrency(t *testing.T) {
821
838
startBarrier .Wait () // Sync the starts of the goroutines
822
839
defer stopBarrier .Done () // Signal we are done when returning
823
840
824
- wafCtx := NewContext (waf )
841
+ wafCtx , err := waf .NewContext ()
842
+ require .NoError (t , err )
825
843
defer wafCtx .Close ()
826
844
827
845
for c := 0 ; c < nbRun ; c ++ {
@@ -890,8 +908,8 @@ func TestConcurrency(t *testing.T) {
890
908
startBarrier .Wait () // Sync the starts of the goroutines
891
909
defer stopBarrier .Done () // Signal we are done when returning
892
910
893
- wafCtx := NewContext (waf )
894
- if wafCtx == nil {
911
+ wafCtx , err := waf . NewContext ()
912
+ if wafCtx == nil || err != nil {
895
913
return
896
914
}
897
915
wafCtx .Close ()
@@ -923,7 +941,8 @@ func TestConcurrency(t *testing.T) {
923
941
waf , err := newDefaultHandle (testArachniRule )
924
942
require .NoError (t , err )
925
943
926
- wafCtx := NewContext (waf )
944
+ wafCtx , err := waf .NewContext ()
945
+ require .NoError (t , err )
927
946
require .NotNil (t , wafCtx )
928
947
929
948
var startBarrier , stopBarrier sync.WaitGroup
@@ -1087,7 +1106,8 @@ func TestMetrics(t *testing.T) {
1087
1106
})
1088
1107
1089
1108
t .Run ("RunDuration" , func (t * testing.T ) {
1090
- wafCtx := NewContext (waf )
1109
+ wafCtx , err := waf .NewContext ()
1110
+ require .NoError (t , err )
1091
1111
require .NotNil (t , wafCtx )
1092
1112
defer wafCtx .Close ()
1093
1113
// Craft matching data to force work on the WAF
@@ -1113,7 +1133,8 @@ func TestMetrics(t *testing.T) {
1113
1133
})
1114
1134
1115
1135
t .Run ("Timeouts" , func (t * testing.T ) {
1116
- wafCtx := NewContextWithBudget (waf , time .Nanosecond )
1136
+ wafCtx , err := waf .NewContextWithBudget (time .Nanosecond )
1137
+ require .NoError (t , err )
1117
1138
require .NotNil (t , wafCtx )
1118
1139
defer wafCtx .Close ()
1119
1140
// Craft matching data to force work on the WAF
@@ -1138,7 +1159,8 @@ func TestObfuscatorConfig(t *testing.T) {
1138
1159
waf , err := NewHandle (rule , "key" , "" )
1139
1160
require .NoError (t , err )
1140
1161
defer waf .Close ()
1141
- wafCtx := NewContext (waf )
1162
+ wafCtx , err := waf .NewContext ()
1163
+ require .NoError (t , err )
1142
1164
require .NotNil (t , wafCtx )
1143
1165
defer wafCtx .Close ()
1144
1166
data := map [string ]interface {}{
@@ -1160,7 +1182,8 @@ func TestObfuscatorConfig(t *testing.T) {
1160
1182
waf , err := NewHandle (rule , "" , "sensitive" )
1161
1183
require .NoError (t , err )
1162
1184
defer waf .Close ()
1163
- wafCtx := NewContext (waf )
1185
+ wafCtx , err := waf .NewContext ()
1186
+ require .NoError (t , err )
1164
1187
require .NotNil (t , wafCtx )
1165
1188
defer wafCtx .Close ()
1166
1189
data := map [string ]interface {}{
@@ -1182,7 +1205,8 @@ func TestObfuscatorConfig(t *testing.T) {
1182
1205
waf , err := NewHandle (rule , "" , "" )
1183
1206
require .NoError (t , err )
1184
1207
defer waf .Close ()
1185
- wafCtx := NewContext (waf )
1208
+ wafCtx , err := waf .NewContext ()
1209
+ require .NoError (t , err )
1186
1210
require .NotNil (t , wafCtx )
1187
1211
defer wafCtx .Close ()
1188
1212
data := map [string ]interface {}{
@@ -1206,7 +1230,8 @@ func TestTruncationInformation(t *testing.T) {
1206
1230
require .NoError (t , err )
1207
1231
defer waf .Close ()
1208
1232
1209
- ctx := NewContext (waf )
1233
+ ctx , err := waf .NewContext ()
1234
+ require .NoError (t , err )
1210
1235
defer ctx .Close ()
1211
1236
1212
1237
extra := rand .Intn (10 ) + 1 // Random int between 1 and 10
0 commit comments