mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-25 07:41:32 +08:00
Cleanup Unit Tests.
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user