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  }