@@ -11,8 +11,9 @@ import (
11
11
"gopkg.in/src-d/go-mysql-server.v0/sql"
12
12
"gopkg.in/src-d/go-mysql-server.v0/sql/parse"
13
13
14
+ opentracing "github.com/opentracing/opentracing-go"
15
+ "github.com/opentracing/opentracing-go/log"
14
16
"github.com/stretchr/testify/require"
15
- jaeger "github.com/uber/jaeger-client-go"
16
17
)
17
18
18
19
const driverName = "engine_tests"
@@ -414,11 +415,7 @@ func TestTracing(t *testing.T) {
414
415
require := require .New (t )
415
416
e := newEngine (t )
416
417
417
- reporter := jaeger .NewInMemoryReporter ()
418
- tracer , closer := jaeger .NewTracer ("go-mysql-server" , jaeger .NewConstSampler (true ), reporter )
419
- defer func () {
420
- require .NoError (closer .Close ())
421
- }()
418
+ tracer := new (memTracer )
422
419
423
420
ctx := sql .NewContext (context .TODO (), sql .WithTracer (tracer ))
424
421
@@ -433,30 +430,67 @@ func TestTracing(t *testing.T) {
433
430
require .Len (rows , 1 )
434
431
require .NoError (err )
435
432
436
- spans := reporter . GetSpans ()
433
+ spans := tracer . spans
437
434
438
435
var expectedSpans = []string {
439
- "expression.Equals" ,
440
- "expression.Equals" ,
441
- "expression.Equals" ,
442
- "plan.Filter" ,
443
436
"plan.Limit" ,
444
437
"plan.Distinct" ,
445
438
"plan.Project" ,
446
439
"plan.Sort" ,
440
+ "plan.Filter" ,
441
+ "expression.Equals" ,
442
+ "expression.Equals" ,
443
+ "expression.Equals" ,
447
444
}
448
445
449
446
var spanOperations []string
450
447
for _ , s := range spans {
451
- name := s .(* jaeger.Span ).OperationName ()
452
448
// only check the ones inside the execution tree
453
- if strings .HasPrefix (name , "plan." ) ||
454
- strings .HasPrefix (name , "expression." ) ||
455
- strings .HasPrefix (name , "function." ) ||
456
- strings .HasPrefix (name , "aggregation." ) {
457
- spanOperations = append (spanOperations , name )
449
+ if strings .HasPrefix (s , "plan." ) ||
450
+ strings .HasPrefix (s , "expression." ) ||
451
+ strings .HasPrefix (s , "function." ) ||
452
+ strings .HasPrefix (s , "aggregation." ) {
453
+ spanOperations = append (spanOperations , s )
458
454
}
459
455
}
460
456
461
457
require .Equal (expectedSpans , spanOperations )
462
458
}
459
+
460
+ type memTracer struct {
461
+ spans []string
462
+ }
463
+
464
+ type memSpan struct {
465
+ opName string
466
+ }
467
+
468
+ func (t * memTracer ) StartSpan (operationName string , opts ... opentracing.StartSpanOption ) opentracing.Span {
469
+ t .spans = append (t .spans , operationName )
470
+ return & memSpan {operationName }
471
+ }
472
+
473
+ func (t * memTracer ) Inject (sm opentracing.SpanContext , format interface {}, carrier interface {}) error {
474
+ panic ("not implemented" )
475
+ }
476
+
477
+ func (t * memTracer ) Extract (format interface {}, carrier interface {}) (opentracing.SpanContext , error ) {
478
+ panic ("not implemented" )
479
+ }
480
+
481
+ func (m memSpan ) Context () opentracing.SpanContext { return m }
482
+ func (m memSpan ) SetBaggageItem (key , val string ) opentracing.Span { return m }
483
+ func (m memSpan ) BaggageItem (key string ) string { return "" }
484
+ func (m memSpan ) SetTag (key string , value interface {}) opentracing.Span { return m }
485
+ func (m memSpan ) LogFields (fields ... log.Field ) {}
486
+ func (m memSpan ) LogKV (keyVals ... interface {}) {}
487
+ func (m memSpan ) Finish () {}
488
+ func (m memSpan ) FinishWithOptions (opts opentracing.FinishOptions ) {}
489
+ func (m memSpan ) SetOperationName (operationName string ) opentracing.Span {
490
+ return & memSpan {operationName }
491
+ }
492
+ func (m memSpan ) Tracer () opentracing.Tracer { return & memTracer {} }
493
+ func (m memSpan ) LogEvent (event string ) {}
494
+ func (m memSpan ) LogEventWithPayload (event string , payload interface {}) {}
495
+ func (m memSpan ) Log (data opentracing.LogData ) {}
496
+ func (m memSpan ) ForeachBaggageItem (handler func (k , v string ) bool ) {}
0 commit comments