Skip to content

Commit cbd3534

Browse files
committed
test(diagnostics): add unit tests to check creation context
For activity tracing.
1 parent c7a1681 commit cbd3534

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#if NET6_0_OR_GREATER
2+
using System;
3+
using System.Diagnostics;
4+
using Hangfire;
5+
using Moq;
6+
using Xunit;
7+
8+
namespace Hangfire.Core.Tests
9+
{
10+
public class DiagnosticsActivityFilterFacts
11+
{
12+
// dotnet test -f net6.0 -l "console;verbosity=detailed" --filter "FullyQualifiedName~Hangfire.Core.Tests.DiagnosticsActivityFilterFacts"
13+
14+
private readonly CreateContextMock _createContext;
15+
private readonly PerformContextMock _performContext;
16+
17+
public DiagnosticsActivityFilterFacts()
18+
{
19+
_createContext = new CreateContextMock();
20+
_performContext = new PerformContextMock();
21+
}
22+
23+
[Fact]
24+
public void OnCreating_WhenActivityIsConfigured_CreationContextIsStored()
25+
{
26+
// Arrange
27+
using var listener = new ActivityListener
28+
{
29+
ShouldListenTo = _ => true,
30+
Sample = (ref ActivityCreationOptions<ActivityContext> _) => ActivitySamplingResult.AllData,
31+
ActivityStarted = activity => {},
32+
ActivityStopped = activity => {}
33+
};
34+
ActivitySource.AddActivityListener(listener);
35+
36+
var testActivity = new Activity("test");
37+
testActivity.Start();
38+
var expectedTraceId = testActivity.TraceId.ToHexString();
39+
40+
var filter = CreateFilter();
41+
42+
// Act
43+
filter.OnCreating(_createContext.GetCreatingContext());
44+
45+
// Assert
46+
Assert.Equal(((string)_createContext.Object.Parameters["traceparent"]).Substring(3,32), expectedTraceId);
47+
}
48+
49+
[Fact]
50+
public void OnPerforming_WhenActivityParametersExist_CreationContextIsUsed()
51+
{
52+
// Arrange
53+
using var listener = new ActivityListener
54+
{
55+
ShouldListenTo = _ => true,
56+
Sample = (ref ActivityCreationOptions<ActivityContext> _) => ActivitySamplingResult.AllData,
57+
ActivityStarted = activity => {},
58+
ActivityStopped = activity => {}
59+
};
60+
ActivitySource.AddActivityListener(listener);
61+
62+
var expectedTraceId = "abcdef0123456789abcdef0123456789";
63+
var traceParent = $"00-{expectedTraceId}-123456789abcdef0-01";
64+
_performContext.Connection
65+
.Setup(x => x.GetJobParameter(_performContext.BackgroundJob.Id, "traceparent"))
66+
.Returns($"\"{traceParent}\"");
67+
68+
var filter = CreateFilter();
69+
70+
// Act
71+
filter.OnPerforming(_performContext.GetPerformingContext());
72+
73+
// Assert
74+
Assert.Equal(Activity.Current.TraceId.ToHexString(), expectedTraceId);
75+
}
76+
77+
private DiagnosticsActivityFilter CreateFilter()
78+
{
79+
return new DiagnosticsActivityFilter();
80+
}
81+
}
82+
}
83+
#endif

0 commit comments

Comments
 (0)