github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/util/tracing/helpers_test.go (about) 1 // Copyright 2020 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 package tracing 12 13 import ( 14 "github.com/cockroachdb/errors" 15 "github.com/opentracing/opentracing-go" 16 "github.com/opentracing/opentracing-go/log" 17 ) 18 19 type mockTracer struct { 20 spans []*mockSpan 21 } 22 23 var _ opentracing.Tracer = &mockTracer{} 24 25 func (m *mockTracer) clear() { 26 m.spans = nil 27 } 28 29 // expectSingleStartWithTags checks that there's been a single call to 30 // StartSpan() since the last clear(), and that the call specified the given tag 31 // names (amongst possibly more tags). 32 func (m *mockTracer) expectSingleSpanWithTags(tagNames ...string) error { 33 if len(m.spans) != 1 { 34 return errors.Newf("expected 1 StartSpan() call, had: %d", len(m.spans)) 35 } 36 s := m.spans[0] 37 for _, t := range tagNames { 38 if _, ok := s.tags[t]; !ok { 39 return errors.Newf("missing tag: %s", t) 40 } 41 } 42 return nil 43 } 44 45 func (m *mockTracer) StartSpan( 46 operationName string, opts ...opentracing.StartSpanOption, 47 ) opentracing.Span { 48 var opt opentracing.StartSpanOptions 49 for _, o := range opts { 50 o.Apply(&opt) 51 } 52 s := &mockSpan{ 53 tags: make(opentracing.Tags), 54 } 55 if opt.Tags != nil { 56 s.tags = opt.Tags 57 } 58 m.spans = append(m.spans, s) 59 return s 60 } 61 62 func (m *mockTracer) Inject( 63 sm opentracing.SpanContext, format interface{}, carrier interface{}, 64 ) error { 65 panic("unimplemented") 66 } 67 68 func (m *mockTracer) Extract( 69 format interface{}, carrier interface{}, 70 ) (opentracing.SpanContext, error) { 71 panic("unimplemented") 72 } 73 74 type mockTracerManager struct{} 75 76 var _ shadowTracerManager = &mockTracerManager{} 77 78 func (m *mockTracerManager) Name() string { 79 return "mock" 80 } 81 82 func (m *mockTracerManager) Close(tr opentracing.Tracer) {} 83 84 type mockSpan struct { 85 tags opentracing.Tags 86 } 87 88 var _ opentracing.Span = &mockSpan{} 89 90 func (m *mockSpan) Finish() {} 91 92 func (m *mockSpan) FinishWithOptions(opts opentracing.FinishOptions) { 93 panic("unimplemented") 94 } 95 96 func (m *mockSpan) Context() opentracing.SpanContext { 97 panic("unimplemented") 98 } 99 100 func (m *mockSpan) SetOperationName(operationName string) opentracing.Span { 101 panic("unimplemented") 102 } 103 104 func (m *mockSpan) SetTag(key string, value interface{}) opentracing.Span { 105 m.tags[key] = value 106 return m 107 } 108 109 func (m *mockSpan) LogFields(fields ...log.Field) { 110 panic("unimplemented") 111 } 112 113 func (m *mockSpan) LogKV(alternatingKeyValues ...interface{}) { 114 panic("unimplemented") 115 } 116 117 func (m *mockSpan) SetBaggageItem(restrictedKey, value string) opentracing.Span { 118 panic("unimplemented") 119 } 120 121 func (m *mockSpan) BaggageItem(restrictedKey string) string { 122 panic("unimplemented") 123 } 124 125 func (m *mockSpan) Tracer() opentracing.Tracer { 126 panic("unimplemented") 127 } 128 129 func (m *mockSpan) LogEvent(event string) { 130 panic("unimplemented") 131 } 132 133 func (m *mockSpan) LogEventWithPayload(event string, payload interface{}) { 134 panic("unimplemented") 135 } 136 137 func (m *mockSpan) Log(data opentracing.LogData) { 138 panic("unimplemented") 139 }