Skip to content

Commit 542d785

Browse files
committed
Update more tests
1 parent 99ae240 commit 542d785

File tree

1 file changed

+77
-40
lines changed

1 file changed

+77
-40
lines changed

projects/Test/SequentialIntegration/TestActivitySource.cs

Lines changed: 77 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,14 @@ void AssertIntTagGreaterThanZero(Activity activity, string name)
7676
}
7777

7878
[Theory]
79-
[InlineData(true)]
80-
[InlineData(false)]
81-
public async Task TestPublisherAndConsumerActivityTags(bool useRoutingKeyAsOperationName)
79+
[InlineData(true, true)]
80+
[InlineData(true, false)]
81+
[InlineData(false, true)]
82+
[InlineData(false, false)]
83+
public async Task TestPublisherAndConsumerActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
8284
{
8385
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
86+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
8487
var _activities = new List<Activity>();
8588
using ActivityListener activityListener = StartActivityListener(_activities);
8689
await Task.Delay(500);
@@ -106,15 +109,18 @@ public async Task TestPublisherAndConsumerActivityTags(bool useRoutingKeyAsOpera
106109

107110
await _channel.BasicCancelAsync(consumerTag);
108111
await Task.Delay(500);
109-
AssertActivityData(useRoutingKeyAsOperationName, queueName, _activities, true);
112+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queueName, _activities, true);
110113
}
111114

112115
[Theory]
113-
[InlineData(true)]
114-
[InlineData(false)]
115-
public async Task TestPublisherWithCachedStringsAndConsumerActivityTags(bool useRoutingKeyAsOperationName)
116+
[InlineData(true, true)]
117+
[InlineData(true, false)]
118+
[InlineData(false, true)]
119+
[InlineData(false, false)]
120+
public async Task TestPublisherWithCachedStringsAndConsumerActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
116121
{
117122
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
123+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
118124
var _activities = new List<Activity>();
119125
using ActivityListener activityListener = StartActivityListener(_activities);
120126
await Task.Delay(500);
@@ -142,15 +148,18 @@ public async Task TestPublisherWithCachedStringsAndConsumerActivityTags(bool use
142148

143149
await _channel.BasicCancelAsync(consumerTag);
144150
await Task.Delay(500);
145-
AssertActivityData(useRoutingKeyAsOperationName, queueName, _activities, true);
151+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queueName, _activities, true);
146152
}
147153

148154
[Theory]
149-
[InlineData(true)]
150-
[InlineData(false)]
151-
public async Task TestPublisherWithPublicationAddressAndConsumerActivityTags(bool useRoutingKeyAsOperationName)
155+
[InlineData(true, true)]
156+
[InlineData(true, false)]
157+
[InlineData(false, true)]
158+
[InlineData(false, false)]
159+
public async Task TestPublisherWithPublicationAddressAndConsumerActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
152160
{
153161
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
162+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
154163
var _activities = new List<Activity>();
155164
using ActivityListener activityListener = StartActivityListener(_activities);
156165
await Task.Delay(500);
@@ -177,15 +186,18 @@ public async Task TestPublisherWithPublicationAddressAndConsumerActivityTags(boo
177186

178187
await _channel.BasicCancelAsync(consumerTag);
179188
await Task.Delay(500);
180-
AssertActivityData(useRoutingKeyAsOperationName, queueName, _activities, true);
189+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queueName, _activities, true);
181190
}
182191

183192
[Theory]
184-
[InlineData(true)]
185-
[InlineData(false)]
186-
public async Task TestPublisherAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName)
193+
[InlineData(true, true)]
194+
[InlineData(true, false)]
195+
[InlineData(false, true)]
196+
[InlineData(false, false)]
197+
public async Task TestPublisherAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
187198
{
188199
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
200+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
189201
var activities = new List<Activity>();
190202
using ActivityListener activityListener = StartActivityListener(activities);
191203
await Task.Delay(500);
@@ -212,15 +224,18 @@ public async Task TestPublisherAndConsumerActivityTagsAsync(bool useRoutingKeyAs
212224

213225
await _channel.BasicCancelAsync(consumerTag);
214226
await Task.Delay(500);
215-
AssertActivityData(useRoutingKeyAsOperationName, queueName, activities, true);
227+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queueName, activities, true);
216228
}
217229

218230
[Theory]
219-
[InlineData(true)]
220-
[InlineData(false)]
221-
public async Task TestPublisherWithCachedStringsAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName)
231+
[InlineData(true, true)]
232+
[InlineData(true, false)]
233+
[InlineData(false, true)]
234+
[InlineData(false, false)]
235+
public async Task TestPublisherWithCachedStringsAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
222236
{
223237
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
238+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
224239
var activities = new List<Activity>();
225240
using ActivityListener activityListener = StartActivityListener(activities);
226241
await Task.Delay(500);
@@ -249,15 +264,18 @@ public async Task TestPublisherWithCachedStringsAndConsumerActivityTagsAsync(boo
249264

250265
await _channel.BasicCancelAsync(consumerTag);
251266
await Task.Delay(500);
252-
AssertActivityData(useRoutingKeyAsOperationName, queueName, activities, true);
267+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queueName, activities, true);
253268
}
254269

255270
[Theory]
256-
[InlineData(true)]
257-
[InlineData(false)]
258-
public async Task TestPublisherWithPublicationAddressAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName)
271+
[InlineData(true, true)]
272+
[InlineData(true, false)]
273+
[InlineData(false, true)]
274+
[InlineData(false, false)]
275+
public async Task TestPublisherWithPublicationAddressAndConsumerActivityTagsAsync(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
259276
{
260277
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
278+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
261279
var activities = new List<Activity>();
262280
using ActivityListener activityListener = StartActivityListener(activities);
263281
await Task.Delay(500);
@@ -285,15 +303,18 @@ public async Task TestPublisherWithPublicationAddressAndConsumerActivityTagsAsyn
285303

286304
await _channel.BasicCancelAsync(consumerTag);
287305
await Task.Delay(500);
288-
AssertActivityData(useRoutingKeyAsOperationName, queueName, activities, true);
306+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queueName, activities, true);
289307
}
290308

291309
[Theory]
292-
[InlineData(true)]
293-
[InlineData(false)]
294-
public async Task TestPublisherAndBasicGetActivityTags(bool useRoutingKeyAsOperationName)
310+
[InlineData(true, true)]
311+
[InlineData(true, false)]
312+
[InlineData(false, true)]
313+
[InlineData(false, false)]
314+
public async Task TestPublisherAndBasicGetActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
295315
{
296316
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
317+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
297318
var activities = new List<Activity>();
298319
using ActivityListener activityListener = StartActivityListener(activities);
299320
await Task.Delay(500);
@@ -311,7 +332,7 @@ public async Task TestPublisherAndBasicGetActivityTags(bool useRoutingKeyAsOpera
311332
ok = await _channel.QueueDeclarePassiveAsync(queue);
312333
Assert.Equal(0u, ok.MessageCount);
313334
await Task.Delay(500);
314-
AssertActivityData(useRoutingKeyAsOperationName, queue, activities, false);
335+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queue, activities, false);
315336
}
316337
finally
317338
{
@@ -320,11 +341,14 @@ public async Task TestPublisherAndBasicGetActivityTags(bool useRoutingKeyAsOpera
320341
}
321342

322343
[Theory]
323-
[InlineData(true)]
324-
[InlineData(false)]
325-
public async Task TestPublisherWithCachedStringsAndBasicGetActivityTags(bool useRoutingKeyAsOperationName)
344+
[InlineData(true, true)]
345+
[InlineData(true, false)]
346+
[InlineData(false, true)]
347+
[InlineData(false, false)]
348+
public async Task TestPublisherWithCachedStringsAndBasicGetActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
326349
{
327350
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
351+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
328352
var activities = new List<Activity>();
329353
using ActivityListener activityListener = StartActivityListener(activities);
330354
await Task.Delay(500);
@@ -344,7 +368,7 @@ public async Task TestPublisherWithCachedStringsAndBasicGetActivityTags(bool use
344368
ok = await _channel.QueueDeclarePassiveAsync(queue);
345369
Assert.Equal(0u, ok.MessageCount);
346370
await Task.Delay(500);
347-
AssertActivityData(useRoutingKeyAsOperationName, queue, activities, false);
371+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queue, activities, false);
348372
}
349373
finally
350374
{
@@ -353,11 +377,14 @@ public async Task TestPublisherWithCachedStringsAndBasicGetActivityTags(bool use
353377
}
354378

355379
[Theory]
356-
[InlineData(true)]
357-
[InlineData(false)]
358-
public async Task TestPublisherWithPublicationAddressAndBasicGetActivityTags(bool useRoutingKeyAsOperationName)
380+
[InlineData(true, true)]
381+
[InlineData(true, false)]
382+
[InlineData(false, true)]
383+
[InlineData(false, false)]
384+
public async Task TestPublisherWithPublicationAddressAndBasicGetActivityTags(bool useRoutingKeyAsOperationName, bool useParentChildLinking)
359385
{
360386
RabbitMQActivitySource.UseRoutingKeyAsOperationName = useRoutingKeyAsOperationName;
387+
RabbitMQActivitySource.LinkType = useParentChildLinking ? OpenTelemetryLinkType.AlwaysParentChild : OpenTelemetryLinkType.AlwaysLink;
361388
var activities = new List<Activity>();
362389
using ActivityListener activityListener = StartActivityListener(activities);
363390
await Task.Delay(500);
@@ -377,7 +404,7 @@ public async Task TestPublisherWithPublicationAddressAndBasicGetActivityTags(boo
377404
ok = await _channel.QueueDeclarePassiveAsync(queue);
378405
Assert.Equal(0u, ok.MessageCount);
379406
await Task.Delay(500);
380-
AssertActivityData(useRoutingKeyAsOperationName, queue, activities, false);
407+
AssertActivityData(useRoutingKeyAsOperationName, useParentChildLinking, queue, activities, false);
381408
}
382409
finally
383410
{
@@ -399,7 +426,7 @@ private static ActivityListener StartActivityListener(List<Activity> activities)
399426
return activityListener;
400427
}
401428

402-
private void AssertActivityData(bool useRoutingKeyAsOperationName, string queueName,
429+
private void AssertActivityData(bool useRoutingKeyAsOperationName, bool useParentChildLinking, string queueName,
403430
List<Activity> activityList, bool isDeliver = false)
404431
{
405432
string childName = isDeliver ? "deliver" : "fetch";
@@ -422,11 +449,21 @@ private void AssertActivityData(bool useRoutingKeyAsOperationName, string queueN
422449
x.GetTagItem(RabbitMQActivitySource.MessagingDestinationRoutingKey) is string routingKeyTag &&
423450
routingKeyTag == $"{queueName}");
424451
Activity receiveActivity = activities.Single(x =>
425-
x.OperationName == (useRoutingKeyAsOperationName ? $"{childName} {queueName}" : childName) &&
426-
x.Links.First().Context.TraceId == sendActivity.TraceId);
452+
x.OperationName == (useRoutingKeyAsOperationName ? $"{childName} {queueName}" : childName));
427453
Assert.Equal(ActivityKind.Producer, sendActivity.Kind);
428454
Assert.Equal(ActivityKind.Consumer, receiveActivity.Kind);
429-
Assert.Null(receiveActivity.ParentId);
455+
if (useParentChildLinking)
456+
{
457+
Assert.Empty(receiveActivity.Links);
458+
Assert.Equal(sendActivity.Id, receiveActivity.ParentId);
459+
Assert.Equal(sendActivity.TraceId, receiveActivity.TraceId);
460+
}
461+
else
462+
{
463+
Assert.Equal(sendActivity.TraceId, receiveActivity.Links.Single().Context.TraceId);
464+
Assert.Null(receiveActivity.ParentId);
465+
Assert.NotEqual(sendActivity.TraceId, receiveActivity.TraceId);
466+
}
430467
AssertStringTagNotNullOrEmpty(sendActivity, "network.peer.address");
431468
AssertStringTagNotNullOrEmpty(sendActivity, "network.local.address");
432469
AssertStringTagNotNullOrEmpty(sendActivity, "server.address");

0 commit comments

Comments
 (0)