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 ¶
- Variables
- func BucketWithSpans(spans []*pb.Span) pb.ClientStatsBucket
- func FindTCPPort() (int, error)
- func FreeTCPPort(t *testing.T) int
- func GeneratePayload(n int, tc *TraceConfig, sc *SpanConfig) pb.Traces
- func GenerateSpan(c *SpanConfig) *pb.Span
- func GenerateTrace(tc *TraceConfig, sc *SpanConfig) pb.Trace
- func GetTestSpan() *pb.Span
- func GetTestTraceChunks(traceN, size int, realisticIDs bool) []*pb.TraceChunk
- func GetTestTraces(traceN, size int, realisticIDs bool) pb.Traces
- func NewOTLPSpan(s *OTLPSpan) ptrace.Span
- func NewOTLPTracesRequest(defs []OTLPResourceSpan) ptraceotlp.Request
- func RandomBucket(n int) pb.ClientStatsBucket
- func RandomSizedBytes(size int) []byte
- func RandomSpan() *pb.Span
- func RandomSpanDuration() int64
- func RandomSpanError() int32
- func RandomSpanID() uint64
- func RandomSpanMeta() map[string]string
- func RandomSpanMetrics() map[string]float64
- func RandomSpanName() string
- func RandomSpanParentID() uint64
- func RandomSpanResource() string
- func RandomSpanService() string
- func RandomSpanStart() int64
- func RandomSpanTraceID() uint64
- func RandomSpanType() string
- func RandomStringMap() map[string]string
- func RandomTrace(maxLevels, maxSpans int) pb.Trace
- func RandomTraceChunk(maxLevels, maxSpans int) *pb.TraceChunk
- func TestSpan() *pb.Span
- func TraceChunkWithSpan(span *pb.Span) *pb.TraceChunk
- func TraceChunkWithSpanAndPriority(span *pb.Span, priority int32) *pb.TraceChunk
- func TraceChunkWithSpans(spans []*pb.Span) *pb.TraceChunk
- func TraceChunkWithSpansAndPriority(spans []*pb.Span, priority int32) *pb.TraceChunk
- func TracerPayloadWithChunk(chunk *pb.TraceChunk) *pb.TracerPayload
- func TracerPayloadWithChunks(chunks []*pb.TraceChunk) *pb.TracerPayload
- func WithFeatures(feats string) (undo func())
- type CountSummary
- type GaugeSummary
- type MetricsArgs
- type OTLPResourceSpan
- type OTLPSpan
- type OTLPSpanEvent
- type SpanConfig
- type TestBackoffTimer
- func (t *TestBackoffTimer) Close()
- func (t *TestBackoffTimer) CurrentDelay() time.Duration
- func (t *TestBackoffTimer) NumRetries() int
- func (t *TestBackoffTimer) ReceiveTick() <-chan time.Time
- func (t *TestBackoffTimer) Reset()
- func (t *TestBackoffTimer) ScheduleRetry(err error) (int, time.Duration)
- func (t *TestBackoffTimer) Stop()
- func (t *TestBackoffTimer) TriggerTick()
- type TestStatsClient
- func (c *TestStatsClient) Count(name string, value int64, tags []string, rate float64) error
- func (c *TestStatsClient) Flush() error
- func (c *TestStatsClient) Gauge(name string, value float64, tags []string, rate float64) error
- func (c *TestStatsClient) GetCountSummaries() map[string]*CountSummary
- func (c *TestStatsClient) GetGaugeSummaries() map[string]*GaugeSummary
- func (c *TestStatsClient) Histogram(name string, value float64, tags []string, rate float64) error
- func (c *TestStatsClient) Reset()
- func (c *TestStatsClient) Timing(name string, value time.Duration, tags []string, rate float64) error
- type TraceConfig
Constants ¶
This section is empty.
Variables ¶
var ( // OTLPFixedSpanID specifies a fixed test SpanID. OTLPFixedSpanID = pcommon.NewSpanID([8]byte{0x24, 0x0, 0x31, 0xea, 0xd7, 0x50, 0xe5, 0xf3}) // OTLPFixedTraceID specifies a fixed test TraceID. OTLPFixedTraceID = pcommon.NewTraceID([16]byte{0x72, 0xdf, 0x52, 0xa, 0xf2, 0xbd, 0xe7, 0xa5, 0x24, 0x0, 0x31, 0xea, 0xd7, 0x50, 0xe5, 0xf3}) )
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 ¶
FindTCPPort finds a free TCP port and returns it. If it fails, error will be non-nil.
func FreeTCPPort ¶
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 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 ¶
GetTestTraces returns a []Trace that is composed by “traceN“ number of traces, each one composed by “size“ number of spans.
func NewOTLPSpan ¶
NewOTLPSpan creates a new OTLP Span with the given options.
func NewOTLPTracesRequest ¶
func NewOTLPTracesRequest(defs []OTLPResourceSpan) ptraceotlp.Request
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 ¶
RandomSizedBytes creates a random byte slice with the specified size.
func RandomSpan ¶
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 RandomSpanMeta ¶
RandomSpanMeta generates some random span metadata
func RandomSpanMetrics ¶
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 RandomStringMap ¶
RandomStringMap creates a random map with string keys and values.
func RandomTrace ¶
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 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 ¶
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 ptrace.SpanKind Start, End uint64 Attributes map[string]interface{} Events []OTLPSpanEvent StatusMsg string StatusCode ptrace.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) Flush ¶
func (c *TestStatsClient) Flush() error
Flush implements metrics.StatsClient
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 ¶
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.
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.