Skip to content

Commit c3153b5

Browse files
WVerlaekona-agent
andcommitted
feat: add leeway.package.name attribute to phase and test spans
Co-authored-by: Ona <no-reply@ona.com>
1 parent f19334c commit c3153b5

4 files changed

Lines changed: 15 additions & 10 deletions

File tree

pkg/leeway/build.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3170,7 +3170,7 @@ func runGoTestWithTracing(buildctx *buildContext, p *Package, env []string, cwd,
31703170
}
31713171

31723172
// Create tracer and parse output
3173-
goTracer := NewGoTestTracer(tracer, parentCtx)
3173+
goTracer := NewGoTestTracer(tracer, parentCtx, p.FullName())
31743174
outputWriter := &reporterStream{R: buildctx.Reporter, P: p, IsErr: false}
31753175

31763176
if err := goTracer.parseJSONOutput(stdout, outputWriter); err != nil {

pkg/leeway/gotest_trace.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,21 @@ type testSpanData struct {
3535

3636
// GoTestTracer handles parsing Go test JSON output and creating OpenTelemetry spans
3737
type GoTestTracer struct {
38-
tracer trace.Tracer
39-
parentCtx context.Context
38+
tracer trace.Tracer
39+
parentCtx context.Context
40+
leewayPkgName string
4041

4142
mu sync.Mutex
4243
spans map[string]*testSpanData // key: "package/testname" or just "package" for package-level
4344
}
4445

4546
// NewGoTestTracer creates a new GoTestTracer that will create spans as children of the given context
46-
func NewGoTestTracer(tracer trace.Tracer, parentCtx context.Context) *GoTestTracer {
47+
func NewGoTestTracer(tracer trace.Tracer, parentCtx context.Context, leewayPkgName string) *GoTestTracer {
4748
return &GoTestTracer{
48-
tracer: tracer,
49-
parentCtx: parentCtx,
50-
spans: make(map[string]*testSpanData),
49+
tracer: tracer,
50+
parentCtx: parentCtx,
51+
leewayPkgName: leewayPkgName,
52+
spans: make(map[string]*testSpanData),
5153
}
5254
}
5355

@@ -163,6 +165,7 @@ func (t *GoTestTracer) handleRun(event *goTestEvent) {
163165
)
164166

165167
span.SetAttributes(
168+
attribute.String("leeway.package.name", t.leewayPkgName),
166169
attribute.String("test.name", event.Test),
167170
attribute.String("test.package", event.Package),
168171
attribute.String("test.framework", "go"),
@@ -193,6 +196,7 @@ func (t *GoTestTracer) handlePackageStart(event *goTestEvent) {
193196
)
194197

195198
span.SetAttributes(
199+
attribute.String("leeway.package.name", t.leewayPkgName),
196200
attribute.String("test.package", event.Package),
197201
attribute.String("test.framework", "go"),
198202
attribute.String("test.scope", "package"),

pkg/leeway/gotest_trace_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestGoTestTracer_ParseJSONOutput(t *testing.T) {
2424
ctx, parentSpan := tracer.Start(context.Background(), "parent")
2525
defer parentSpan.End()
2626

27-
goTracer := NewGoTestTracer(tracer, ctx)
27+
goTracer := NewGoTestTracer(tracer, ctx, "test:pkg")
2828

2929
// Simulate go test -json output
3030
jsonOutput := `{"Time":"2024-01-01T10:00:00Z","Action":"start","Package":"example.com/pkg"}
@@ -123,7 +123,7 @@ func TestGoTestTracer_ParallelTests(t *testing.T) {
123123
ctx, parentSpan := tracer.Start(context.Background(), "parent")
124124
defer parentSpan.End()
125125

126-
goTracer := NewGoTestTracer(tracer, ctx)
126+
goTracer := NewGoTestTracer(tracer, ctx, "test:pkg")
127127

128128
// Simulate parallel test execution with pause/cont events
129129
jsonOutput := `{"Time":"2024-01-01T10:00:00Z","Action":"run","Package":"example.com/pkg","Test":"TestParallel"}
@@ -167,7 +167,7 @@ func TestGoTestTracer_ParallelTests(t *testing.T) {
167167

168168
func TestGoTestTracer_NoTracer(t *testing.T) {
169169
// Test that nil tracer doesn't panic
170-
goTracer := NewGoTestTracer(nil, context.Background())
170+
goTracer := NewGoTestTracer(nil, context.Background(), "test:pkg")
171171

172172
jsonOutput := `{"Time":"2024-01-01T10:00:00Z","Action":"run","Package":"example.com/pkg","Test":"TestOne"}
173173
{"Time":"2024-01-01T10:00:00.100Z","Action":"pass","Package":"example.com/pkg","Test":"TestOne","Elapsed":0.1}

pkg/leeway/reporter.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -949,6 +949,7 @@ func (r *OTelReporter) PackageBuildPhaseStarted(pkg *Package, phase PackageBuild
949949

950950
// Add phase attributes
951951
span.SetAttributes(
952+
attribute.String("leeway.package.name", pkgName),
952953
attribute.String("leeway.phase.name", string(phase)),
953954
)
954955

0 commit comments

Comments
 (0)