@@ -20,6 +20,7 @@ import (
20
20
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/internal"
21
21
"gopkg.in/DataDog/dd-trace-go.v1/internal/samplernames"
22
22
23
+ "github.com/darccio/knobs"
23
24
"github.com/stretchr/testify/assert"
24
25
"golang.org/x/time/rate"
25
26
)
@@ -201,7 +202,8 @@ func TestRuleEnvVars(t *testing.T) {
201
202
{in : "1point0" , out : math .NaN ()}, // default if invalid value
202
203
} {
203
204
t .Setenv ("DD_TRACE_SAMPLE_RATE" , tt .in )
204
- res := newConfig ().globalSampleRate
205
+ c := newConfig ()
206
+ res := knobs .GetScope (c .Scope , globalSampleRate )
205
207
if math .IsNaN (tt .out ) {
206
208
assert .True (math .IsNaN (res ))
207
209
} else {
@@ -226,7 +228,9 @@ func TestRuleEnvVars(t *testing.T) {
226
228
assert := assert .New (t )
227
229
t .Setenv ("OTEL_TRACES_SAMPLER" , tt .config )
228
230
t .Setenv ("OTEL_TRACES_SAMPLER_ARG" , fmt .Sprintf ("%f" , tt .rate ))
229
- assert .Equal (tt .rate , newConfig ().globalSampleRate )
231
+ c := newConfig ()
232
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
233
+ assert .Equal (tt .rate , sampleRate )
230
234
})
231
235
}
232
236
})
@@ -477,7 +481,9 @@ func TestRulesSampler(t *testing.T) {
477
481
}
478
482
t .Run ("no-rules" , func (t * testing.T ) {
479
483
assert := assert .New (t )
480
- rs := newRulesSampler (nil , nil , newConfig ().globalSampleRate )
484
+ c := newConfig ()
485
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
486
+ rs := newRulesSampler (nil , nil , sampleRate )
481
487
482
488
span := makeSpan ("http.request" , "test-service" )
483
489
result := rs .SampleTrace (span )
@@ -542,7 +548,9 @@ func TestRulesSampler(t *testing.T) {
542
548
assert .Nil (t , err )
543
549
544
550
assert := assert .New (t )
545
- rs := newRulesSampler (rules , nil , newConfig ().globalSampleRate )
551
+ c := newConfig ()
552
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
553
+ rs := newRulesSampler (rules , nil , sampleRate )
546
554
547
555
span := makeFinishedSpan (tt .spanName , tt .spanSrv , tt .spanRsc , tt .spanTags )
548
556
@@ -566,7 +574,9 @@ func TestRulesSampler(t *testing.T) {
566
574
for _ , v := range traceRules {
567
575
t .Run ("" , func (t * testing.T ) {
568
576
assert := assert .New (t )
569
- rs := newRulesSampler (v , nil , newConfig ().globalSampleRate )
577
+ c := newConfig ()
578
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
579
+ rs := newRulesSampler (v , nil , sampleRate )
570
580
571
581
span := makeSpan ("http.request" , "test-service" )
572
582
result := rs .SampleTrace (span )
@@ -592,7 +602,9 @@ func TestRulesSampler(t *testing.T) {
592
602
for _ , v := range traceRules {
593
603
t .Run ("" , func (t * testing.T ) {
594
604
assert := assert .New (t )
595
- rs := newRulesSampler (v , nil , newConfig ().globalSampleRate )
605
+ c := newConfig ()
606
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
607
+ rs := newRulesSampler (v , nil , sampleRate )
596
608
597
609
span := makeSpan ("http.request" , "test-service" )
598
610
result := rs .SampleTrace (span )
@@ -638,7 +650,9 @@ func TestRulesSampler(t *testing.T) {
638
650
_ , rules , err := samplingRulesFromEnv ()
639
651
assert .Nil (t , err )
640
652
assert := assert .New (t )
641
- rs := newRulesSampler (nil , rules , newConfig ().globalSampleRate )
653
+ c := newConfig ()
654
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
655
+ rs := newRulesSampler (nil , rules , sampleRate )
642
656
643
657
span := makeFinishedSpan (tt .spanName , tt .spanSrv , "res-10" , map [string ]interface {}{"hostname" : "hn-30" })
644
658
@@ -761,7 +775,8 @@ func TestRulesSampler(t *testing.T) {
761
775
t .Run (fmt .Sprintf ("%v" , i ), func (t * testing.T ) {
762
776
assert := assert .New (t )
763
777
c := newConfig (WithSamplingRules (tt .rules ))
764
- rs := newRulesSampler (nil , c .spanRules , newConfig ().globalSampleRate )
778
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
779
+ rs := newRulesSampler (nil , c .spanRules , sampleRate )
765
780
766
781
span := makeFinishedSpan (tt .spanName , tt .spanSrv , "res-10" , map [string ]interface {}{"hostname" : "hn-30" ,
767
782
"tag" : 20.1 ,
@@ -829,7 +844,8 @@ func TestRulesSampler(t *testing.T) {
829
844
_ , rules , _ := samplingRulesFromEnv ()
830
845
831
846
assert := assert .New (t )
832
- sampleRate := newConfig ().globalSampleRate
847
+ c := newConfig ()
848
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
833
849
rs := newRulesSampler (nil , rules , sampleRate )
834
850
835
851
span := makeFinishedSpan (tt .spanName , tt .spanSrv , tt .resName , map [string ]interface {}{"hostname" : "hn-30" })
@@ -940,7 +956,8 @@ func TestRulesSampler(t *testing.T) {
940
956
t .Run ("" , func (t * testing.T ) {
941
957
assert := assert .New (t )
942
958
c := newConfig (WithSamplingRules (tt .rules ))
943
- rs := newRulesSampler (nil , c .spanRules , newConfig ().globalSampleRate )
959
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
960
+ rs := newRulesSampler (nil , c .spanRules , sampleRate )
944
961
945
962
span := makeFinishedSpan (tt .spanName , tt .spanSrv , "res-10" , map [string ]interface {}{"hostname" : "hn-30" ,
946
963
"tag" : 20.1 ,
@@ -969,7 +986,9 @@ func TestRulesSampler(t *testing.T) {
969
986
t .Run ("" , func (t * testing.T ) {
970
987
assert := assert .New (t )
971
988
t .Setenv ("DD_TRACE_SAMPLE_RATE" , fmt .Sprint (rate ))
972
- rs := newRulesSampler (nil , rules , newConfig ().globalSampleRate )
989
+ c := newConfig ()
990
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
991
+ rs := newRulesSampler (nil , rules , sampleRate )
973
992
974
993
span := makeSpan ("http.request" , "test-service" )
975
994
result := rs .SampleTrace (span )
@@ -1250,7 +1269,9 @@ func TestRulesSamplerInternals(t *testing.T) {
1250
1269
t .Run ("full-rate" , func (t * testing.T ) {
1251
1270
assert := assert .New (t )
1252
1271
now := time .Now ()
1253
- rs := newRulesSampler (nil , nil , newConfig ().globalSampleRate )
1272
+ c := newConfig ()
1273
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
1274
+ rs := newRulesSampler (nil , nil , sampleRate )
1254
1275
// set samplingLimiter to specific state
1255
1276
rs .traces .limiter .prevTime = now .Add (- 1 * time .Second )
1256
1277
rs .traces .limiter .allowed = 1
@@ -1265,7 +1286,9 @@ func TestRulesSamplerInternals(t *testing.T) {
1265
1286
t .Run ("limited-rate" , func (t * testing.T ) {
1266
1287
assert := assert .New (t )
1267
1288
now := time .Now ()
1268
- rs := newRulesSampler (nil , nil , newConfig ().globalSampleRate )
1289
+ c := newConfig ()
1290
+ sampleRate := knobs .GetScope (c .Scope , globalSampleRate )
1291
+ rs := newRulesSampler (nil , nil , sampleRate )
1269
1292
// force sampling limiter to 1.0 spans/sec
1270
1293
rs .traces .limiter .limiter = rate .NewLimiter (rate .Limit (1.0 ), 1 )
1271
1294
rs .traces .limiter .prevTime = now .Add (- 1 * time .Second )
0 commit comments