Skip to content

Commit 8bdc001

Browse files
Manik2708amol-verma-allen
authored andcommitted
[ES][v2] Implement WriteTraces for v2 (jaegertracing#7020)
## Which problem is this PR solving? - Fixes a part of: jaegertracing#6458 ## Description of the changes - Implement the `WriteTraces` method for v2 ## How was this change tested? - Unit Tests ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `npm run lint` and `npm run test` Signed-off-by: Manik2708 <[email protected]> Signed-off-by: amol-verma-allen <[email protected]>
1 parent 995e098 commit 8bdc001

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Copyright (c) 2025 The Jaeger Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package tracestore
5+
6+
import (
7+
"context"
8+
9+
"go.opentelemetry.io/collector/pdata/ptrace"
10+
11+
"github.com/jaegertracing/jaeger-idl/model/v1"
12+
cfg "github.com/jaegertracing/jaeger/internal/storage/elasticsearch/config"
13+
"github.com/jaegertracing/jaeger/internal/storage/v1/elasticsearch/spanstore"
14+
)
15+
16+
type TraceWriter struct {
17+
spanWriter spanstore.CoreSpanWriter
18+
}
19+
20+
// NewTraceWriter returns the TraceWriter for use
21+
func NewTraceWriter(p spanstore.SpanWriterParams) *TraceWriter {
22+
return &TraceWriter{
23+
spanWriter: spanstore.NewSpanWriter(p),
24+
}
25+
}
26+
27+
// WriteTraces convert the traces to ES Span model and write into the database
28+
func (t *TraceWriter) WriteTraces(_ context.Context, td ptrace.Traces) error {
29+
dbSpans := ToDBModel(td)
30+
for i := 0; i < len(dbSpans); i++ {
31+
span := &dbSpans[i]
32+
t.spanWriter.WriteSpan(model.EpochMicrosecondsAsTime(span.StartTime), span)
33+
}
34+
return nil
35+
}
36+
37+
func (t *TraceWriter) CreateTemplates(spanTemplate, serviceTemplate string, indexPrefix cfg.IndexPrefix) error {
38+
return t.spanWriter.CreateTemplates(spanTemplate, serviceTemplate, indexPrefix)
39+
}
40+
41+
func (t *TraceWriter) Close() error {
42+
return t.spanWriter.Close()
43+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// Copyright (c) 2025 The Jaeger Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package tracestore
5+
6+
import (
7+
"context"
8+
"testing"
9+
10+
"github.com/stretchr/testify/assert"
11+
"github.com/stretchr/testify/require"
12+
"go.opentelemetry.io/collector/pdata/ptrace"
13+
14+
"github.com/jaegertracing/jaeger-idl/model/v1"
15+
cfg "github.com/jaegertracing/jaeger/internal/storage/elasticsearch/config"
16+
"github.com/jaegertracing/jaeger/internal/storage/v1/elasticsearch/spanstore"
17+
"github.com/jaegertracing/jaeger/internal/storage/v1/elasticsearch/spanstore/mocks"
18+
)
19+
20+
func TestTraceWriter_WriteTraces(t *testing.T) {
21+
coreWriter := &mocks.CoreSpanWriter{}
22+
td := ptrace.NewTraces()
23+
resourceSpans := td.ResourceSpans().AppendEmpty()
24+
resourceSpans.Resource().Attributes().PutStr("service.name", "testing-service")
25+
span := resourceSpans.ScopeSpans().AppendEmpty().Spans().AppendEmpty()
26+
span.SetName("op-1")
27+
dbSpan := ToDBModel(td)
28+
writer := TraceWriter{spanWriter: coreWriter}
29+
coreWriter.On("WriteSpan", model.EpochMicrosecondsAsTime(dbSpan[0].StartTime), &dbSpan[0])
30+
err := writer.WriteTraces(context.Background(), td)
31+
require.NoError(t, err)
32+
}
33+
34+
func TestTraceWriter_Close(t *testing.T) {
35+
coreWriter := &mocks.CoreSpanWriter{}
36+
coreWriter.On("Close").Return(nil)
37+
writer := TraceWriter{spanWriter: coreWriter}
38+
err := writer.Close()
39+
require.NoError(t, err)
40+
}
41+
42+
func TestTraceWriter_CreateTemplates(t *testing.T) {
43+
coreWriter := &mocks.CoreSpanWriter{}
44+
coreWriter.On("CreateTemplates", "testing-template", "testing-template", cfg.IndexPrefix("testing")).Return(nil)
45+
writer := TraceWriter{spanWriter: coreWriter}
46+
err := writer.CreateTemplates("testing-template", "testing-template", "testing")
47+
require.NoError(t, err)
48+
}
49+
50+
func Test_NewTraceWriter(t *testing.T) {
51+
params := spanstore.SpanWriterParams{}
52+
writer := NewTraceWriter(params)
53+
assert.NotNil(t, writer)
54+
}

0 commit comments

Comments
 (0)