package tracetest

import "go.opentelemetry.io/otel/api/trace/tracetest"

Package tracetest provides testing utilities for tracing.

Index

Types

type Event

type Event struct {
	Timestamp  time.Time
	Name       string
	Attributes map[label.Key]label.Value
}

Event encapsulates the properties of calls to AddEvent or AddEventWithTimestamp.

type MockSpan

type MockSpan struct {
	StatusMsg string
	Name      string
	Status    codes.Code
	// contains filtered or unexported fields
}

MockSpan is a mock span used in association with MockTracer for testing purpose only.

func (*MockSpan) AddEvent

func (ms *MockSpan) AddEvent(ctx context.Context, name string, attrs ...label.KeyValue)

AddEvent does nothing.

func (*MockSpan) AddEventWithTimestamp

func (ms *MockSpan) AddEventWithTimestamp(ctx context.Context, timestamp time.Time, name string, attrs ...label.KeyValue)

AddEvent does nothing.

func (*MockSpan) End

func (ms *MockSpan) End(options ...apitrace.SpanOption)

End does nothing.

func (*MockSpan) IsRecording

func (ms *MockSpan) IsRecording() bool

IsRecording always returns false for MockSpan.

func (*MockSpan) RecordError

func (ms *MockSpan) RecordError(ctx context.Context, err error, opts ...apitrace.ErrorOption)

RecordError does nothing.

func (*MockSpan) SetAttributes

func (ms *MockSpan) SetAttributes(attributes ...label.KeyValue)

SetAttributes does nothing.

func (*MockSpan) SetError

func (ms *MockSpan) SetError(v bool)

SetError does nothing.

func (*MockSpan) SetName

func (ms *MockSpan) SetName(name string)

SetName sets the span name.

func (*MockSpan) SetStatus

func (ms *MockSpan) SetStatus(status codes.Code, msg string)

SetStatus does nothing.

func (*MockSpan) SpanContext

func (ms *MockSpan) SpanContext() apitrace.SpanContext

SpanContext returns associated label.SpanContext. If the receiver is nil it returns an empty label.SpanContext

func (*MockSpan) Tracer

func (ms *MockSpan) Tracer() apitrace.Tracer

Tracer returns MockTracer implementation of Tracer.

type MockTracer

type MockTracer struct {
	// StartSpanID is used to initialize spanId. It is incremented by one
	// every time a new span is created.
	//
	// StartSpanID has to be aligned for 64-bit atomic operations.
	StartSpanID *uint64

	// Sampled specifies if the new span should be sampled or not.
	Sampled bool

	// OnSpanStarted is called every time a new trace span is started
	OnSpanStarted func(span *MockSpan)
}

MockTracer is a simple tracer used for testing purpose only. It only supports ChildOf option. SpanId is atomically increased every time a new span is created.

func (*MockTracer) Start

Start starts a MockSpan. It creates a new Span based on Parent SpanContext option. TraceID is used from Parent Span Context and SpanID is assigned. If Parent SpanContext option is not specified then random TraceID is used. No other options are supported.

type Option

type Option interface {
	Apply(*config)
}

func WithSpanContextFunc

func WithSpanContextFunc(f func(context.Context) trace.SpanContext) Option

func WithSpanRecorder

func WithSpanRecorder(sr SpanRecorder) Option

type Span

type Span struct {
	// contains filtered or unexported fields
}

func (*Span) AddEvent

func (s *Span) AddEvent(ctx context.Context, name string, attrs ...label.KeyValue)

func (*Span) AddEventWithTimestamp

func (s *Span) AddEventWithTimestamp(ctx context.Context, timestamp time.Time, name string, attrs ...label.KeyValue)

func (*Span) Attributes

func (s *Span) Attributes() map[label.Key]label.Value

Attributes returns the attributes set on the Span, either at or after creation time. If the same attribute key was set multiple times, the last call will be used. Attributes cannot be changed after End has been called on the Span.

func (*Span) End

func (s *Span) End(opts ...trace.SpanOption)

func (*Span) EndTime

func (s *Span) EndTime() (time.Time, bool)

EndTime returns the time at which the Span was ended if at has been ended, or false otherwise. If the span has been ended, the returned time will be the wall-clock time unless a specific end time was provided.

func (*Span) Ended

func (s *Span) Ended() bool

Ended returns whether the Span has been ended, i.e., whether End has been called at least once on the Span.

func (*Span) Events

func (s *Span) Events() []Event

Events returns the events set on the Span. Events cannot be changed after End has been called on the Span.

func (*Span) IsRecording

func (s *Span) IsRecording() bool
func (s *Span) Links() map[trace.SpanContext][]label.KeyValue

Links returns the links set on the Span at creation time. If multiple links for the same SpanContext were set, the last link will be used.

func (*Span) Name

func (s *Span) Name() string

Name returns the name most recently set on the Span, either at or after creation time. It cannot be change after End has been called on the Span.

func (*Span) ParentSpanID

func (s *Span) ParentSpanID() trace.SpanID

ParentSpanID returns the SpanID of the parent Span. If the Span is a root Span and therefore does not have a parent, the returned SpanID will be invalid (i.e., it will contain all zeroes).

func (*Span) RecordError

func (s *Span) RecordError(ctx context.Context, err error, opts ...trace.ErrorOption)

func (*Span) SetAttributes

func (s *Span) SetAttributes(attrs ...label.KeyValue)

func (*Span) SetName

func (s *Span) SetName(name string)

func (*Span) SetStatus

func (s *Span) SetStatus(code codes.Code, msg string)

func (*Span) SpanContext

func (s *Span) SpanContext() trace.SpanContext

func (*Span) SpanKind

func (s *Span) SpanKind() trace.SpanKind

SpanKind returns the span kind of this span.

func (*Span) StartTime

func (s *Span) StartTime() time.Time

StartTime returns the time at which the Span was started. This will be the wall-clock time unless a specific start time was provided.

func (*Span) StatusCode

func (s *Span) StatusCode() codes.Code

Status returns the status most recently set on the Span, or codes.OK if no status has been explicitly set. It cannot be changed after End has been called on the Span.

func (*Span) StatusMessage

func (s *Span) StatusMessage() string

StatusMessage returns the status message most recently set on the Span or the empty string if no status mesaage was set.

func (*Span) Tracer

func (s *Span) Tracer() trace.Tracer

type SpanRecorder

type SpanRecorder interface {
	OnStart(span *Span)
	OnEnd(span *Span)
}

type StandardSpanRecorder

type StandardSpanRecorder struct {
	// contains filtered or unexported fields
}

func (*StandardSpanRecorder) Completed

func (ssr *StandardSpanRecorder) Completed() []*Span

func (*StandardSpanRecorder) OnEnd

func (ssr *StandardSpanRecorder) OnEnd(span *Span)

func (*StandardSpanRecorder) OnStart

func (ssr *StandardSpanRecorder) OnStart(span *Span)

func (*StandardSpanRecorder) Started

func (ssr *StandardSpanRecorder) Started() []*Span

type Tracer

type Tracer struct {
	// Name is the instrumentation name.
	Name string
	// Version is the instrumentation version.
	Version string
	// contains filtered or unexported fields
}

Tracer is an OpenTelemetry Tracer implementation used for testing.

func (*Tracer) Start

func (t *Tracer) Start(ctx context.Context, name string, opts ...trace.SpanOption) (context.Context, trace.Span)

type TracerProvider

type TracerProvider struct {
	// contains filtered or unexported fields
}

func NewTracerProvider

func NewTracerProvider(opts ...Option) *TracerProvider

func (*TracerProvider) Tracer

func (p *TracerProvider) Tracer(instName string, opts ...trace.TracerOption) trace.Tracer

Source Files

config.go doc.go event.go mock_span.go mock_tracer.go provider.go span.go tracer.go

Version
v0.13.0
Published
Oct 8, 2020
Platform
js/wasm
Imports
12 packages
Last checked
47 minutes ago

Tools for package owners.