@@ -21,17 +21,19 @@ type TracesSink struct {
21
21
nonMutatingConsumer
22
22
mu sync.Mutex
23
23
traces []ptrace.Traces
24
+ contexts []context.Context
24
25
spanCount int
25
26
}
26
27
27
28
var _ consumer.Traces = (* TracesSink )(nil )
28
29
29
30
// ConsumeTraces stores traces to this sink.
30
- func (ste * TracesSink ) ConsumeTraces (_ context.Context , td ptrace.Traces ) error {
31
+ func (ste * TracesSink ) ConsumeTraces (ctx context.Context , td ptrace.Traces ) error {
31
32
ste .mu .Lock ()
32
33
defer ste .mu .Unlock ()
33
34
34
35
ste .traces = append (ste .traces , td )
36
+ ste .contexts = append (ste .contexts , ctx )
35
37
ste .spanCount += td .SpanCount ()
36
38
37
39
return nil
@@ -47,6 +49,16 @@ func (ste *TracesSink) AllTraces() []ptrace.Traces {
47
49
return copyTraces
48
50
}
49
51
52
+ // Contexts returns the contexts stored by this sink since last Reset.
53
+ func (ste * TracesSink ) Contexts () []context.Context {
54
+ ste .mu .Lock ()
55
+ defer ste .mu .Unlock ()
56
+
57
+ copyContexts := make ([]context.Context , len (ste .contexts ))
58
+ copy (copyContexts , ste .contexts )
59
+ return copyContexts
60
+ }
61
+
50
62
// SpanCount returns the number of spans sent to this sink.
51
63
func (ste * TracesSink ) SpanCount () int {
52
64
ste .mu .Lock ()
@@ -60,6 +72,7 @@ func (ste *TracesSink) Reset() {
60
72
defer ste .mu .Unlock ()
61
73
62
74
ste .traces = nil
75
+ ste .contexts = nil
63
76
ste .spanCount = 0
64
77
}
65
78
@@ -69,17 +82,19 @@ type MetricsSink struct {
69
82
nonMutatingConsumer
70
83
mu sync.Mutex
71
84
metrics []pmetric.Metrics
85
+ contexts []context.Context
72
86
dataPointCount int
73
87
}
74
88
75
89
var _ consumer.Metrics = (* MetricsSink )(nil )
76
90
77
91
// ConsumeMetrics stores metrics to this sink.
78
- func (sme * MetricsSink ) ConsumeMetrics (_ context.Context , md pmetric.Metrics ) error {
92
+ func (sme * MetricsSink ) ConsumeMetrics (ctx context.Context , md pmetric.Metrics ) error {
79
93
sme .mu .Lock ()
80
94
defer sme .mu .Unlock ()
81
95
82
96
sme .metrics = append (sme .metrics , md )
97
+ sme .contexts = append (sme .contexts , ctx )
83
98
sme .dataPointCount += md .DataPointCount ()
84
99
85
100
return nil
@@ -95,6 +110,16 @@ func (sme *MetricsSink) AllMetrics() []pmetric.Metrics {
95
110
return copyMetrics
96
111
}
97
112
113
+ // Contexts returns the contexts stored by this sink since last Reset.
114
+ func (sme * MetricsSink ) Contexts () []context.Context {
115
+ sme .mu .Lock ()
116
+ defer sme .mu .Unlock ()
117
+
118
+ copyContexts := make ([]context.Context , len (sme .contexts ))
119
+ copy (copyContexts , sme .contexts )
120
+ return copyContexts
121
+ }
122
+
98
123
// DataPointCount returns the number of metrics stored by this sink since last Reset.
99
124
func (sme * MetricsSink ) DataPointCount () int {
100
125
sme .mu .Lock ()
@@ -108,6 +133,7 @@ func (sme *MetricsSink) Reset() {
108
133
defer sme .mu .Unlock ()
109
134
110
135
sme .metrics = nil
136
+ sme .contexts = nil
111
137
sme .dataPointCount = 0
112
138
}
113
139
@@ -117,19 +143,20 @@ type LogsSink struct {
117
143
nonMutatingConsumer
118
144
mu sync.Mutex
119
145
logs []plog.Logs
146
+ contexts []context.Context
120
147
logRecordCount int
121
148
}
122
149
123
150
var _ consumer.Logs = (* LogsSink )(nil )
124
151
125
152
// ConsumeLogs stores logs to this sink.
126
- func (sle * LogsSink ) ConsumeLogs (_ context.Context , ld plog.Logs ) error {
153
+ func (sle * LogsSink ) ConsumeLogs (ctx context.Context , ld plog.Logs ) error {
127
154
sle .mu .Lock ()
128
155
defer sle .mu .Unlock ()
129
156
130
157
sle .logs = append (sle .logs , ld )
131
158
sle .logRecordCount += ld .LogRecordCount ()
132
-
159
+ sle . contexts = append ( sle . contexts , ctx )
133
160
return nil
134
161
}
135
162
@@ -156,26 +183,39 @@ func (sle *LogsSink) Reset() {
156
183
defer sle .mu .Unlock ()
157
184
158
185
sle .logs = nil
186
+ sle .contexts = nil
159
187
sle .logRecordCount = 0
160
188
}
161
189
190
+ // Contexts returns the contexts stored by this sink since last Reset.
191
+ func (sle * LogsSink ) Contexts () []context.Context {
192
+ sle .mu .Lock ()
193
+ defer sle .mu .Unlock ()
194
+
195
+ copyContexts := make ([]context.Context , len (sle .contexts ))
196
+ copy (copyContexts , sle .contexts )
197
+ return copyContexts
198
+ }
199
+
162
200
// ProfilesSink is a xconsumer.Profiles that acts like a sink that
163
201
// stores all profiles and allows querying them for testing.
164
202
type ProfilesSink struct {
165
203
nonMutatingConsumer
166
204
mu sync.Mutex
167
205
profiles []pprofile.Profiles
206
+ contexts []context.Context
168
207
sampleCount int
169
208
}
170
209
171
210
var _ xconsumer.Profiles = (* ProfilesSink )(nil )
172
211
173
212
// ConsumeProfiles stores profiles to this sink.
174
- func (ste * ProfilesSink ) ConsumeProfiles (_ context.Context , td pprofile.Profiles ) error {
213
+ func (ste * ProfilesSink ) ConsumeProfiles (ctx context.Context , td pprofile.Profiles ) error {
175
214
ste .mu .Lock ()
176
215
defer ste .mu .Unlock ()
177
216
178
217
ste .profiles = append (ste .profiles , td )
218
+ ste .contexts = append (ste .contexts , ctx )
179
219
ste .sampleCount += td .SampleCount ()
180
220
181
221
return nil
@@ -204,5 +244,16 @@ func (ste *ProfilesSink) Reset() {
204
244
defer ste .mu .Unlock ()
205
245
206
246
ste .profiles = nil
247
+ ste .contexts = nil
207
248
ste .sampleCount = 0
208
249
}
250
+
251
+ // Contexts returns the contexts stored by this sink since last Reset.
252
+ func (ste * ProfilesSink ) Contexts () []context.Context {
253
+ ste .mu .Lock ()
254
+ defer ste .mu .Unlock ()
255
+
256
+ copyContexts := make ([]context.Context , len (ste .contexts ))
257
+ copy (copyContexts , ste .contexts )
258
+ return copyContexts
259
+ }
0 commit comments