micro-tracer-opentracing/opentracing_test.go

51 lines
832 B
Go
Raw Normal View History

package opentracing
import (
"context"
"sync"
"testing"
opentracing "github.com/opentracing/opentracing-go"
"go.unistack.org/micro/v3/metadata"
)
func TestStartSpanFromIncomingContext(t *testing.T) {
md := metadata.New(2)
md.Set("key", "val")
var g sync.WaitGroup
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
ctx = metadata.NewIncomingContext(ctx, md)
tracer := opentracing.GlobalTracer()
g.Add(8000)
cherr := make(chan error)
for i := 0; i < 8000; i++ {
go func() {
defer g.Done()
_, sp, err := startSpanFromIncomingContext(ctx, tracer, "test")
if err != nil {
cherr <- err
}
sp.Finish()
}()
}
for {
select {
default:
g.Wait()
close(cherr)
case err, ok := <-cherr:
if err != nil {
t.Fatal(err)
} else if !ok {
return
}
}
}
}