MCPcopy
hub / github.com/grafana/tempo / writeTracesForSearch

Function writeTracesForSearch

modules/livestore/instance_search_test.go:696–767  ·  modules/livestore/instance_search_test.go::writeTracesForSearch

writes traces to the given instance along with search data. returns ids expected to be returned from a tag search and strings expected to be returned from a tag value search nolint:revive,unparam

(t *testing.T, i *instance, spanName, tagKey, tagValue string, postFixValue bool, includeEventLink bool)

Source from the content-addressed store, hash-verified

694// be returned from a tag value search
695// nolint:revive,unparam
696func writeTracesForSearch(t *testing.T, i *instance, spanName, tagKey, tagValue string, postFixValue bool, includeEventLink bool) ([][]byte, []string, []string, []string) {
697 numTraces := 5
698 ids := make([][]byte, 0, numTraces)
699 expectedTagValues := make([]string, 0, numTraces)
700 expectedEventTagValues := make([]string, 0, numTraces)
701 expectedLinkTagValues := make([]string, 0, numTraces)
702
703 now := time.Now()
704 for j := 0; j < numTraces; j++ {
705 id := make([]byte, 16)
706 _, err := crand.Read(id)
707 require.NoError(t, err)
708
709 tv := tagValue
710 if postFixValue {
711 tv += strconv.Itoa(j)
712 }
713 kv := &v1.KeyValue{Key: tagKey, Value: &v1.AnyValue{Value: &v1.AnyValue_StringValue{StringValue: tv}}}
714 eTv := "event-" + tv
715 lTv := "link-" + tv
716 eventKv := &v1.KeyValue{Key: tagKey, Value: &v1.AnyValue{Value: &v1.AnyValue_StringValue{StringValue: eTv}}}
717 linkKv := &v1.KeyValue{Key: tagKey, Value: &v1.AnyValue{Value: &v1.AnyValue_StringValue{StringValue: lTv}}}
718 expectedTagValues = append(expectedTagValues, tv)
719 if includeEventLink {
720 expectedEventTagValues = append(expectedEventTagValues, eTv)
721 expectedLinkTagValues = append(expectedLinkTagValues, lTv)
722 }
723 ids = append(ids, id)
724
725 testTrace := test.MakeTrace(10, id)
726 // add the time
727 for _, batch := range testTrace.ResourceSpans {
728 for _, ils := range batch.ScopeSpans {
729 ils.Scope = &v1.InstrumentationScope{
730 Name: "scope-name",
731 Version: "scope-version",
732 Attributes: []*v1.KeyValue{kv},
733 }
734 for _, span := range ils.Spans {
735 span.Name = spanName
736 span.StartTimeUnixNano = uint64(now.UnixNano())
737 span.EndTimeUnixNano = uint64(now.UnixNano())
738 }
739 }
740 }
741 testTrace.ResourceSpans[0].ScopeSpans[0].Spans[0].Attributes = append(testTrace.ResourceSpans[0].ScopeSpans[0].Spans[0].Attributes, kv)
742 // add link and event
743 event := &trace_v1.Span_Event{Name: "event-name", Attributes: []*v1.KeyValue{eventKv}}
744 link := &trace_v1.Span_Link{TraceId: id, SpanId: id, Attributes: []*v1.KeyValue{linkKv}}
745 testTrace.ResourceSpans[0].ScopeSpans[0].Spans[0].Events = append(testTrace.ResourceSpans[0].ScopeSpans[0].Spans[0].Events, event)
746 testTrace.ResourceSpans[0].ScopeSpans[0].Spans[0].Links = append(testTrace.ResourceSpans[0].ScopeSpans[0].Spans[0].Links, link)
747
748 trace.SortTrace(testTrace)
749
750 traceBytes, err := testTrace.Marshal()
751 require.NoError(t, err)
752
753 // Create a push request for livestore

Calls 8

MakeTraceFunction · 0.92
SortTraceFunction · 0.92
cutIdleTracesMethod · 0.80
NowMethod · 0.65
ReadMethod · 0.65
MarshalMethod · 0.65
pushBytesMethod · 0.65
ContextMethod · 0.65

Tested by

no test coverage detected