@@ -66,6 +66,8 @@ var e2eTracingTests = []backendTest{
66
66
wf := func (ctx workflow.Context ) error {
67
67
workflow .ScheduleTimer (ctx , time .Millisecond * 20 ).Get (ctx )
68
68
69
+ workflow .Sleep (ctx , time .Millisecond * 10 )
70
+
69
71
return nil
70
72
}
71
73
register (t , ctx , w , []interface {}{wf }, nil )
@@ -88,13 +90,64 @@ var e2eTracingTests = []backendTest{
88
90
require .InEpsilon (t , time .Duration (20 * time .Millisecond ),
89
91
timerSpan .EndTime ().Sub (timerSpan .StartTime ())/ time .Millisecond ,
90
92
float64 (5 * time .Millisecond ))
93
+ require .Equal (t , "Timer" , timerSpan .Name ())
94
+
95
+ sleepSpan := findSpan (spans , func (span trace.ReadOnlySpan ) bool {
96
+ return strings .Contains (span .Name (), "Timer: Sleep" )
97
+ })
98
+ require .NotNil (t , sleepSpan )
91
99
92
100
require .Equal (t ,
93
101
workflow1Span .SpanContext ().SpanID ().String (),
94
102
timerSpan .Parent ().SpanID ().String (),
95
103
)
96
104
},
97
105
},
106
+ {
107
+ name : "Tracing/TimersWithinCustomSpans" ,
108
+ f : func (t * testing.T , ctx context.Context , c * client.Client , w * worker.Worker , b TestBackend ) {
109
+ exporter := setupTracing (b )
110
+
111
+ wf := func (ctx workflow.Context ) error {
112
+ ctx , span := workflow .Tracer (ctx ).Start (ctx , "custom-span" )
113
+ defer span .End ()
114
+
115
+ workflow .Sleep (ctx , time .Millisecond * 10 )
116
+
117
+ return nil
118
+ }
119
+ register (t , ctx , w , []interface {}{wf }, nil )
120
+
121
+ instance := runWorkflow (t , ctx , c , wf )
122
+ _ , err := client .GetWorkflowResult [any ](ctx , c , instance , time .Second * 5 )
123
+ require .NoError (t , err )
124
+
125
+ spans := exporter .GetSpans ().Snapshots ()
126
+
127
+ workflow1Span := findSpan (spans , func (span trace.ReadOnlySpan ) bool {
128
+ return strings .Contains (span .Name (), "Workflow: 1" )
129
+ })
130
+ require .NotNil (t , workflow1Span )
131
+
132
+ customSpan := findSpan (spans , func (span trace.ReadOnlySpan ) bool {
133
+ return strings .Contains (span .Name (), "custom-span" )
134
+ })
135
+ require .NotNil (t , workflow1Span )
136
+ require .Equal (t ,
137
+ workflow1Span .SpanContext ().SpanID ().String (),
138
+ customSpan .Parent ().SpanID ().String (),
139
+ )
140
+
141
+ sleepSpan := findSpan (spans , func (span trace.ReadOnlySpan ) bool {
142
+ return strings .Contains (span .Name (), "Timer: Sleep" )
143
+ })
144
+ require .NotNil (t , sleepSpan )
145
+ require .Equal (t ,
146
+ customSpan .SpanContext ().SpanID ().String (),
147
+ sleepSpan .Parent ().SpanID ().String (),
148
+ )
149
+ },
150
+ },
98
151
{
99
152
name : "Tracing/SubWorkflowsHaveSpansWithCorrectParent" ,
100
153
f : func (t * testing.T , ctx context.Context , c * client.Client , w * worker.Worker , b TestBackend ) {
@@ -133,19 +186,14 @@ var e2eTracingTests = []backendTest{
133
186
})
134
187
require .NotNil (t , workflow1Span )
135
188
136
- createSWFSpan := findSpan (spans , func (span trace.ReadOnlySpan ) bool {
137
- return strings .Contains (span .Name (), "CreateSubworkflowInstance: swf" )
138
- })
139
- require .NotNil (t , createSWFSpan )
140
-
141
- workflow2Span := findSpan (spans , func (span trace.ReadOnlySpan ) bool {
189
+ swfSpan := findSpan (spans , func (span trace.ReadOnlySpan ) bool {
142
190
return strings .Contains (span .Name (), "Workflow: swf" )
143
191
})
144
192
require .NotNil (t , workflow1Span )
145
193
146
194
require .Equal (t ,
147
- createSWFSpan .SpanContext ().SpanID ().String (),
148
- workflow2Span .Parent ().SpanID ().String (),
195
+ workflow1Span .SpanContext ().SpanID ().String (),
196
+ swfSpan .Parent ().SpanID ().String (),
149
197
)
150
198
},
151
199
},
0 commit comments