Cleanup Unit Tests.

This commit is contained in:
Christian Kratky
2020-11-06 21:00:25 +01:00
parent b954c9512e
commit eaf1195f95
2 changed files with 21 additions and 21 deletions
+12 -4
View File
@@ -4,7 +4,6 @@ using System.Threading.Tasks;
namespace MQTTnet.Internal namespace MQTTnet.Internal
{ {
// From Stephen Toub (https://blogs.msdn.microsoft.com/pfxteam/2012/02/12/building-async-coordination-primitives-part-6-asynclock/)
public sealed class AsyncLock : IDisposable public sealed class AsyncLock : IDisposable
{ {
readonly object _syncRoot = new object(); readonly object _syncRoot = new object();
@@ -24,10 +23,19 @@ namespace MQTTnet.Internal
public Task<IDisposable> WaitAsync(CancellationToken cancellationToken) public Task<IDisposable> WaitAsync(CancellationToken cancellationToken)
{ {
var task = _semaphore.WaitAsync(cancellationToken); Task task;
if (task.Status == TaskStatus.RanToCompletion) lock (_syncRoot)
{ {
return _releaser; if (_semaphore == null)
{
throw new ObjectDisposedException("The AsyncLock is disposed.");
}
task = _semaphore.WaitAsync(cancellationToken);
if (task.Status == TaskStatus.RanToCompletion)
{
return _releaser;
}
} }
return task.ContinueWith( return task.ContinueWith(
@@ -59,9 +59,7 @@ namespace MQTTnet.Tests
using (var testEnvironment = new TestEnvironment(TestContext)) using (var testEnvironment = new TestEnvironment(TestContext))
{ {
var receivedMessagesCount = 0; var receivedMessagesCount = 0;
var factory = new MqttFactory();
await testEnvironment.StartServerAsync(); await testEnvironment.StartServerAsync();
var willMessage = new MqttApplicationMessageBuilder().WithTopic("My/last/will").WithAtMostOnceQoS().Build(); var willMessage = new MqttApplicationMessageBuilder().WithTopic("My/last/will").WithAtMostOnceQoS().Build();
@@ -92,8 +90,6 @@ namespace MQTTnet.Tests
{ {
using (var testEnvironment = new TestEnvironment(TestContext)) using (var testEnvironment = new TestEnvironment(TestContext))
{ {
var factory = new MqttFactory();
var server = await testEnvironment.StartServerAsync(); var server = await testEnvironment.StartServerAsync();
var managedClient = new ManagedMqttClient(testEnvironment.CreateClient(), new MqttNetLogger()); var managedClient = new ManagedMqttClient(testEnvironment.CreateClient(), new MqttNetLogger());
@@ -124,9 +120,7 @@ namespace MQTTnet.Tests
testEnvironment.IgnoreClientLogErrors = true; testEnvironment.IgnoreClientLogErrors = true;
testEnvironment.IgnoreServerLogErrors = true; testEnvironment.IgnoreServerLogErrors = true;
var factory = new MqttFactory(); await testEnvironment.StartServerAsync();
var server = await testEnvironment.StartServerAsync();
var managedClient = new ManagedMqttClient(testEnvironment.CreateClient(), new MqttNetLogger()); var managedClient = new ManagedMqttClient(testEnvironment.CreateClient(), new MqttNetLogger());
var clientOptions = new MqttClientOptionsBuilder() var clientOptions = new MqttClientOptionsBuilder()
@@ -314,11 +308,7 @@ namespace MQTTnet.Tests
var clientOptions = new MqttClientOptionsBuilder() var clientOptions = new MqttClientOptionsBuilder()
.WithTcpServer("localhost", testEnvironment.ServerPort); .WithTcpServer("localhost", testEnvironment.ServerPort);
var managedOptions = new ManagedMqttClientOptionsBuilder()
.WithClientOptions(clientOptions)
.Build();
var receivedManagedMessages = new List<MqttApplicationMessage>(); var receivedManagedMessages = new List<MqttApplicationMessage>();
var managedClient = new ManagedMqttClient(testEnvironment.CreateClient(), new MqttNetLogger()); var managedClient = new ManagedMqttClient(testEnvironment.CreateClient(), new MqttNetLogger());
managedClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(c => managedClient.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(c =>
@@ -359,7 +349,7 @@ namespace MQTTnet.Tests
} }
} }
private async Task<ManagedMqttClient> CreateManagedClientAsync( async Task<ManagedMqttClient> CreateManagedClientAsync(
TestEnvironment testEnvironment, TestEnvironment testEnvironment,
IMqttClient underlyingClient = null, IMqttClient underlyingClient = null,
TimeSpan? connectionCheckInterval = null) TimeSpan? connectionCheckInterval = null)
@@ -393,7 +383,7 @@ namespace MQTTnet.Tests
/// <summary> /// <summary>
/// Returns a task that will finish when the <paramref name="managedClient"/> has connected /// Returns a task that will finish when the <paramref name="managedClient"/> has connected
/// </summary> /// </summary>
private Task GetConnectedTask(ManagedMqttClient managedClient) Task GetConnectedTask(ManagedMqttClient managedClient)
{ {
TaskCompletionSource<bool> connected = new TaskCompletionSource<bool>(); TaskCompletionSource<bool> connected = new TaskCompletionSource<bool>();
managedClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(e => managedClient.ConnectedHandler = new MqttClientConnectedHandlerDelegate(e =>
@@ -408,7 +398,7 @@ namespace MQTTnet.Tests
/// Returns a task that will return the messages received on <paramref name="managedClient"/> /// Returns a task that will return the messages received on <paramref name="managedClient"/>
/// when <paramref name="expectedNumberOfMessages"/> have been received /// when <paramref name="expectedNumberOfMessages"/> have been received
/// </summary> /// </summary>
private Task<List<MqttApplicationMessage>> SetupReceivingOfMessages(ManagedMqttClient managedClient, int expectedNumberOfMessages) Task<List<MqttApplicationMessage>> SetupReceivingOfMessages(ManagedMqttClient managedClient, int expectedNumberOfMessages)
{ {
var receivedMessages = new List<MqttApplicationMessage>(); var receivedMessages = new List<MqttApplicationMessage>();
var allReceived = new TaskCompletionSource<List<MqttApplicationMessage>>(); var allReceived = new TaskCompletionSource<List<MqttApplicationMessage>>();
@@ -420,13 +410,14 @@ namespace MQTTnet.Tests
allReceived.SetResult(receivedMessages); allReceived.SetResult(receivedMessages);
} }
}); });
return allReceived.Task; return allReceived.Task;
} }
} }
public class ManagedMqttClientTestStorage : IManagedMqttClientStorage public class ManagedMqttClientTestStorage : IManagedMqttClientStorage
{ {
private IList<ManagedMqttApplicationMessage> _messages = null; IList<ManagedMqttApplicationMessage> _messages;
public Task<IList<ManagedMqttApplicationMessage>> LoadQueuedMessagesAsync() public Task<IList<ManagedMqttApplicationMessage>> LoadQueuedMessagesAsync()
{ {
@@ -434,6 +425,7 @@ namespace MQTTnet.Tests
{ {
_messages = new List<ManagedMqttApplicationMessage>(); _messages = new List<ManagedMqttApplicationMessage>();
} }
return Task.FromResult(_messages); return Task.FromResult(_messages);
} }