mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-21 12:16:02 +08:00
Fix Unit Tests
This commit is contained in:
@@ -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]
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user