From 2aa4d1b77ab6c302bbc06393f855ab7f22ebeff7 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 5 Sep 2021 13:31:23 +0200 Subject: [PATCH] Add low level client to test environment. --- .../Mockups/TestEnvironment.cs | 163 ++++++++++-------- 1 file changed, 90 insertions(+), 73 deletions(-) diff --git a/Tests/MQTTnet.Core.Tests/Mockups/TestEnvironment.cs b/Tests/MQTTnet.Core.Tests/Mockups/TestEnvironment.cs index e495a108..f6302801 100644 --- a/Tests/MQTTnet.Core.Tests/Mockups/TestEnvironment.cs +++ b/Tests/MQTTnet.Core.Tests/Mockups/TestEnvironment.cs @@ -18,6 +18,7 @@ namespace MQTTnet.Tests.Mockups public sealed class TestEnvironment : IDisposable { readonly MqttFactory _mqttFactory = new MqttFactory(); + readonly List _lowLevelClients = new List(); readonly List _clients = new List(); readonly List _serverErrors = new List(); readonly List _clientErrors = new List(); @@ -79,11 +80,6 @@ namespace MQTTnet.Tests.Mockups }; } - public async Task ConnectRpcClientAsync(IMqttRpcClientOptions options) - { - return new MqttRpcClient(await ConnectClientAsync(), options); - } - public IMqttClient CreateClient() { lock (_clients) @@ -95,6 +91,82 @@ namespace MQTTnet.Tests.Mockups } } + public Task ConnectClientAsync() + { + return ConnectClientAsync(new MqttClientOptionsBuilder()); + } + + public async Task ConnectClientAsync(Action optionsBuilder) + { + if (optionsBuilder == null) throw new ArgumentNullException(nameof(optionsBuilder)); + + var options = new MqttClientOptionsBuilder(); + options = options.WithTcpServer("localhost", ServerPort); + optionsBuilder.Invoke(options); + + var client = CreateClient(); + await client.ConnectAsync(options.Build()).ConfigureAwait(false); + + return client; + } + + public async Task ConnectClientAsync(MqttClientOptionsBuilder options) + { + if (options == null) throw new ArgumentNullException(nameof(options)); + + options = options.WithTcpServer("localhost", ServerPort); + + var client = CreateClient(); + await client.ConnectAsync(options.Build()).ConfigureAwait(false); + + return client; + } + + public async Task ConnectClientAsync(IMqttClientOptions options) + { + if (options == null) throw new ArgumentNullException(nameof(options)); + + var client = CreateClient(); + await client.ConnectAsync(options).ConfigureAwait(false); + + return client; + } + + public ILowLevelMqttClient CreateLowLevelClient() + { + lock (_clients) + { + var client = _mqttFactory.CreateLowLevelMqttClient(ClientLogger); + _lowLevelClients.Add(client); + + return client; + } + } + + public Task ConnectLowLevelClientAsync() + { + return ConnectLowLevelClientAsync(o => { }); + } + + public async Task ConnectLowLevelClientAsync(Action optionsBuilder) + { + if (optionsBuilder == null) throw new ArgumentNullException(nameof(optionsBuilder)); + + var options = new MqttClientOptionsBuilder(); + options = options.WithTcpServer("127.0.0.1", ServerPort); + optionsBuilder.Invoke(options); + + var client = CreateLowLevelClient(); + await client.ConnectAsync(options.Build(), CancellationToken.None).ConfigureAwait(false); + + return client; + } + + public async Task ConnectRpcClientAsync(IMqttRpcClientOptions options) + { + return new MqttRpcClient(await ConnectClientAsync(), options); + } + public Task StartServerAsync() { return StartServerAsync(new MqttServerOptionsBuilder()); @@ -119,66 +191,6 @@ namespace MQTTnet.Tests.Mockups return Server; } - public Task ConnectClientAsync() - { - return ConnectClientAsync(new MqttClientOptionsBuilder()); - } - - public Task ConnectLowLevelClientAsync() - { - return ConnectLowLevelClientAsync(o => { }); - } - - public async Task ConnectLowLevelClientAsync(Action optionsBuilder) - { - if (optionsBuilder == null) throw new ArgumentNullException(nameof(optionsBuilder)); - - var options = new MqttClientOptionsBuilder(); - options = options.WithTcpServer("127.0.0.1", ServerPort); - optionsBuilder.Invoke(options); - - var client = new MqttFactory().CreateLowLevelMqttClient(); - await client.ConnectAsync(options.Build(), CancellationToken.None).ConfigureAwait(false); - - return client; - } - - public async Task ConnectClientAsync(Action optionsBuilder) - { - if (optionsBuilder == null) throw new ArgumentNullException(nameof(optionsBuilder)); - - var options = new MqttClientOptionsBuilder(); - options = options.WithTcpServer("localhost", ServerPort); - optionsBuilder.Invoke(options); - - var client = CreateClient(); - await client.ConnectAsync(options.Build()).ConfigureAwait(false); - - return client; - } - - public async Task ConnectClientAsync(MqttClientOptionsBuilder options) - { - if (options == null) throw new ArgumentNullException(nameof(options)); - - options = options.WithTcpServer("localhost", ServerPort); - - var client = CreateClient(); - await client.ConnectAsync(options.Build()).ConfigureAwait(false); - - return client; - } - - public async Task ConnectClientAsync(IMqttClientOptions options) - { - if (options == null) throw new ArgumentNullException(nameof(options)); - - var client = CreateClient(); - await client.ConnectAsync(options).ConfigureAwait(false); - - return client; - } - public void ThrowIfLogErrors() { lock (_serverErrors) @@ -198,6 +210,14 @@ namespace MQTTnet.Tests.Mockups } } + public void TrackException(Exception exception) + { + lock (_exceptions) + { + _exceptions.Add(exception); + } + } + public void Dispose() { foreach (var mqttClient in _clients) @@ -216,6 +236,11 @@ namespace MQTTnet.Tests.Mockups } } + foreach (var lowLevelMqttClient in _lowLevelClients) + { + lowLevelMqttClient.Dispose(); + } + try { Server?.StopAsync().GetAwaiter().GetResult(); @@ -236,13 +261,5 @@ namespace MQTTnet.Tests.Mockups throw new Exception($"{_exceptions.Count} exceptions tracked.\r\n" + string.Join(Environment.NewLine, _exceptions)); } } - - public void TrackException(Exception exception) - { - lock (_exceptions) - { - _exceptions.Add(exception); - } - } } } \ No newline at end of file