Skip to content

Commit 65cf9d3

Browse files
committed
Fix and add a test
1 parent 0e9938c commit 65cf9d3

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

Rebus.Diagnostics.Tests/Incoming/HandlerInvokerWrapperTests.cs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.Diagnostics;
1+
using System;
2+
using System.Diagnostics;
3+
using System.Linq;
24
using System.Threading.Tasks;
35
using NUnit.Framework;
46
using Rebus.Diagnostics.Incoming;
@@ -41,6 +43,40 @@ public async Task CreatesNewSubActivityIfThereIsAnActiveActivity()
4143
Assert.That(hadActivity);
4244
}
4345

46+
[Test]
47+
public async Task MarksActivityAsFailedIfHandlerThrows()
48+
{
49+
using var activity = new Activity("MyActivity");
50+
51+
Activity? innerActivity = null;
52+
var innerInvoker = new TestInvoker(() =>
53+
{
54+
innerActivity = Activity.Current;
55+
throw new Exception("Look im failing");
56+
});
57+
58+
var wrapper = new HandlerInvokerWrapper(innerInvoker, "MyMessage");
59+
60+
activity.Start();
61+
62+
Assume.That(activity, Is.SameAs(Activity.Current));
63+
64+
Assert.That(async () =>
65+
{
66+
await wrapper.Invoke();
67+
}, Throws.Exception);
68+
69+
70+
Assert.That(innerActivity, Is.Not.Null);
71+
72+
Assert.That(innerActivity!.Status, Is.EqualTo(ActivityStatusCode.Error));
73+
Assert.That(innerActivity!.StatusDescription, Is.EqualTo("Look im failing"));
74+
Assert.That(innerActivity.Events, Has.Exactly(1).Items);
75+
var ev = innerActivity.Events.Single();
76+
Assert.That(ev.Tags.FirstOrDefault(t => t.Key == "exception.type").Value, Is.EqualTo("System.Exception"));
77+
Assert.That(ev.Tags.FirstOrDefault(t => t.Key == "exception.message").Value, Is.EqualTo("Look im failing"));
78+
}
79+
4480
[Test]
4581
public async Task CreatesNoNewActivityIfThereIsntAlreadyAnActiveActivity()
4682
{

Rebus.Diagnostics/Diagnostics/Incoming/HandlerInvokerWrapper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public override async Task Invoke()
3535
initialTags.Add(tag.Key, tag.Value);
3636
}
3737
initialTags["messaging.operation"] = "process";
38-
initialTags["rebus.handler.type"] = _handlerInvokerImplementation.Handler.GetType().FullName;
38+
initialTags["rebus.handler.type"] = _handlerInvokerImplementation.Handler?.GetType().FullName ?? "Unknown handler type";
3939

4040
using var activity = RebusDiagnosticConstants.ActivitySource.StartActivity($"{_messageType} process", ActivityKind.Internal, parentActivity.Context, initialTags);
4141

@@ -48,7 +48,7 @@ public override async Task Invoke()
4848
catch (Exception e)
4949
{
5050
activity?.AddException(e);
51-
activity?.SetStatus(ActivityStatusCode.Error, e.ToString());
51+
activity?.SetStatus(ActivityStatusCode.Error, e.Message);
5252
throw;
5353
}
5454
}

0 commit comments

Comments
 (0)