Skip to content

Commit 7b64f5f

Browse files
committed
Get RabbitMQQuery tests working
1 parent fbe1dc4 commit 7b64f5f

File tree

7 files changed

+53
-60
lines changed

7 files changed

+53
-60
lines changed

src/ServiceControl.Transports.RabbitMQ/RabbitMQConventionalRoutingTransportCustomization.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public abstract class RabbitMQConventionalRoutingTransportCustomization(NService
1111
{
1212
RabbitMQTransport rabbitMQTransport;
1313

14-
ManagementClient IManagementClientProvider.ManagementClient => rabbitMQTransport?.ManagementClient ?? throw new InvalidOperationException("Transport instance has not been created yet.");
14+
ManagementClient IManagementClientProvider.ManagementClient => rabbitMQTransport?.ManagementClient ?? new ManagementClient(rabbitMQTransport.ConnectionConfiguration, rabbitMQTransport.ManagementApiConfiguration);
1515

1616
protected override void CustomizeTransportForPrimaryEndpoint(EndpointConfiguration endpointConfiguration, RabbitMQTransport transportDefinition, TransportSettings transportSettings) => rabbitMQTransport = transportDefinition;
1717

src/ServiceControl.Transports.RabbitMQ/RabbitMQDirectRoutingTransportCustomization.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public abstract class RabbitMQDirectRoutingTransportCustomization(NServiceBus.Qu
1111
{
1212
RabbitMQTransport rabbitMQTransport;
1313

14-
ManagementClient IManagementClientProvider.ManagementClient => rabbitMQTransport?.ManagementClient ?? throw new InvalidOperationException("Transport instance has not been created yet.");
14+
ManagementClient IManagementClientProvider.ManagementClient => rabbitMQTransport?.ManagementClient ?? new ManagementClient(rabbitMQTransport.ConnectionConfiguration, rabbitMQTransport.ManagementApiConfiguration);
1515

1616
protected override void CustomizeTransportForPrimaryEndpoint(EndpointConfiguration endpointConfiguration, RabbitMQTransport transportDefinition, TransportSettings transportSettings) => rabbitMQTransport = transportDefinition;
1717

src/ServiceControl.Transports.RabbitMQClassicConventionalRouting.Tests/RabbitMQQueryTests.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ namespace ServiceControl.Transport.Tests;
88
using System.Threading.Tasks;
99
using Microsoft.Extensions.Logging.Abstractions;
1010
using Microsoft.Extensions.Time.Testing;
11+
using NServiceBus;
1112
using NUnit.Framework;
13+
using ServiceControl.Transports.BrokerThroughput;
1214
using Transports;
1315
using Transports.RabbitMQ;
14-
using ServiceControl.Transports.BrokerThroughput;
1516

1617
[TestFixture]
1718
class RabbitMQQueryTests : TransportTestFixture
@@ -20,25 +21,30 @@ class RabbitMQQueryTests : TransportTestFixture
2021
public async Task GetQueueNames_FindsQueues()
2122
{
2223
using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(30));
23-
CancellationToken token = cancellationTokenSource.Token;
24+
var token = cancellationTokenSource.Token;
25+
2426
var provider = new FakeTimeProvider();
27+
2528
var transportSettings = new TransportSettings
2629
{
2730
ConnectionString = configuration.ConnectionString,
28-
MaxConcurrency = 1,
2931
EndpointName = Guid.NewGuid().ToString("N")
3032
};
31-
var query = new RabbitMQQuery(NullLogger<RabbitMQQuery>.Instance, provider, transportSettings, configuration.TransportCustomization);
32-
string[] additionalQueues = Enumerable.Range(1, 10).Select(i => $"myqueue{i}").ToArray();
33+
34+
configuration.TransportCustomization.CustomizePrimaryEndpoint(new EndpointConfiguration(transportSettings.EndpointName), transportSettings);
35+
36+
var additionalQueues = Enumerable.Range(1, 10).Select(i => $"myqueue{i}").ToArray();
3337
await configuration.TransportCustomization.ProvisionQueues(transportSettings, additionalQueues);
3438

39+
var query = new RabbitMQQuery(NullLogger<RabbitMQQuery>.Instance, provider, transportSettings, configuration.TransportCustomization);
3540
query.Initialize(ReadOnlyDictionary<string, string>.Empty);
3641

3742
var queueNames = new List<IBrokerQueue>();
43+
3844
await foreach (IBrokerQueue queueName in query.GetQueueNames(token))
3945
{
4046
queueNames.Add(queueName);
41-
Assert.That(queueName.Scope, Is.EqualTo("/"));
47+
4248
if (queueName.QueueName == transportSettings.EndpointName)
4349
{
4450
Assert.That(queueName.EndpointIndicators, Has.Member("ConventionalTopologyBinding"));

src/ServiceControl.Transports.RabbitMQQuorumDirectRouting.Tests/ApprovalFiles/RabbitMQQueryTests.TestConnectionWithInvalidSettings.approved.txt

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/ServiceControl.Transports.RabbitMQQuorumDirectRouting.Tests/ApprovalFiles/RabbitMQQueryTests.TestConnectionWithValidSettings.approved.txt

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/ServiceControl.Transports.RabbitMQQuorumDirectRouting.Tests/RabbitMQQueryTests.cs

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,86 +3,87 @@ namespace ServiceControl.Transport.Tests;
33
using System;
44
using System.Collections.Generic;
55
using System.Collections.ObjectModel;
6-
using System.Text.RegularExpressions;
76
using System.Threading;
87
using System.Threading.Tasks;
98
using Microsoft.Extensions.Logging.Abstractions;
109
using Microsoft.Extensions.Time.Testing;
10+
using NServiceBus;
1111
using NUnit.Framework;
12-
using Particular.Approvals;
12+
using ServiceControl.Transports.BrokerThroughput;
1313
using Transports;
1414
using Transports.RabbitMQ;
15-
using ServiceControl.Transports.BrokerThroughput;
1615

1716
[TestFixture]
1817
class RabbitMQQueryTests : TransportTestFixture
1918
{
20-
FakeTimeProvider provider;
21-
TransportSettings transportSettings;
22-
RabbitMQQuery query;
23-
24-
[SetUp]
25-
public void Initialise()
26-
{
27-
provider = new();
28-
provider.SetUtcNow(DateTimeOffset.UtcNow);
29-
transportSettings = new TransportSettings
30-
{
31-
ConnectionString = configuration.ConnectionString,
32-
MaxConcurrency = 1,
33-
EndpointName = Guid.NewGuid().ToString("N")
34-
};
35-
query = new RabbitMQQuery(NullLogger<RabbitMQQuery>.Instance, provider, transportSettings, configuration.TransportCustomization);
36-
}
37-
3819
[Test]
3920
public async Task TestConnectionWithInvalidSettings()
4021
{
4122
using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(30));
23+
var token = cancellationTokenSource.Token;
4224

43-
var dictionary = new Dictionary<string, string>
25+
var provider = new FakeTimeProvider(DateTimeOffset.UtcNow);
26+
27+
var transportSettings = new TransportSettings
4428
{
45-
{ RabbitMQQuery.RabbitMQSettings.API, "http://localhost:12345" }
29+
ConnectionString = configuration.ConnectionString + ";ManagementApiUrl=http://localhost:12345",
30+
EndpointName = Guid.NewGuid().ToString("N")
4631
};
47-
query.Initialize(new ReadOnlyDictionary<string, string>(dictionary));
32+
33+
configuration.TransportCustomization.CustomizePrimaryEndpoint(new EndpointConfiguration(transportSettings.EndpointName), transportSettings);
34+
35+
var query = new RabbitMQQuery(NullLogger<RabbitMQQuery>.Instance, provider, transportSettings, configuration.TransportCustomization);
36+
query.Initialize(ReadOnlyDictionary<string, string>.Empty);
37+
4838
(bool success, _, string diagnostics) = await query.TestConnection(cancellationTokenSource.Token);
4939

5040
Assert.That(success, Is.False);
51-
Approver.Verify(diagnostics,
52-
s => Regex.Replace(s, "defaulted to using \"\\w*\" username", "defaulted to using \"xxxxx\" username",
53-
RegexOptions.Multiline));
5441
}
5542

5643
[Test]
5744
public async Task TestConnectionWithValidSettings()
5845
{
5946
using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(30));
47+
var token = cancellationTokenSource.Token;
6048

49+
var provider = new FakeTimeProvider(DateTimeOffset.UtcNow);
50+
51+
var transportSettings = new TransportSettings
52+
{
53+
ConnectionString = configuration.ConnectionString,
54+
EndpointName = Guid.NewGuid().ToString("N")
55+
};
56+
57+
configuration.TransportCustomization.CustomizePrimaryEndpoint(new EndpointConfiguration(transportSettings.EndpointName), transportSettings);
58+
59+
var query = new RabbitMQQuery(NullLogger<RabbitMQQuery>.Instance, provider, transportSettings, configuration.TransportCustomization);
6160
query.Initialize(ReadOnlyDictionary<string, string>.Empty);
61+
6262
(bool success, _, string diagnostics) = await query.TestConnection(cancellationTokenSource.Token);
6363

6464
Assert.That(success, Is.True);
65-
Approver.Verify(diagnostics,
66-
s =>
67-
{
68-
s = Regex.Replace(s,
69-
"RabbitMQ API Url not set, defaulted to using \"http://[\\w.]*:15672\" from the ConnectionString used by instance",
70-
"RabbitMQ API Url not set, defaulted to using \"xxxx\" from the ConnectionString used by instance",
71-
RegexOptions.Multiline);
72-
return Regex.Replace(s, "defaulted to using \"\\w*\" username", "defaulted to using \"xxxxx\" username",
73-
RegexOptions.Multiline);
74-
});
7565
}
7666

7767
[Test]
7868
public async Task RunScenario()
7969
{
8070
// We need to wait a bit of time, because the scenario running takes on average 1 sec per run.
8171
using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMinutes(3));
82-
CancellationToken token = cancellationTokenSource.Token;
72+
var token = cancellationTokenSource.Token;
73+
74+
var provider = new FakeTimeProvider(DateTimeOffset.UtcNow);
75+
76+
var transportSettings = new TransportSettings
77+
{
78+
ConnectionString = configuration.ConnectionString,
79+
EndpointName = Guid.NewGuid().ToString("N")
80+
};
81+
82+
configuration.TransportCustomization.CustomizePrimaryEndpoint(new EndpointConfiguration(transportSettings.EndpointName), transportSettings);
8383

8484
await CreateTestQueue(transportSettings.EndpointName);
8585

86+
var query = new RabbitMQQuery(NullLogger<RabbitMQQuery>.Instance, provider, transportSettings, configuration.TransportCustomization);
8687
query.Initialize(ReadOnlyDictionary<string, string>.Empty);
8788

8889
var queueNames = new List<IBrokerQueue>();

src/ServiceControl.Transports.RabbitMQQuorumDirectRouting.Tests/ServiceControl.Transports.RabbitMQQuorumDirectRouting.Tests.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
<PackageReference Include="NUnit" />
2121
<PackageReference Include="NUnit.Analyzers" />
2222
<PackageReference Include="NUnit3TestAdapter" />
23-
<PackageReference Include="Particular.Approvals" />
2423
</ItemGroup>
2524

2625
<ItemGroup>

0 commit comments

Comments
 (0)