testutil

package
v0.36.0-rc.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2022 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package testutil provides easy ways to generate some random or deterministic data that can be use for tests or benchmarks.

All the publicly shared trace agent model is available.

It avoids the cumbersome step of having to redefine complicated structs in every test case and maintain common methods for quick access to almost all kind of stub data needed. It should NEVER be imported in a program, most likely in one-off projects or fuzz modes or test suites.

Index

Constants

This section is empty.

Variables

View Source
var (
	// OTLPFixedSpanID specifies a fixed test SpanID.
	OTLPFixedSpanID = pdata.NewSpanID([8]byte{0x24, 0x0, 0x31, 0xea, 0xd7, 0x50, 0xe5, 0xf3})
	// OTLPFixedTraceID specifies a fixed test TraceID.
	OTLPFixedTraceID = pdata.NewTraceID([16]byte{0x72, 0xdf, 0x52, 0xa, 0xf2, 0xbd, 0xe7, 0xa5, 0x24, 0x0, 0x31, 0xea, 0xd7, 0x50, 0xe5, 0xf3})
)
View Source
var YearNS = (time.Hour * 24 * 365).Nanoseconds()

YearNS is the number of nanoseconds in a year

Functions

func BucketWithSpans

func BucketWithSpans(spans []*pb.Span) pb.ClientStatsBucket

BucketWithSpans returns a stats bucket populated with spans stats

func FindTCPPort

func FindTCPPort() (int, error)

FindTCPPort finds a free TCP port and returns it. If it fails, error will be non-nil.

func FreeTCPPort

func FreeTCPPort(t *testing.T) int

FreeTCPPort returns a free TCP port. Upon encountering an error, it uses t to fail the test and report it.

func GeneratePayload

func GeneratePayload(n int, tc *TraceConfig, sc *SpanConfig) pb.Traces

GeneratePayload generates a new payload.

func GenerateSpan

func GenerateSpan(c *SpanConfig) *pb.Span

GenerateSpan generates a random root span with all fields filled in.

func GenerateTrace

func GenerateTrace(tc *TraceConfig, sc *SpanConfig) pb.Trace

GenerateTrace generates a valid trace using the given config.

func GetTestSpan

func GetTestSpan() *pb.Span

GetTestSpan returns a Span with different fields set

func GetTestTraceChunks

func GetTestTraceChunks(traceN, size int, realisticIDs bool) []*pb.TraceChunk

GetTestTraceChunks returns a []TraceChunk that is composed by “traceN“ number of traces, each one composed by “size“ number of spans.

func GetTestTraces

func GetTestTraces(traceN, size int, realisticIDs bool) pb.Traces

GetTestTraces returns a []Trace that is composed by “traceN“ number of traces, each one composed by “size“ number of spans.

func NewOTLPSpan

func NewOTLPSpan(s *OTLPSpan) pdata.Span

NewOTLPSpan creates a new OTLP Span with the given options.

func NewOTLPTracesRequest

func NewOTLPTracesRequest(defs []OTLPResourceSpan) otlpgrpc.TracesRequest

NewOTLPTracesRequest creates a new TracesRequest based on the given definitions.

func RandomBucket

func RandomBucket(n int) pb.ClientStatsBucket

RandomBucket returns a bucket made from n random spans, useful to run benchmarks and tests

func RandomSizedBytes

func RandomSizedBytes(size int) []byte

RandomSizedBytes creates a random byte slice with the specified size.

func RandomSpan

func RandomSpan() *pb.Span

RandomSpan generates a wide-variety of spans, useful to test robustness & performance

func RandomSpanDuration

func RandomSpanDuration() int64

RandomSpanDuration generates a random span duration

func RandomSpanError

func RandomSpanError() int32

RandomSpanError generates a random span error code

func RandomSpanID

func RandomSpanID() uint64

RandomSpanID generates a random span ID

func RandomSpanMeta

func RandomSpanMeta() map[string]string

RandomSpanMeta generates some random span metadata

func RandomSpanMetrics

func RandomSpanMetrics() map[string]float64

RandomSpanMetrics generates some random span metrics

func RandomSpanName

func RandomSpanName() string

RandomSpanName generates a random span name string

func RandomSpanParentID

func RandomSpanParentID() uint64

RandomSpanParentID generates a random span parent ID

func RandomSpanResource

func RandomSpanResource() string

RandomSpanResource generates a random span resource string

func RandomSpanService

func RandomSpanService() string

RandomSpanService generates a random span service string

func RandomSpanStart

func RandomSpanStart() int64

RandomSpanStart generates a span start timestamp

func RandomSpanTraceID

func RandomSpanTraceID() uint64

RandomSpanTraceID generates a random trace ID

func RandomSpanType

func RandomSpanType() string

RandomSpanType generates a random span type

func RandomStringMap

func RandomStringMap() map[string]string

RandomStringMap creates a random map with string keys and values.

func RandomTrace

func RandomTrace(maxLevels, maxSpans int) pb.Trace

RandomTrace generates a random trace with a depth from 1 to maxLevels of spans. Each level has at most maxSpans items.

func RandomTraceChunk

func RandomTraceChunk(maxLevels, maxSpans int) *pb.TraceChunk

RandomTraceChunk generates a random trace chunk with a depth from 1 to maxLevels of spans. Each level has at most maxSpans items.

func SetOTLPSpan

func SetOTLPSpan(span pdata.Span, s *OTLPSpan)

SetOTLPSpan configures span based on s.

func TestSpan

func TestSpan() *pb.Span

TestSpan returns a fix span with hardcoded info, useful for reproducible tests

func TraceChunkWithSpan

func TraceChunkWithSpan(span *pb.Span) *pb.TraceChunk

TraceChunkWithSpan wraps a `span` with pb.TraceChunk

func TraceChunkWithSpanAndPriority

func TraceChunkWithSpanAndPriority(span *pb.Span, priority int32) *pb.TraceChunk

TraceChunkWithSpanAndPriority wraps a `span` and `priority` with pb.TraceChunk

func TraceChunkWithSpans

func TraceChunkWithSpans(spans []*pb.Span) *pb.TraceChunk

TraceChunkWithSpans wraps `spans` with pb.TraceChunk

func TraceChunkWithSpansAndPriority

func TraceChunkWithSpansAndPriority(spans []*pb.Span, priority int32) *pb.TraceChunk

TraceChunkWithSpansAndPriority wraps `spans` and `priority` with pb.TraceChunk

func TracerPayloadWithChunk

func TracerPayloadWithChunk(chunk *pb.TraceChunk) *pb.TracerPayload

TracerPayloadWithChunk wraps `chunk` with pb.TraceChunk

func TracerPayloadWithChunks

func TracerPayloadWithChunks(chunks []*pb.TraceChunk) *pb.TracerPayload

TracerPayloadWithChunks wraps `chunks` with pb.TraceChunk

func WithFeatures

func WithFeatures(feats string) (undo func())

WithFeatures sets the given list of comma-separated features as active and returns a function which resets the features to their previous state.

Types

type CountSummary

type CountSummary struct {
	Calls []MetricsArgs
	Sum   int64
}

CountSummary contains a summary of all Count method calls to a particular StatsClient for a particular key.

type GaugeSummary

type GaugeSummary struct {
	Calls []MetricsArgs
	Last  float64
	Max   float64
}

GaugeSummary contains a summary of all Gauge method calls to a particular StatsClient for a particular key.

type MetricsArgs

type MetricsArgs struct {
	Name  string
	Value float64
	Tags  []string
	Rate  float64
}

MetricsArgs represents arguments to a StatsClient Gauge method call.

type OTLPResourceSpan

type OTLPResourceSpan struct {
	LibName    string
	LibVersion string
	Attributes map[string]interface{}
	Spans      []*OTLPSpan
}

OTLPResourceSpan specifies the configuration for generating an OTLP ResourceSpan.

type OTLPSpan

type OTLPSpan struct {
	TraceID    [16]byte
	SpanID     [8]byte
	TraceState string
	ParentID   [8]byte
	Name       string
	Kind       pdata.SpanKind
	Start, End uint64
	Attributes map[string]interface{}
	Events     []OTLPSpanEvent
	StatusMsg  string
	StatusCode pdata.StatusCode
}

OTLPSpan defines an OTLP test span.

type OTLPSpanEvent

type OTLPSpanEvent struct {
	Timestamp  uint64                 `json:"time_unix_nano"`
	Name       string                 `json:"name"`
	Attributes map[string]interface{} `json:"attributes"`
	Dropped    uint32                 `json:"dropped_attributes_count"`
}

OTLPSpanEvent defines an OTLP test span event.

type SpanConfig

type SpanConfig struct {
	// MinTags specifies the minimum number of tags this span should have.
	MinTags int
	// MaxTags specifies the maximum number of tags this span should have.
	MaxTags int
}

SpanConfig defines the configuration for generating spans.

type TestBackoffTimer

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

TestBackoffTimer is a backoff timer that ticks on-demand.

func NewTestBackoffTimer

func NewTestBackoffTimer() *TestBackoffTimer

NewTestBackoffTimer creates a new instance of a TestBackoffTimer.

func (*TestBackoffTimer) Close

func (t *TestBackoffTimer) Close()

Close closes the ticking channel of this backoff timer.

func (*TestBackoffTimer) CurrentDelay

func (t *TestBackoffTimer) CurrentDelay() time.Duration

CurrentDelay in a TestBackoffTimer always returns 0.

func (*TestBackoffTimer) NumRetries

func (t *TestBackoffTimer) NumRetries() int

NumRetries in a TestBackoffTimer always returns 0.

func (*TestBackoffTimer) ReceiveTick

func (t *TestBackoffTimer) ReceiveTick() <-chan time.Time

ReceiveTick returns the channel where ticks are sent.

func (*TestBackoffTimer) Reset

func (t *TestBackoffTimer) Reset()

Reset in a TestBackoffTimer is a no-op.

func (*TestBackoffTimer) ScheduleRetry

func (t *TestBackoffTimer) ScheduleRetry(err error) (int, time.Duration)

ScheduleRetry on a TestBackoffTimer is a no-op.

func (*TestBackoffTimer) Stop

func (t *TestBackoffTimer) Stop()

Stop in a TestBackoffTimer is a no-op.

func (*TestBackoffTimer) TriggerTick

func (t *TestBackoffTimer) TriggerTick()

TriggerTick immediately sends a tick with the current timestamp through the ticking channel.

type TestStatsClient

type TestStatsClient struct {
	GaugeErr       error
	GaugeCalls     []MetricsArgs
	CountErr       error
	CountCalls     []MetricsArgs
	HistogramErr   error
	HistogramCalls []MetricsArgs
	TimingErr      error
	TimingCalls    []MetricsArgs
	// contains filtered or unexported fields
}

TestStatsClient is a mocked StatsClient that records all calls and replies with configurable error return values.

func (*TestStatsClient) Count

func (c *TestStatsClient) Count(name string, value int64, tags []string, rate float64) error

Count records a call to a Count operation and replies with CountErr

func (*TestStatsClient) Flush

func (c *TestStatsClient) Flush() error

Flush implements metrics.StatsClient

func (*TestStatsClient) Gauge

func (c *TestStatsClient) Gauge(name string, value float64, tags []string, rate float64) error

Gauge records a call to a Gauge operation and replies with GaugeErr

func (*TestStatsClient) GetCountSummaries

func (c *TestStatsClient) GetCountSummaries() map[string]*CountSummary

GetCountSummaries computes summaries for all names supplied as parameters to Count calls.

func (*TestStatsClient) GetGaugeSummaries

func (c *TestStatsClient) GetGaugeSummaries() map[string]*GaugeSummary

GetGaugeSummaries computes summaries for all names supplied as parameters to Gauge calls.

func (*TestStatsClient) Histogram

func (c *TestStatsClient) Histogram(name string, value float64, tags []string, rate float64) error

Histogram records a call to a Histogram operation and replies with HistogramErr

func (*TestStatsClient) Reset

func (c *TestStatsClient) Reset()

Reset resets client's internal records.

func (*TestStatsClient) Timing

func (c *TestStatsClient) Timing(name string, value time.Duration, tags []string, rate float64) error

Timing records a call to a Timing operation.

type TraceConfig

type TraceConfig struct {
	// MinSpans specifies the minimum number of spans per trace.
	MinSpans int
	// MaxSpans specifies the maximum number of spans per trace.
	MaxSpans int
	// Keep reports whether this trace should be marked as sampling priority
	// "User Keep"
	Keep bool
}

TraceConfig specifies trace generating configuration.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL