From a6be5e11ed304bf8f4acab84667b4a76d34b6a4f Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 12 Mar 2026 15:03:12 -0400 Subject: [PATCH] refactor: extract NATS.Server.Mqtt.Tests project Move 29 MQTT test files from NATS.Server.Tests into a dedicated NATS.Server.Mqtt.Tests project. Update namespaces, add InternalsVisibleTo, and replace Task.Delay calls with PollHelper.WaitUntilAsync for proper synchronization. --- NatsDotNet.slnx | 1 + src/NATS.Server/NATS.Server.csproj | 1 + .../Mqtt/MqttAdvancedParityTests.cs | 21 +++++++++++++--- .../Mqtt/MqttAuthIntegrationTests.cs | 2 +- .../Mqtt/MqttAuthParityTests.cs | 14 +++++++---- .../Mqtt/MqttBinaryParserTests.cs | 2 +- .../Mqtt/MqttFlapperDetectionTests.cs | 2 +- .../Mqtt/MqttFlowControllerTests.cs | 2 +- .../Mqtt/MqttGoParityTests.cs | 2 +- .../Mqtt/MqttKeepAliveTests.cs | 12 ++++++--- .../Mqtt/MqttListenerParityTests.cs | 2 +- .../Mqtt/MqttModelParityBatch3Tests.cs | 2 +- .../Mqtt/MqttPacketParserTests.cs | 2 +- .../Mqtt/MqttPacketParsingParityTests.cs | 2 +- .../Mqtt/MqttPacketWriterTests.cs | 2 +- .../MqttProtocolConstantsParityBatch1Tests.cs | 2 +- .../MqttProtocolConstantsParityBatch2Tests.cs | 2 +- .../Mqtt/MqttPublishSubscribeParityTests.cs | 2 +- .../Mqtt/MqttQoSTrackingTests.cs | 2 +- .../Mqtt/MqttQosAckRuntimeTests.cs | 2 +- .../Mqtt/MqttQosDeliveryParityTests.cs | 2 +- .../Mqtt/MqttQosTests.cs | 2 +- .../Mqtt/MqttRetainedDeliveryTests.cs | 2 +- .../Mqtt/MqttRetainedMessageParityTests.cs | 2 +- .../Mqtt/MqttSessionParityTests.cs | 2 +- .../Mqtt/MqttSessionPersistenceTests.cs | 2 +- .../Mqtt/MqttSessionRuntimeTests.cs | 2 +- .../Mqtt/MqttTopicMappingParityTests.cs | 2 +- .../Mqtt/MqttWillMessageParityTests.cs | 2 +- .../Mqtt/MqttWillMessageTests.cs | 2 +- .../MqttPersistenceTests.cs | 2 +- .../NATS.Server.Mqtt.Tests.csproj | 25 +++++++++++++++++++ 32 files changed, 88 insertions(+), 38 deletions(-) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttAdvancedParityTests.cs (98%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttAuthIntegrationTests.cs (95%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttAuthParityTests.cs (96%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttBinaryParserTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttFlapperDetectionTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttFlowControllerTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttGoParityTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttKeepAliveTests.cs (59%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttListenerParityTests.cs (98%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttModelParityBatch3Tests.cs (98%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttPacketParserTests.cs (95%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttPacketParsingParityTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttPacketWriterTests.cs (94%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttProtocolConstantsParityBatch1Tests.cs (98%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttProtocolConstantsParityBatch2Tests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttPublishSubscribeParityTests.cs (97%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttQoSTrackingTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttQosAckRuntimeTests.cs (95%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttQosDeliveryParityTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttQosTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttRetainedDeliveryTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttRetainedMessageParityTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttSessionParityTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttSessionPersistenceTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttSessionRuntimeTests.cs (98%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttTopicMappingParityTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttWillMessageParityTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/Mqtt/MqttWillMessageTests.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.Mqtt.Tests}/MqttPersistenceTests.cs (98%) create mode 100644 tests/NATS.Server.Mqtt.Tests/NATS.Server.Mqtt.Tests.csproj diff --git a/NatsDotNet.slnx b/NatsDotNet.slnx index 7fed1de..657789f 100644 --- a/NatsDotNet.slnx +++ b/NatsDotNet.slnx @@ -7,6 +7,7 @@ + diff --git a/src/NATS.Server/NATS.Server.csproj b/src/NATS.Server/NATS.Server.csproj index 719e71b..91b5087 100644 --- a/src/NATS.Server/NATS.Server.csproj +++ b/src/NATS.Server/NATS.Server.csproj @@ -2,6 +2,7 @@ + diff --git a/tests/NATS.Server.Tests/Mqtt/MqttAdvancedParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAdvancedParityTests.cs similarity index 98% rename from tests/NATS.Server.Tests/Mqtt/MqttAdvancedParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAdvancedParityTests.cs index 1743d31..a7651b8 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttAdvancedParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAdvancedParityTests.cs @@ -12,8 +12,9 @@ using System.Net; using System.Net.Sockets; using System.Text; using NATS.Server.Mqtt; +using NATS.Server.TestUtilities; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttAdvancedParityTests { @@ -763,10 +764,22 @@ public class MqttAdvancedParityTests // Disconnect client.Dispose(); - // Server should not crash - await Task.Delay(100); + // Verify server is still operational by polling until it accepts a new connection + var connected = await PollHelper.WaitUntilAsync(async () => + { + try + { + using var probe = new TcpClient(); + await probe.ConnectAsync(IPAddress.Loopback, listener.Port); + return true; + } + catch + { + return false; + } + }, timeoutMs: 2000, intervalMs: 10); + connected.ShouldBeTrue("Server should still accept connections after client disconnect"); - // Verify server is still operational using var client2 = new TcpClient(); await client2.ConnectAsync(IPAddress.Loopback, listener.Port); var s2 = client2.GetStream(); diff --git a/tests/NATS.Server.Tests/Mqtt/MqttAuthIntegrationTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAuthIntegrationTests.cs similarity index 95% rename from tests/NATS.Server.Tests/Mqtt/MqttAuthIntegrationTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAuthIntegrationTests.cs index b315908..24d2535 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttAuthIntegrationTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAuthIntegrationTests.cs @@ -2,7 +2,7 @@ using System.Net; using System.Net.Sockets; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttAuthIntegrationTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttAuthParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAuthParityTests.cs similarity index 96% rename from tests/NATS.Server.Tests/Mqtt/MqttAuthParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAuthParityTests.cs index 638a298..277594a 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttAuthParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttAuthParityTests.cs @@ -9,8 +9,9 @@ using System.Net.Sockets; using System.Text; using NATS.Server.Auth; using NATS.Server.Mqtt; +using NATS.Server.TestUtilities; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttAuthParityTests { @@ -202,10 +203,13 @@ public class MqttAuthParityTests await MqttAuthWire.WriteLineAsync(stream, "CONNECT keepalive-client clean=true keepalive=1"); (await MqttAuthWire.ReadLineAsync(stream, 1000)).ShouldBe("CONNACK"); - await Task.Delay(2500); - - var result = await MqttAuthWire.ReadRawAsync(stream, 500); - (result == null || result == "__timeout__").ShouldBeTrue(); + // Poll until the server closes the connection due to keepalive expiry (keepalive=1s) + var disconnected = await PollHelper.WaitUntilAsync(async () => + { + var result = await MqttAuthWire.ReadRawAsync(stream, 200); + return result == null || result == "__timeout__"; + }, timeoutMs: 5000, intervalMs: 100); + disconnected.ShouldBeTrue("Server should disconnect idle client after keepalive timeout"); } // ========================================================================= diff --git a/tests/NATS.Server.Tests/Mqtt/MqttBinaryParserTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttBinaryParserTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttBinaryParserTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttBinaryParserTests.cs index 32b1973..ed610ef 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttBinaryParserTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttBinaryParserTests.cs @@ -8,7 +8,7 @@ using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttBinaryParserTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttFlapperDetectionTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttFlapperDetectionTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttFlapperDetectionTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttFlapperDetectionTests.cs index 4525be7..0a96555 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttFlapperDetectionTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttFlapperDetectionTests.cs @@ -4,7 +4,7 @@ using NATS.Server.Mqtt; using Shouldly; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttFlapperDetectionTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttFlowControllerTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttFlowControllerTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttFlowControllerTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttFlowControllerTests.cs index 534577b..369eedb 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttFlowControllerTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttFlowControllerTests.cs @@ -3,7 +3,7 @@ using NATS.Server.Mqtt; using Shouldly; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public sealed class MqttFlowControllerTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttGoParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttGoParityTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttGoParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttGoParityTests.cs index a90cdab..ba4b5d2 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttGoParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttGoParityTests.cs @@ -8,7 +8,7 @@ using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; /// /// Parity tests ported from Go server/mqtt_test.go exercising MQTT binary diff --git a/tests/NATS.Server.Tests/Mqtt/MqttKeepAliveTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttKeepAliveTests.cs similarity index 59% rename from tests/NATS.Server.Tests/Mqtt/MqttKeepAliveTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttKeepAliveTests.cs index d57954a..81b5805 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttKeepAliveTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttKeepAliveTests.cs @@ -1,8 +1,9 @@ using System.Net; using System.Net.Sockets; using NATS.Server.Mqtt; +using NATS.Server.TestUtilities; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttKeepAliveTests { @@ -20,7 +21,12 @@ public class MqttKeepAliveTests await MqttRuntimeWire.WriteLineAsync(stream, "CONNECT keepalive-client keepalive=1"); (await MqttRuntimeWire.ReadLineAsync(stream, 1000)).ShouldBe("CONNACK"); - await Task.Delay(2000); - (await MqttRuntimeWire.ReadRawAsync(stream, 1000)).ShouldBeNull(); + // Poll until the server closes the connection due to keepalive expiry (keepalive=1s) + var disconnected = await PollHelper.WaitUntilAsync(async () => + { + var result = await MqttRuntimeWire.ReadRawAsync(stream, 200); + return result == null; + }, timeoutMs: 5000, intervalMs: 100); + disconnected.ShouldBeTrue("Server should disconnect idle client after keepalive timeout"); } } diff --git a/tests/NATS.Server.Tests/Mqtt/MqttListenerParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttListenerParityTests.cs similarity index 98% rename from tests/NATS.Server.Tests/Mqtt/MqttListenerParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttListenerParityTests.cs index 69167e3..2caf700 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttListenerParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttListenerParityTests.cs @@ -3,7 +3,7 @@ using System.Net.Sockets; using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests; +namespace NATS.Server.Mqtt.Tests; public class MqttListenerParityTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttModelParityBatch3Tests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttModelParityBatch3Tests.cs similarity index 98% rename from tests/NATS.Server.Tests/Mqtt/MqttModelParityBatch3Tests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttModelParityBatch3Tests.cs index c1a8762..8ec9095 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttModelParityBatch3Tests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttModelParityBatch3Tests.cs @@ -1,6 +1,6 @@ using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttModelParityBatch3Tests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttPacketParserTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketParserTests.cs similarity index 95% rename from tests/NATS.Server.Tests/Mqtt/MqttPacketParserTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketParserTests.cs index 3b9c814..dd36b9c 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttPacketParserTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketParserTests.cs @@ -1,6 +1,6 @@ using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttPacketParserTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttPacketParsingParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketParsingParityTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttPacketParsingParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketParsingParityTests.cs index 88c3777..df4fed6 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttPacketParsingParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketParsingParityTests.cs @@ -5,7 +5,7 @@ using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttPacketParsingParityTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttPacketWriterTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketWriterTests.cs similarity index 94% rename from tests/NATS.Server.Tests/Mqtt/MqttPacketWriterTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketWriterTests.cs index b5ac4ff..1ae616d 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttPacketWriterTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPacketWriterTests.cs @@ -1,6 +1,6 @@ using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttPacketWriterTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttProtocolConstantsParityBatch1Tests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttProtocolConstantsParityBatch1Tests.cs similarity index 98% rename from tests/NATS.Server.Tests/Mqtt/MqttProtocolConstantsParityBatch1Tests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttProtocolConstantsParityBatch1Tests.cs index 2376ffa..ed27a25 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttProtocolConstantsParityBatch1Tests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttProtocolConstantsParityBatch1Tests.cs @@ -1,7 +1,7 @@ using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttProtocolConstantsParityBatch1Tests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttProtocolConstantsParityBatch2Tests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttProtocolConstantsParityBatch2Tests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttProtocolConstantsParityBatch2Tests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttProtocolConstantsParityBatch2Tests.cs index cb109fa..8e94695 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttProtocolConstantsParityBatch2Tests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttProtocolConstantsParityBatch2Tests.cs @@ -1,7 +1,7 @@ using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttProtocolConstantsParityBatch2Tests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttPublishSubscribeParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPublishSubscribeParityTests.cs similarity index 97% rename from tests/NATS.Server.Tests/Mqtt/MqttPublishSubscribeParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPublishSubscribeParityTests.cs index 64def53..f8832c9 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttPublishSubscribeParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttPublishSubscribeParityTests.cs @@ -2,7 +2,7 @@ using System.Net; using System.Net.Sockets; using NATS.Server.Mqtt; -namespace NATS.Server.Tests; +namespace NATS.Server.Mqtt.Tests; public class MqttPublishSubscribeParityTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttQoSTrackingTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQoSTrackingTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttQoSTrackingTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQoSTrackingTests.cs index 0ca8676..a4c6fe8 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttQoSTrackingTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQoSTrackingTests.cs @@ -4,7 +4,7 @@ using NATS.Server.Mqtt; using Shouldly; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public sealed class MqttQoSTrackingTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttQosAckRuntimeTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosAckRuntimeTests.cs similarity index 95% rename from tests/NATS.Server.Tests/Mqtt/MqttQosAckRuntimeTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosAckRuntimeTests.cs index b792dfa..2e09ab9 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttQosAckRuntimeTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosAckRuntimeTests.cs @@ -2,7 +2,7 @@ using System.Net; using System.Net.Sockets; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttQosAckRuntimeTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttQosDeliveryParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosDeliveryParityTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttQosDeliveryParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosDeliveryParityTests.cs index 1cd1cb0..0aa20c0 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttQosDeliveryParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosDeliveryParityTests.cs @@ -6,7 +6,7 @@ using System.Net.Sockets; using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttQosDeliveryParityTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttQosTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttQosTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosTests.cs index 9d893bf..486a2cb 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttQosTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttQosTests.cs @@ -6,7 +6,7 @@ using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttQosTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttRetainedDeliveryTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttRetainedDeliveryTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttRetainedDeliveryTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttRetainedDeliveryTests.cs index c5df2a4..7b51937 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttRetainedDeliveryTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttRetainedDeliveryTests.cs @@ -6,7 +6,7 @@ using System.Text; using NATS.Server.Mqtt; using Shouldly; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttRetainedDeliveryTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttRetainedMessageParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttRetainedMessageParityTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttRetainedMessageParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttRetainedMessageParityTests.cs index a518e16..7cd911b 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttRetainedMessageParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttRetainedMessageParityTests.cs @@ -8,7 +8,7 @@ using System.Net.Sockets; using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttRetainedMessageParityTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttSessionParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionParityTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttSessionParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionParityTests.cs index 1e55aaf..6cdf5a1 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttSessionParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionParityTests.cs @@ -7,7 +7,7 @@ using System.Net.Sockets; using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttSessionParityTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttSessionPersistenceTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionPersistenceTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttSessionPersistenceTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionPersistenceTests.cs index 711d991..fc370f0 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttSessionPersistenceTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionPersistenceTests.cs @@ -5,7 +5,7 @@ using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttSessionPersistenceTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttSessionRuntimeTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionRuntimeTests.cs similarity index 98% rename from tests/NATS.Server.Tests/Mqtt/MqttSessionRuntimeTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionRuntimeTests.cs index d3ecbcb..a14cc51 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttSessionRuntimeTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttSessionRuntimeTests.cs @@ -3,7 +3,7 @@ using System.Net.Sockets; using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttSessionRuntimeTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttTopicMappingParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttTopicMappingParityTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttTopicMappingParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttTopicMappingParityTests.cs index b09e8b9..9b39d33 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttTopicMappingParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttTopicMappingParityTests.cs @@ -4,7 +4,7 @@ // golang/nats-server/server/mqtt.go — mqttTopicToNATSPubSubject, mqttFilterToNATSSubject, // natsSubjectToMQTTTopic, mqttToNATSSubjectConversion -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; /// /// Tests MQTT topic to NATS subject conversion and vice versa, porting the diff --git a/tests/NATS.Server.Tests/Mqtt/MqttWillMessageParityTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttWillMessageParityTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttWillMessageParityTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttWillMessageParityTests.cs index 22b5df4..90a970f 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttWillMessageParityTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttWillMessageParityTests.cs @@ -7,7 +7,7 @@ using System.Net.Sockets; using System.Text; using NATS.Server.Mqtt; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttWillMessageParityTests { diff --git a/tests/NATS.Server.Tests/Mqtt/MqttWillMessageTests.cs b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttWillMessageTests.cs similarity index 99% rename from tests/NATS.Server.Tests/Mqtt/MqttWillMessageTests.cs rename to tests/NATS.Server.Mqtt.Tests/Mqtt/MqttWillMessageTests.cs index 56ef0ba..9de1340 100644 --- a/tests/NATS.Server.Tests/Mqtt/MqttWillMessageTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/Mqtt/MqttWillMessageTests.cs @@ -5,7 +5,7 @@ using NATS.Server.Mqtt; using Shouldly; -namespace NATS.Server.Tests.Mqtt; +namespace NATS.Server.Mqtt.Tests.Mqtt; public class MqttWillMessageTests { diff --git a/tests/NATS.Server.Tests/MqttPersistenceTests.cs b/tests/NATS.Server.Mqtt.Tests/MqttPersistenceTests.cs similarity index 98% rename from tests/NATS.Server.Tests/MqttPersistenceTests.cs rename to tests/NATS.Server.Mqtt.Tests/MqttPersistenceTests.cs index 477c5a7..e78ad54 100644 --- a/tests/NATS.Server.Tests/MqttPersistenceTests.cs +++ b/tests/NATS.Server.Mqtt.Tests/MqttPersistenceTests.cs @@ -2,7 +2,7 @@ using NSubstitute; using NATS.Server.JetStream.Storage; using NATS.Server.Mqtt; -namespace NATS.Server.Tests; +namespace NATS.Server.Mqtt.Tests; // Go reference: server/mqtt.go ($MQTT_msgs, $MQTT_sess, $MQTT_rmsgs JetStream streams) diff --git a/tests/NATS.Server.Mqtt.Tests/NATS.Server.Mqtt.Tests.csproj b/tests/NATS.Server.Mqtt.Tests/NATS.Server.Mqtt.Tests.csproj new file mode 100644 index 0000000..81a4151 --- /dev/null +++ b/tests/NATS.Server.Mqtt.Tests/NATS.Server.Mqtt.Tests.csproj @@ -0,0 +1,25 @@ + + + false + + + + + + + + + + + + + + + + + + + + + +