Skip to content

Commit 102e652

Browse files
committed
Convert to new style of acceptance tests
1 parent cf4937c commit 102e652

File tree

2 files changed

+40
-50
lines changed

2 files changed

+40
-50
lines changed

src/NServiceBus.AcceptanceTests/Core/OpenTelemetry/When_incoming_message_handled.cs

Lines changed: 32 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,25 @@ public class When_incoming_message_handled : NServiceBusAcceptanceTest
1414
{
1515
static readonly string HandlerTimeMetricName = "nservicebus.messaging.handler_time";
1616
static readonly string CriticalTimeMetricName = "nservicebus.messaging.critical_time";
17+
const int NumberOfMessages = 5;
1718

1819
[Test]
1920
public async Task Should_record_critical_time()
2021
{
21-
using var metricsListener = await WhenMessagesHandled(() => new MyMessage());
22-
metricsListener.AssertMetric(CriticalTimeMetricName, 5);
22+
using var metricsListener = TestingMetricListener.SetupNServiceBusMetricsListener();
23+
24+
await WhenMessagesHandled(() => new MyMessage());
25+
metricsListener.AssertMetric(CriticalTimeMetricName, NumberOfMessages);
2326
AssertMandatoryTags(metricsListener, CriticalTimeMetricName, typeof(MyMessage));
2427
}
2528

2629
[Test]
2730
public async Task Should_record_success_handling_time()
2831
{
29-
using var metricsListener = await WhenMessagesHandled(() => new MyMessage());
30-
metricsListener.AssertMetric(HandlerTimeMetricName, 5);
32+
using var metricsListener = TestingMetricListener.SetupNServiceBusMetricsListener();
33+
34+
await WhenMessagesHandled(() => new MyMessage());
35+
metricsListener.AssertMetric(HandlerTimeMetricName, NumberOfMessages);
3136
AssertMandatoryTags(metricsListener, HandlerTimeMetricName, typeof(MyMessage));
3237
var handlerType = metricsListener.AssertTagKeyExists(HandlerTimeMetricName, "nservicebus.message_handler_type");
3338
Assert.That(handlerType, Is.EqualTo(typeof(MyMessageHandler).FullName));
@@ -38,8 +43,10 @@ public async Task Should_record_success_handling_time()
3843
[Test]
3944
public async Task Should_record_failure_handling_time()
4045
{
41-
using var metricsListener = await WhenMessagesHandled(() => new MyExceptionalMessage());
42-
metricsListener.AssertMetric(HandlerTimeMetricName, 5);
46+
using var metricsListener = TestingMetricListener.SetupNServiceBusMetricsListener();
47+
48+
await WhenMessagesHandled(() => new MyExceptionalMessage());
49+
metricsListener.AssertMetric(HandlerTimeMetricName, NumberOfMessages);
4350
AssertMandatoryTags(metricsListener, HandlerTimeMetricName, typeof(MyExceptionalMessage));
4451
var handlerType = metricsListener.AssertTagKeyExists(HandlerTimeMetricName, "nservicebus.message_handler_type");
4552
Assert.That(handlerType, Is.EqualTo(typeof(MyExceptionalHandler).FullName));
@@ -52,46 +59,24 @@ public async Task Should_record_failure_handling_time()
5259
[Test]
5360
public async Task Should_not_record_critical_time_on_failure()
5461
{
55-
using var metricsListener = await WhenMessagesHandled(() => new MyExceptionalMessage());
62+
using var metricsListener = TestingMetricListener.SetupNServiceBusMetricsListener();
63+
await WhenMessagesHandled(() => new MyExceptionalMessage());
5664
metricsListener.AssertMetric(CriticalTimeMetricName, 0);
5765
}
5866

59-
static async Task<TestingMetricListener> WhenMessagesHandled(Func<IMessage> messageFactory)
60-
{
61-
TestingMetricListener metricsListener = null;
62-
try
63-
{
64-
metricsListener = TestingMetricListener.SetupNServiceBusMetricsListener();
65-
66-
_ = await Scenario.Define<Context>()
67-
.WithEndpoint<EndpointWithMetrics>(b =>
68-
b.DoNotFailOnErrorMessages()
69-
.CustomConfig(c => c.MakeInstanceUniquelyAddressable("discriminator"))
70-
.When(async (session, _) =>
67+
static Task WhenMessagesHandled(Func<IMessage> messageFactory) =>
68+
Scenario.Define<Context>()
69+
.WithEndpoint<EndpointWithMetrics>(b =>
70+
b.DoNotFailOnErrorMessages()
71+
.CustomConfig(c => c.MakeInstanceUniquelyAddressable("discriminator"))
72+
.When(async session =>
73+
{
74+
for (var x = 0; x < NumberOfMessages; x++)
7175
{
72-
for (var x = 0; x < 5; x++)
73-
{
74-
try
75-
{
76-
await session.SendLocal(messageFactory.Invoke());
77-
}
78-
catch (Exception e)
79-
{
80-
Console.WriteLine(e);
81-
}
82-
}
83-
}))
84-
.Done(c => c.TotalHandledMessages == 5)
85-
.Run();
86-
return metricsListener;
87-
}
88-
catch
89-
{
90-
metricsListener?.Dispose();
91-
throw;
92-
}
93-
}
94-
76+
await session.SendLocal(messageFactory.Invoke());
77+
}
78+
}))
79+
.Run();
9580

9681
static void AssertMandatoryTags(
9782
TestingMetricListener metricsListener,
@@ -108,7 +93,9 @@ static void AssertMandatoryTags(
10893

10994
class Context : ScenarioContext
11095
{
111-
public int TotalHandledMessages;
96+
public void MaybeCompleted() => MarkAsCompleted(Interlocked.Increment(ref TotalHandledMessages) == NumberOfMessages);
97+
98+
int TotalHandledMessages;
11299
}
113100

114101
class EndpointWithMetrics : EndpointConfigurationBuilder
@@ -120,7 +107,7 @@ class MyMessageHandler(Context testContext) : IHandleMessages<MyMessage>
120107
{
121108
public Task Handle(MyMessage message, IMessageHandlerContext context)
122109
{
123-
Interlocked.Increment(ref testContext.TotalHandledMessages);
110+
testContext.MaybeCompleted();
124111
return Task.CompletedTask;
125112
}
126113
}
@@ -129,7 +116,7 @@ class MyExceptionalHandler(Context testContext) : IHandleMessages<MyExceptionalM
129116
{
130117
public Task Handle(MyExceptionalMessage message, IMessageHandlerContext context)
131118
{
132-
Interlocked.Increment(ref testContext.TotalHandledMessages);
119+
testContext.MaybeCompleted();
133120
throw new Exception();
134121
}
135122
}

src/NServiceBus.AcceptanceTests/Core/OpenTelemetry/When_incoming_message_handled_successfully.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,22 @@
1111
[NonParallelizable]
1212
public class WhenIncomingMessageHandledSuccessfully : NServiceBusAcceptanceTest
1313
{
14+
const int NumberOfMessages = 5;
15+
1416
[Test]
1517
public async Task Should_record_handling_time()
1618
{
1719
using var metricsListener = TestingMetricListener.SetupNServiceBusMetricsListener();
1820

1921
_ = await Scenario.Define<Context>()
2022
.WithEndpoint<EndpointWithMetrics>(b =>
21-
b.When(async (session, _) =>
23+
b.When(async session =>
2224
{
23-
for (var x = 0; x < 5; x++)
25+
for (var x = 0; x < NumberOfMessages; x++)
2426
{
2527
await session.SendLocal(new MyMessage());
2628
}
2729
}))
28-
.Done(c => c.TotalHandledMessages == 5)
2930
.Run();
3031

3132
string handlingTime = "nservicebus.messaging.handler_time";
@@ -40,7 +41,9 @@ public async Task Should_record_handling_time()
4041

4142
class Context : ScenarioContext
4243
{
43-
public int TotalHandledMessages;
44+
public void MaybeCompleted() => MarkAsCompleted(Interlocked.Increment(ref TotalHandledMessages) == NumberOfMessages);
45+
46+
int TotalHandledMessages;
4447
}
4548

4649
class EndpointWithMetrics : EndpointConfigurationBuilder
@@ -52,7 +55,7 @@ class MyMessageHandler(Context testContext) : IHandleMessages<MyMessage>
5255
{
5356
public Task Handle(MyMessage message, IMessageHandlerContext context)
5457
{
55-
Interlocked.Increment(ref testContext.TotalHandledMessages);
58+
testContext.MaybeCompleted();
5659
return Task.CompletedTask;
5760
}
5861
}

0 commit comments

Comments
 (0)