Fix Unit Tests

This commit is contained in:
Christian
2020-11-15 12:46:10 +01:00
parent 5b29b8cfd8
commit 0bc25571e0
2 changed files with 40 additions and 97 deletions
+33 -93
View File
@@ -123,57 +123,41 @@ namespace MQTTnet.Tests.MQTTv5
[TestMethod] [TestMethod]
public async Task Connect() public async Task Connect()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithProtocolVersion(MqttProtocolVersion.V500).Build()); await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500).Build());
}
finally
{
await server.StopAsync();
} }
} }
[TestMethod] [TestMethod]
public async Task Connect_And_Disconnect() public async Task Connect_And_Disconnect()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithProtocolVersion(MqttProtocolVersion.V500).Build()); var client = await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500));
await client.DisconnectAsync(); await client.DisconnectAsync();
} }
finally
{
await server.StopAsync();
}
} }
[TestMethod] [TestMethod]
public async Task Subscribe() public async Task Subscribe()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithProtocolVersion(MqttProtocolVersion.V500).Build()); var client =
await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500));
var result = await client.SubscribeAsync(new MqttClientSubscribeOptions() var result = await client.SubscribeAsync(new MqttClientSubscribeOptions()
{ {
SubscriptionIdentifier = 1, SubscriptionIdentifier = 1,
TopicFilters = new List<MqttTopicFilter> TopicFilters = new List<MqttTopicFilter>
{ {
new MqttTopicFilter { Topic = "a", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce} new MqttTopicFilter {Topic = "a", QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce}
} }
}); });
@@ -181,112 +165,81 @@ namespace MQTTnet.Tests.MQTTv5
Assert.AreEqual(1, result.Items.Count); Assert.AreEqual(1, result.Items.Count);
Assert.AreEqual(MqttClientSubscribeResultCode.GrantedQoS1, result.Items[0].ResultCode); Assert.AreEqual(MqttClientSubscribeResultCode.GrantedQoS1, result.Items[0].ResultCode);
}
finally
{
await server.StopAsync();
} }
} }
[TestMethod] [TestMethod]
public async Task Unsubscribe() public async Task Unsubscribe()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithProtocolVersion(MqttProtocolVersion.V500).Build()); var client = await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500));
await client.SubscribeAsync("a"); await client.SubscribeAsync("a");
var result = await client.UnsubscribeAsync("a"); var result = await client.UnsubscribeAsync("a");
await client.DisconnectAsync(); await client.DisconnectAsync();
Assert.AreEqual(1, result.Items.Count); Assert.AreEqual(1, result.Items.Count);
Assert.AreEqual(MqttClientUnsubscribeResultCode.Success, result.Items[0].ReasonCode); Assert.AreEqual(MqttClientUnsubscribeResultCode.Success, result.Items[0].ReasonCode);
} }
finally
{
await server.StopAsync();
}
} }
[TestMethod] [TestMethod]
public async Task Publish_QoS_0() public async Task Publish_QoS_0()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithProtocolVersion(MqttProtocolVersion.V500).Build()); var client = await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500));
var result = await client.PublishAsync("a", "b"); var result = await client.PublishAsync("a", "b");
await client.DisconnectAsync(); await client.DisconnectAsync();
Assert.AreEqual(MqttClientPublishReasonCode.Success, result.ReasonCode); Assert.AreEqual(MqttClientPublishReasonCode.Success, result.ReasonCode);
} }
finally
{
await server.StopAsync();
}
} }
[TestMethod] [TestMethod]
public async Task Publish_QoS_1() public async Task Publish_QoS_1()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithProtocolVersion(MqttProtocolVersion.V500).Build()); var client = await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500));
var result = await client.PublishAsync("a", "b", MqttQualityOfServiceLevel.AtLeastOnce); var result = await client.PublishAsync("a", "b", MqttQualityOfServiceLevel.AtLeastOnce);
await client.DisconnectAsync(); await client.DisconnectAsync();
Assert.AreEqual(MqttClientPublishReasonCode.Success, result.ReasonCode); Assert.AreEqual(MqttClientPublishReasonCode.Success, result.ReasonCode);
} }
finally
{
await server.StopAsync();
}
} }
[TestMethod] [TestMethod]
public async Task Publish_QoS_2() public async Task Publish_QoS_2()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithProtocolVersion(MqttProtocolVersion.V500).Build()); var client = await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500));
var result = await client.PublishAsync("a", "b", MqttQualityOfServiceLevel.ExactlyOnce); var result = await client.PublishAsync("a", "b", MqttQualityOfServiceLevel.ExactlyOnce);
await client.DisconnectAsync(); await client.DisconnectAsync();
Assert.AreEqual(MqttClientPublishReasonCode.Success, result.ReasonCode); Assert.AreEqual(MqttClientPublishReasonCode.Success, result.ReasonCode);
} }
finally
{
await server.StopAsync();
}
} }
[TestMethod] [TestMethod]
public async Task Publish_With_Properties() public async Task Publish_With_Properties()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
var client = await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500));
var applicationMessage = new MqttApplicationMessageBuilder() var applicationMessage = new MqttApplicationMessageBuilder()
.WithTopic("Hello") .WithTopic("Hello")
@@ -301,32 +254,23 @@ namespace MQTTnet.Tests.MQTTv5
.WithTopicAlias(2) .WithTopicAlias(2)
.Build(); .Build();
await client.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithProtocolVersion(MqttProtocolVersion.V500).Build());
var result = await client.PublishAsync(applicationMessage); var result = await client.PublishAsync(applicationMessage);
await client.DisconnectAsync(); await client.DisconnectAsync();
Assert.AreEqual(MqttClientPublishReasonCode.Success, result.ReasonCode); Assert.AreEqual(MqttClientPublishReasonCode.Success, result.ReasonCode);
} }
finally
{
await server.StopAsync();
}
} }
[TestMethod] [TestMethod]
public async Task Subscribe_And_Publish() public async Task Subscribe_And_Publish()
{ {
var server = new MqttFactory().CreateMqttServer(); using (var testEnvironment = new TestEnvironment())
var client1 = new MqttFactory().CreateMqttClient();
var client2 = new MqttFactory().CreateMqttClient();
try
{ {
await server.StartAsync(new MqttServerOptions()); await testEnvironment.StartServerAsync();
var receivedMessages = new List<MqttApplicationMessageReceivedEventArgs>(); var receivedMessages = new List<MqttApplicationMessageReceivedEventArgs>();
await client1.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithClientId("client1").WithProtocolVersion(MqttProtocolVersion.V500).Build()); var client1 = await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500).WithClientId("client1"));
client1.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(e => client1.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(e =>
{ {
lock (receivedMessages) lock (receivedMessages)
@@ -337,7 +281,7 @@ namespace MQTTnet.Tests.MQTTv5
await client1.SubscribeAsync("a"); await client1.SubscribeAsync("a");
await client2.ConnectAsync(new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1").WithClientId("client2").WithProtocolVersion(MqttProtocolVersion.V500).Build()); var client2 = await testEnvironment.ConnectClientAsync(o => o.WithProtocolVersion(MqttProtocolVersion.V500).WithClientId("client2"));
await client2.PublishAsync("a", "b"); await client2.PublishAsync("a", "b");
await Task.Delay(500); await Task.Delay(500);
@@ -350,10 +294,6 @@ namespace MQTTnet.Tests.MQTTv5
Assert.AreEqual("a", receivedMessages[0].ApplicationMessage.Topic); Assert.AreEqual("a", receivedMessages[0].ApplicationMessage.Topic);
Assert.AreEqual("b", receivedMessages[0].ApplicationMessage.ConvertPayloadToString()); Assert.AreEqual("b", receivedMessages[0].ApplicationMessage.ConvertPayloadToString());
} }
finally
{
await server.StopAsync();
}
} }
[TestMethod] [TestMethod]
+7 -4
View File
@@ -153,10 +153,13 @@ namespace MQTTnet.Tests
client2.UseApplicationMessageReceivedHandler(async c => client2.UseApplicationMessageReceivedHandler(async c =>
{ {
// Use AtMostOnce here because with QoS 1 or even QoS 2 the process waits for if (c.ApplicationMessage.Topic == "request")
// the ACK etc. The problem is that the SpinUntil below only waits until the {
// flag is set. It does not wait until the client has sent the ACK // Use AtMostOnce here because with QoS 1 or even QoS 2 the process waits for
await client2.PublishAsync("reply", null, MqttQualityOfServiceLevel.AtMostOnce); // the ACK etc. The problem is that the SpinUntil below only waits until the
// flag is set. It does not wait until the client has sent the ACK
await client2.PublishAsync("reply", null, MqttQualityOfServiceLevel.AtMostOnce);
}
}); });
await client1.PublishAsync("request", null, MqttQualityOfServiceLevel.AtLeastOnce); await client1.PublishAsync("request", null, MqttQualityOfServiceLevel.AtLeastOnce);