-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathTransportTestsConfiguration.cs
More file actions
53 lines (43 loc) · 1.85 KB
/
TransportTestsConfiguration.cs
File metadata and controls
53 lines (43 loc) · 1.85 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
namespace ServiceControl.Transport.Tests;
using System;
using System.Threading.Tasks;
using Transports;
using Transports.IBMMQ;
using NServiceBus;
using NServiceBus.Transport.IBMMQ;
using NUnit.Framework;
[SetUpFixture]
public class BootstrapFixture
{
[OneTimeSetUp]
public void RunBeforeAnyTests() => TransportTestFixture.QueueNameSeparator = '.';
}
class TransportTestsConfiguration
{
public string ConnectionString { get; private set; }
public ITransportCustomization TransportCustomization { get; private set; }
public Task Configure()
{
TransportCustomization = new TestIBMMQTransportCustomization();
ConnectionString = Environment.GetEnvironmentVariable(ConnectionStringKey)
?? Environment.GetEnvironmentVariable(ConnectionStringKey.ToUpperInvariant()); // Env keys are case sensitive, POSIX is all uppercase
if (string.IsNullOrEmpty(ConnectionString))
{
throw new Exception($"Environment variable {ConnectionStringKey} is required for IBM MQ transport tests to run");
}
return Task.CompletedTask;
}
public Task Cleanup() => Task.CompletedTask;
static string ConnectionStringKey = "ServiceControl_TransportTests_IBMMQ_ConnectionString";
}
sealed class TestIBMMQTransportCustomization : IBMMQTransportCustomization
{
protected override IBMMQTransport CreateTransport(TransportSettings transportSettings, TransportTransactionMode preferredTransactionMode = TransportTransactionMode.ReceiveOnly)
{
transportSettings.Set<Action<IBMMQTransport>>(o => o.ResourceNameSanitizer = name => name
.Replace("ServiceControlMonitoring", "SCM") // Mitigate max queue name length
.Replace("-", ".") // dash is an illegal char
);
return base.CreateTransport(transportSettings, preferredTransactionMode);
}
}