-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEndpointTimingIntegrationTests.cs
More file actions
128 lines (109 loc) · 3.86 KB
/
Copy pathEndpointTimingIntegrationTests.cs
File metadata and controls
128 lines (109 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using ClearMeasure.HostedEndpoint;
using ClearMeasure.HostedEndpoint.Configuration;
using FluentAssertions;
using Microsoft.Extensions.Configuration;
using Xunit;
namespace ClearHostedEndpoint.Tests.Infrastructure;
public class EndpointTimingIntegrationTests
{
[Fact]
public async Task Endpoint_RegistersTimingBehavior_WhenEnabled()
{
// Arrange
var endpoint = new TestEndpointWithTimingEnabled(TestHelpers.CreateTestConfiguration());
try
{
// Act
await endpoint.StartAsync(CancellationToken.None);
await Task.Delay(500);
// Assert
endpoint.TimingBehaviorEnabled.Should().BeTrue();
}
finally
{
// Cleanup
await endpoint.StopAsync(CancellationToken.None);
endpoint.Dispose();
}
}
[Fact]
public async Task Endpoint_DoesNotRegisterTimingBehavior_WhenDisabled()
{
// Arrange
var endpoint = new TestEndpointWithTimingDisabled(TestHelpers.CreateTestConfiguration());
try
{
// Act
await endpoint.StartAsync(CancellationToken.None);
await Task.Delay(500);
// Assert
endpoint.TimingBehaviorEnabled.Should().BeFalse();
}
finally
{
// Cleanup
await endpoint.StopAsync(CancellationToken.None);
endpoint.Dispose();
}
}
[Fact]
public async Task Endpoint_WithTimingBehavior_StartsSuccessfully()
{
// Arrange
var endpoint = new TestEndpointWithTimingEnabled(TestHelpers.CreateTestConfiguration());
try
{
// Act
await endpoint.StartAsync(CancellationToken.None);
await Task.Delay(500);
// Assert - verify endpoint started without errors by checking if it's running
endpoint.IsStarted.Should().BeTrue();
}
finally
{
// Cleanup
await endpoint.StopAsync(CancellationToken.None);
endpoint.Dispose();
}
}
private class TestEndpointWithTimingEnabled : ClearMeasure.HostedEndpoint.ClearHostedEndpoint
{
public bool TimingBehaviorEnabled => EndpointOptions.EnableTimingBehavior;
public bool IsStarted { get; private set; }
public TestEndpointWithTimingEnabled(IConfiguration configuration) : base(configuration)
{
}
public override async Task OnStartingAsync(CancellationToken cancellationToken)
{
await base.OnStartingAsync(cancellationToken);
IsStarted = true;
}
protected override EndpointOptions EndpointOptions { get; } = new()
{
EndpointName = "TestEndpointWithTiming",
EnableTimingBehavior = true,
PurgeOnStartup = true
};
protected override void ConfigureTransport(EndpointConfiguration endpointConfiguration)
{
endpointConfiguration.UseTransport<LearningTransport>();
}
}
private class TestEndpointWithTimingDisabled : ClearMeasure.HostedEndpoint.ClearHostedEndpoint
{
public bool TimingBehaviorEnabled => EndpointOptions.EnableTimingBehavior;
public TestEndpointWithTimingDisabled(IConfiguration configuration) : base(configuration)
{
}
protected override EndpointOptions EndpointOptions { get; } = new()
{
EndpointName = "TestEndpointWithoutTiming",
EnableTimingBehavior = false,
PurgeOnStartup = true
};
protected override void ConfigureTransport(EndpointConfiguration endpointConfiguration)
{
endpointConfiguration.UseTransport<LearningTransport>();
}
}
}