diff --git a/NatsDotNet.slnx b/NatsDotNet.slnx
index 657789f..23becec 100644
--- a/NatsDotNet.slnx
+++ b/NatsDotNet.slnx
@@ -8,6 +8,7 @@
+
diff --git a/src/NATS.Server/NATS.Server.csproj b/src/NATS.Server/NATS.Server.csproj
index 91b5087..e0b9a71 100644
--- a/src/NATS.Server/NATS.Server.csproj
+++ b/src/NATS.Server/NATS.Server.csproj
@@ -3,6 +3,7 @@
+
diff --git a/tests/NATS.Server.Tests/GatewayAdvancedRemapRuntimeTests.cs b/tests/NATS.Server.Gateways.Tests/GatewayAdvancedRemapRuntimeTests.cs
similarity index 93%
rename from tests/NATS.Server.Tests/GatewayAdvancedRemapRuntimeTests.cs
rename to tests/NATS.Server.Gateways.Tests/GatewayAdvancedRemapRuntimeTests.cs
index 36ce481..3d2b066 100644
--- a/tests/NATS.Server.Tests/GatewayAdvancedRemapRuntimeTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/GatewayAdvancedRemapRuntimeTests.cs
@@ -1,6 +1,6 @@
using NATS.Server.Gateways;
-namespace NATS.Server.Tests;
+namespace NATS.Server.Gateways.Tests;
public class GatewayAdvancedRemapRuntimeTests
{
diff --git a/tests/NATS.Server.Tests/GatewayAdvancedSemanticsTests.cs b/tests/NATS.Server.Gateways.Tests/GatewayAdvancedSemanticsTests.cs
similarity index 93%
rename from tests/NATS.Server.Tests/GatewayAdvancedSemanticsTests.cs
rename to tests/NATS.Server.Gateways.Tests/GatewayAdvancedSemanticsTests.cs
index a9bd53d..a5ab7c0 100644
--- a/tests/NATS.Server.Tests/GatewayAdvancedSemanticsTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/GatewayAdvancedSemanticsTests.cs
@@ -1,6 +1,6 @@
using NATS.Server.Gateways;
-namespace NATS.Server.Tests;
+namespace NATS.Server.Gateways.Tests;
public class GatewayAdvancedSemanticsTests
{
diff --git a/tests/NATS.Server.Gateways.Tests/GatewayLeafBootstrapTests.cs b/tests/NATS.Server.Gateways.Tests/GatewayLeafBootstrapTests.cs
new file mode 100644
index 0000000..9811ff9
--- /dev/null
+++ b/tests/NATS.Server.Gateways.Tests/GatewayLeafBootstrapTests.cs
@@ -0,0 +1,45 @@
+using Microsoft.Extensions.Logging.Abstractions;
+using NATS.Server.Configuration;
+
+namespace NATS.Server.Gateways.Tests;
+
+public class GatewayLeafBootstrapTests
+{
+ [Fact]
+ public async Task Server_bootstraps_gateway_and_leaf_managers_when_configured()
+ {
+ var options = new NatsOptions
+ {
+ Host = "127.0.0.1",
+ Port = 0,
+ Gateway = new GatewayOptions
+ {
+ Name = "G1",
+ Host = "127.0.0.1",
+ Port = 0,
+ },
+ LeafNode = new LeafNodeOptions
+ {
+ Host = "127.0.0.1",
+ Port = 0,
+ },
+ };
+
+ var server = new NatsServer(options, NullLoggerFactory.Instance);
+ var cts = new CancellationTokenSource();
+ _ = server.StartAsync(cts.Token);
+ await server.WaitForReadyAsync();
+
+ try
+ {
+ server.Stats.Gateways.ShouldBeGreaterThanOrEqualTo(0);
+ server.Stats.Leafs.ShouldBeGreaterThanOrEqualTo(0);
+ }
+ finally
+ {
+ await cts.CancelAsync();
+ server.Dispose();
+ cts.Dispose();
+ }
+ }
+}
diff --git a/tests/NATS.Server.Tests/GatewayProtocolTests.cs b/tests/NATS.Server.Gateways.Tests/GatewayProtocolTests.cs
similarity index 85%
rename from tests/NATS.Server.Tests/GatewayProtocolTests.cs
rename to tests/NATS.Server.Gateways.Tests/GatewayProtocolTests.cs
index c01efd7..901f128 100644
--- a/tests/NATS.Server.Tests/GatewayProtocolTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/GatewayProtocolTests.cs
@@ -3,8 +3,9 @@ using System.Net.Sockets;
using System.Text;
using Microsoft.Extensions.Logging.Abstractions;
using NATS.Server.Configuration;
+using NATS.Server.TestUtilities;
-namespace NATS.Server.Tests;
+namespace NATS.Server.Gateways.Tests;
public class GatewayProtocolTests
{
@@ -87,7 +88,7 @@ internal sealed class GatewayFixture : IAsyncDisposable
_ = await ReadLineAsync(sock); // INFO
await sock.SendAsync(Encoding.ASCII.GetBytes($"CONNECT {{}}\r\nSUB {subject} 1\r\nPING\r\n"));
- await ReadUntilAsync(sock, "PONG");
+ await SocketTestHelper.ReadUntilAsync(sock, "PONG");
}
public async Task PublishLocalClusterAsync(string subject, string payload)
@@ -100,11 +101,11 @@ internal sealed class GatewayFixture : IAsyncDisposable
_localPublisher = sock;
_ = await ReadLineAsync(sock); // INFO
await sock.SendAsync(Encoding.ASCII.GetBytes("CONNECT {}\r\nPING\r\n"));
- await ReadUntilAsync(sock, "PONG");
+ await SocketTestHelper.ReadUntilAsync(sock, "PONG");
}
await sock.SendAsync(Encoding.ASCII.GetBytes($"PUB {subject} {payload.Length}\r\n{payload}\r\nPING\r\n"));
- await ReadUntilAsync(sock, "PONG");
+ await SocketTestHelper.ReadUntilAsync(sock, "PONG");
}
public Task ReadRemoteClusterMessageAsync()
@@ -112,7 +113,7 @@ internal sealed class GatewayFixture : IAsyncDisposable
if (_remoteSubscriber == null)
throw new InvalidOperationException("Remote subscriber was not initialized.");
- return ReadUntilAsync(_remoteSubscriber, "MSG ");
+ return SocketTestHelper.ReadUntilAsync(_remoteSubscriber, "MSG ");
}
public async ValueTask DisposeAsync()
@@ -134,20 +135,4 @@ internal sealed class GatewayFixture : IAsyncDisposable
return Encoding.ASCII.GetString(buf, 0, n);
}
- private static async Task ReadUntilAsync(Socket sock, string expected)
- {
- var sb = new StringBuilder();
- var buf = new byte[4096];
- using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
-
- while (!sb.ToString().Contains(expected, StringComparison.Ordinal))
- {
- var n = await sock.ReceiveAsync(buf, SocketFlags.None, cts.Token);
- if (n == 0)
- break;
- sb.Append(Encoding.ASCII.GetString(buf, 0, n));
- }
-
- return sb.ToString();
- }
}
diff --git a/tests/NATS.Server.Tests/Gateways/AccountGatewayRoutesTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/AccountGatewayRoutesTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/AccountGatewayRoutesTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/AccountGatewayRoutesTests.cs
index 898a84a..934f168 100644
--- a/tests/NATS.Server.Tests/Gateways/AccountGatewayRoutesTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/AccountGatewayRoutesTests.cs
@@ -5,7 +5,7 @@ using System.Net.Sockets;
using NATS.Server.Gateways;
using Shouldly;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Unit tests for account-specific subscription tracking on GatewayConnection.
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayAccountScopedDeliveryTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayAccountScopedDeliveryTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayAccountScopedDeliveryTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayAccountScopedDeliveryTests.cs
index 2e13e52..d0b8d4b 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayAccountScopedDeliveryTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayAccountScopedDeliveryTests.cs
@@ -3,7 +3,7 @@ using NATS.Client.Core;
using NATS.Server.Auth;
using NATS.Server.Configuration;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
public class GatewayAccountScopedDeliveryTests
{
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayBasicTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayBasicTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayBasicTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayBasicTests.cs
index df9806f..c1cb027 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayBasicTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayBasicTests.cs
@@ -2,7 +2,7 @@ using Microsoft.Extensions.Logging.Abstractions;
using NATS.Client.Core;
using NATS.Server.Configuration;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Ports TestGatewayBasic and TestGatewayDoesntSendBackToItself from
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayCommandTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayCommandTests.cs
similarity index 98%
rename from tests/NATS.Server.Tests/Gateways/GatewayCommandTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayCommandTests.cs
index 1a03e73..f92e3e0 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayCommandTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayCommandTests.cs
@@ -2,7 +2,7 @@ using System.Text;
using NATS.Server.Gateways;
using Shouldly;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
// Go reference: gateway.go:90-120 — gateway protocol constants and command formatting.
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayConfigTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayConfigTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayConfigTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayConfigTests.cs
index 2722628..25395f6 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayConfigTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayConfigTests.cs
@@ -3,7 +3,7 @@ using NATS.Server.Configuration;
using NATS.Server.Gateways;
using NATS.Server.Monitoring;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Gateway configuration validation, options parsing, monitoring endpoint,
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayConnectionDirectionParityBatch2Tests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayConnectionDirectionParityBatch2Tests.cs
similarity index 98%
rename from tests/NATS.Server.Tests/Gateways/GatewayConnectionDirectionParityBatch2Tests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayConnectionDirectionParityBatch2Tests.cs
index ddc3104..4205868 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayConnectionDirectionParityBatch2Tests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayConnectionDirectionParityBatch2Tests.cs
@@ -1,7 +1,7 @@
using Microsoft.Extensions.Logging.Abstractions;
using NATS.Server.Configuration;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
public class GatewayConnectionDirectionParityBatch2Tests
{
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayConnectionTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayConnectionTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayConnectionTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayConnectionTests.cs
index 528b202..d054a90 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayConnectionTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayConnectionTests.cs
@@ -7,7 +7,7 @@ using NATS.Server.Configuration;
using NATS.Server.Gateways;
using NATS.Server.Subscriptions;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Gateway connection establishment, handshake, lifecycle, and reconnection tests.
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayForwardingTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayForwardingTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayForwardingTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayForwardingTests.cs
index 3cac958..a37d10f 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayForwardingTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayForwardingTests.cs
@@ -8,7 +8,7 @@ using NATS.Server.Configuration;
using NATS.Server.Gateways;
using NATS.Server.Subscriptions;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Gateway message forwarding, reply mapping, queue subscription delivery,
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayGoParityTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayGoParityTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayGoParityTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayGoParityTests.cs
index f4ead8b..3b805bb 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayGoParityTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayGoParityTests.cs
@@ -7,7 +7,7 @@ using NATS.Server.Configuration;
using NATS.Server.Gateways;
using NATS.Server.Subscriptions;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Go-parity tests for gateway functionality, ported from
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayInterestIdempotencyTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestIdempotencyTests.cs
similarity index 98%
rename from tests/NATS.Server.Tests/Gateways/GatewayInterestIdempotencyTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestIdempotencyTests.cs
index dbe9150..c271d5c 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayInterestIdempotencyTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestIdempotencyTests.cs
@@ -4,7 +4,7 @@ using System.Text;
using NATS.Server.Gateways;
using NATS.Server.Subscriptions;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
public class GatewayInterestIdempotencyTests
{
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayInterestModeTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestModeTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayInterestModeTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestModeTests.cs
index 9c4a42b..a5ae49d 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayInterestModeTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestModeTests.cs
@@ -8,7 +8,7 @@ using NATS.Server.Configuration;
using NATS.Server.Gateways;
using NATS.Server.Subscriptions;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Gateway interest-only mode, account interest, subject interest propagation,
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayInterestOnlyParityTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestOnlyParityTests.cs
similarity index 93%
rename from tests/NATS.Server.Tests/Gateways/GatewayInterestOnlyParityTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestOnlyParityTests.cs
index 676ecf7..ad01094 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayInterestOnlyParityTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestOnlyParityTests.cs
@@ -1,7 +1,7 @@
using NATS.Server.Gateways;
using NATS.Server.Subscriptions;
-namespace NATS.Server.Tests;
+namespace NATS.Server.Gateways.Tests;
public class GatewayInterestOnlyParityTests
{
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayInterestTrackerTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestTrackerTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayInterestTrackerTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestTrackerTests.cs
index 06d8af6..b25d364 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayInterestTrackerTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayInterestTrackerTests.cs
@@ -1,7 +1,7 @@
// Go: gateway.go:100-150 (InterestMode enum), gateway.go:1500-1600 (switchToInterestOnlyMode)
using NATS.Server.Gateways;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Unit tests for GatewayInterestTracker — the per-connection interest mode state machine.
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayReconnectionTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayReconnectionTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayReconnectionTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayReconnectionTests.cs
index d779496..09eed42 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayReconnectionTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayReconnectionTests.cs
@@ -3,7 +3,7 @@ using NATS.Server.Configuration;
using NATS.Server.Gateways;
using Shouldly;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Tests for GatewayReconnectPolicy and GatewayManager reconnection tracking.
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayRegistrationTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayRegistrationTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/GatewayRegistrationTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayRegistrationTests.cs
index f7bc065..28148e9 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayRegistrationTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayRegistrationTests.cs
@@ -3,7 +3,7 @@ using NATS.Server.Configuration;
using NATS.Server.Gateways;
using Shouldly;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Tests for gateway connection registration and state tracking (Gap 11.7).
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayRemoteConfigParityBatch3Tests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayRemoteConfigParityBatch3Tests.cs
similarity index 97%
rename from tests/NATS.Server.Tests/Gateways/GatewayRemoteConfigParityBatch3Tests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayRemoteConfigParityBatch3Tests.cs
index 1f77535..12228cb 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayRemoteConfigParityBatch3Tests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayRemoteConfigParityBatch3Tests.cs
@@ -1,6 +1,6 @@
using NATS.Server.Configuration;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
public class GatewayRemoteConfigParityBatch3Tests
{
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayReplyAndConfigParityBatch1Tests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayReplyAndConfigParityBatch1Tests.cs
similarity index 98%
rename from tests/NATS.Server.Tests/Gateways/GatewayReplyAndConfigParityBatch1Tests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayReplyAndConfigParityBatch1Tests.cs
index 9a0cd77..bee8462 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayReplyAndConfigParityBatch1Tests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayReplyAndConfigParityBatch1Tests.cs
@@ -1,7 +1,7 @@
using NATS.Server.Configuration;
using NATS.Server.Gateways;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
public class GatewayReplyAndConfigParityBatch1Tests
{
diff --git a/tests/NATS.Server.Tests/Gateways/GatewayServerAccessorParityBatch4Tests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayServerAccessorParityBatch4Tests.cs
similarity index 95%
rename from tests/NATS.Server.Tests/Gateways/GatewayServerAccessorParityBatch4Tests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/GatewayServerAccessorParityBatch4Tests.cs
index a658bd7..3b37f05 100644
--- a/tests/NATS.Server.Tests/Gateways/GatewayServerAccessorParityBatch4Tests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/GatewayServerAccessorParityBatch4Tests.cs
@@ -1,7 +1,7 @@
using Microsoft.Extensions.Logging.Abstractions;
using NATS.Server.Configuration;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
public class GatewayServerAccessorParityBatch4Tests
{
diff --git a/tests/NATS.Server.Tests/Gateways/QueueGroupPropagationTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/QueueGroupPropagationTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/QueueGroupPropagationTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/QueueGroupPropagationTests.cs
index dc532a0..f4226c2 100644
--- a/tests/NATS.Server.Tests/Gateways/QueueGroupPropagationTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/QueueGroupPropagationTests.cs
@@ -3,7 +3,7 @@ using System.Net.Sockets;
using NATS.Server.Gateways;
using Shouldly;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Tests for queue group subscription tracking on GatewayConnection.
diff --git a/tests/NATS.Server.Tests/Gateways/ReplyMapCacheTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/ReplyMapCacheTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/ReplyMapCacheTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/ReplyMapCacheTests.cs
index 3c7ef33..ae6ddf9 100644
--- a/tests/NATS.Server.Tests/Gateways/ReplyMapCacheTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/ReplyMapCacheTests.cs
@@ -1,7 +1,7 @@
using NATS.Server.Gateways;
using Shouldly;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Tests for the ReplyMapCache LRU cache with TTL expiration.
diff --git a/tests/NATS.Server.Tests/Gateways/ReplyMapperFullTests.cs b/tests/NATS.Server.Gateways.Tests/Gateways/ReplyMapperFullTests.cs
similarity index 99%
rename from tests/NATS.Server.Tests/Gateways/ReplyMapperFullTests.cs
rename to tests/NATS.Server.Gateways.Tests/Gateways/ReplyMapperFullTests.cs
index e257793..f9e1067 100644
--- a/tests/NATS.Server.Tests/Gateways/ReplyMapperFullTests.cs
+++ b/tests/NATS.Server.Gateways.Tests/Gateways/ReplyMapperFullTests.cs
@@ -1,6 +1,6 @@
using NATS.Server.Gateways;
-namespace NATS.Server.Tests.Gateways;
+namespace NATS.Server.Gateways.Tests.Gateways;
///
/// Tests for the expanded ReplyMapper with hash support.
diff --git a/tests/NATS.Server.Gateways.Tests/NATS.Server.Gateways.Tests.csproj b/tests/NATS.Server.Gateways.Tests/NATS.Server.Gateways.Tests.csproj
new file mode 100644
index 0000000..81a4151
--- /dev/null
+++ b/tests/NATS.Server.Gateways.Tests/NATS.Server.Gateways.Tests.csproj
@@ -0,0 +1,25 @@
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/NATS.Server.Tests/GatewayLeafBootstrapTests.cs b/tests/NATS.Server.Tests/GatewayLeafBootstrapTests.cs
deleted file mode 100644
index 3a7e606..0000000
--- a/tests/NATS.Server.Tests/GatewayLeafBootstrapTests.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace NATS.Server.Tests;
-
-public class GatewayLeafBootstrapTests
-{
- [Fact]
- public async Task Server_bootstraps_gateway_and_leaf_managers_when_configured()
- {
- await using var server = await TestServerFactory.CreateWithGatewayAndLeafAsync();
- await server.WaitForReadyAsync();
-
- server.Stats.Gateways.ShouldBeGreaterThanOrEqualTo(0);
- server.Stats.Leafs.ShouldBeGreaterThanOrEqualTo(0);
- }
-}