@@ -25,7 +25,7 @@ import (
25
25
"testing"
26
26
"time"
27
27
28
- "github.com/stretchr/testify/assert "
28
+ assert "github.com/stretchr/testify/require "
29
29
"github.com/uber/jaeger-lib/metrics"
30
30
"go.uber.org/zap"
31
31
@@ -587,14 +587,14 @@ func BenchmarkServiceIndexLimitFetch(b *testing.B) {
587
587
588
588
// Opens a badger db and runs a test on it.
589
589
func runLargeFactoryTest (tb testing.TB , test func (tb testing.TB , sw spanstore.Writer , sr spanstore.Reader )) {
590
+ assert := assert .New (tb )
590
591
f := badger .NewFactory ()
591
592
opts := badger .NewOptions ("badger" )
592
593
v , command := config .Viperize (opts .AddFlags )
593
594
594
595
dir := "/mnt/ssd/badger/testRun"
595
596
err := os .MkdirAll (dir , 0700 )
596
- defer os .RemoveAll (dir )
597
- assert .NoError (tb , err )
597
+ assert .NoError (err )
598
598
keyParam := fmt .Sprintf ("--badger.directory-key=%s" , dir )
599
599
valueParam := fmt .Sprintf ("--badger.directory-value=%s" , dir )
600
600
@@ -608,22 +608,89 @@ func runLargeFactoryTest(tb testing.TB, test func(tb testing.TB, sw spanstore.Wr
608
608
f .InitFromViper (v )
609
609
610
610
err = f .Initialize (metrics .NullFactory , zap .NewNop ())
611
- assert .NoError (tb , err )
611
+ assert .NoError (err )
612
612
613
613
sw , err := f .CreateSpanWriter ()
614
- assert .NoError (tb , err )
614
+ assert .NoError (err )
615
615
616
616
sr , err := f .CreateSpanReader ()
617
- assert .NoError (tb , err )
617
+ assert .NoError (err )
618
618
619
619
defer func () {
620
620
if closer , ok := sw .(io.Closer ); ok {
621
621
err := closer .Close ()
622
- assert .NoError (tb , err )
622
+ os .RemoveAll (dir )
623
+ assert .NoError (err )
623
624
} else {
624
- tb .FailNow ()
625
+ assert .FailNow ("io.Closer not implemented by SpanWriter" )
625
626
}
626
-
627
627
}()
628
628
test (tb , sw , sr )
629
629
}
630
+
631
+ // TestRandomTraceID from issue #1808
632
+ func TestRandomTraceID (t * testing.T ) {
633
+ runFactoryTest (t , func (tb testing.TB , sw spanstore.Writer , sr spanstore.Reader ) {
634
+ s1 := model.Span {
635
+ TraceID : model.TraceID {
636
+ Low : uint64 (14767110704788176287 ),
637
+ High : 0 ,
638
+ },
639
+ SpanID : model .SpanID (14976775253976086374 ),
640
+ OperationName : "/" ,
641
+ Process : & model.Process {
642
+ ServiceName : "nginx" ,
643
+ },
644
+ Tags : model.KeyValues {
645
+ model.KeyValue {
646
+ Key : "http.request_id" ,
647
+ VStr : "first" ,
648
+ VType : model .StringType ,
649
+ },
650
+ },
651
+ StartTime : time .Now (),
652
+ Duration : 1 * time .Second ,
653
+ }
654
+ err := sw .WriteSpan (& s1 )
655
+ assert .NoError (t , err )
656
+
657
+ s2 := model.Span {
658
+ TraceID : model.TraceID {
659
+ Low : uint64 (4775132888371984950 ),
660
+ High : 0 ,
661
+ },
662
+ SpanID : model .SpanID (13576481569227028654 ),
663
+ OperationName : "/" ,
664
+ Process : & model.Process {
665
+ ServiceName : "nginx" ,
666
+ },
667
+ Tags : model.KeyValues {
668
+ model.KeyValue {
669
+ Key : "http.request_id" ,
670
+ VStr : "second" ,
671
+ VType : model .StringType ,
672
+ },
673
+ },
674
+ StartTime : time .Now (),
675
+ Duration : 1 * time .Second ,
676
+ }
677
+ err = sw .WriteSpan (& s2 )
678
+ assert .NoError (t , err )
679
+
680
+ params := & spanstore.TraceQueryParameters {
681
+ StartTimeMin : time .Now ().Add (- 1 * time .Minute ),
682
+ StartTimeMax : time .Now (),
683
+ ServiceName : "nginx" ,
684
+ Tags : map [string ]string {
685
+ "http.request_id" : "second" ,
686
+ },
687
+ }
688
+ traces , err := sr .FindTraces (context .Background (), params )
689
+ assert .NoError (t , err )
690
+
691
+ // failed with `second` tag query, but success with `first`
692
+ assert .Equal (t , 1 , len (traces ))
693
+ })
694
+
695
+ assert .True (t , false )
696
+ }
0 commit comments