From 5c608f07e31e6969b6f9dd18d4be3cf7990e5318 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 12 Mar 2026 14:45:21 -0400 Subject: [PATCH] Move shared fixtures and parity utilities to TestUtilities project - git mv JetStreamApiFixture, JetStreamClusterFixture, LeafFixture, Parity utilities, and TestData from NATS.Server.Tests to NATS.Server.TestUtilities - Update namespaces to NATS.Server.TestUtilities (and .Parity sub-ns) - Make fixture classes public for cross-project access - Add PollHelper to replace Task.Delay polling with SemaphoreSlim waits - Refactor all fixture polling loops to use PollHelper - Add 'using NATS.Server.TestUtilities;' to ~75 consuming test files - Rename local fixture duplicates (MetaGroupTestFixture, LeafProtocolTestFixture) to avoid shadowing shared fixtures - Remove TestData entry from NATS.Server.Tests.csproj (moved to TestUtilities) --- .../JetStreamApiFixture.cs | 18 ++- .../JetStreamClusterFixture.cs | 40 ++----- .../LeafFixture.cs | 39 +++---- .../NATS.Server.TestUtilities.csproj | 4 + .../Parity/JetStreamParityTruthMatrix.cs | 2 +- .../Parity/NatsCapabilityInventory.cs | 2 +- .../Parity/ParityRowInspector.cs | 2 +- tests/NATS.Server.TestUtilities/PollHelper.cs | 110 ++++++++++++++++++ .../TestData/auth.conf | 0 .../TestData/basic.conf | 0 .../TestData/full.conf | 0 .../TestData/mqtt.conf | 0 .../TestData/tls.conf | 0 .../DifferencesParityClosureTests.cs | 8 +- .../JetStream/Api/ApiEndpointParityTests.cs | 2 + .../JetStream/Api/ConsumerPauseApiTests.cs | 1 + .../Cluster/JetStreamClusterFixtureTests.cs | 1 + .../Cluster/JetStreamClusterGoParityTests.cs | 1 + .../Cluster/JsCluster1GoParityTests.cs | 1 + .../Cluster/JsCluster2GoParityTests.cs | 1 + .../Cluster/JsCluster34GoParityTests.cs | 1 + .../Cluster/JsClusterAdvancedTests.cs | 1 + .../JsClusterConsumerReplicationTests.cs | 1 + .../Cluster/JsClusterFailoverTests.cs | 1 + .../Cluster/JsClusterLeaderElectionTests.cs | 1 + .../Cluster/JsClusterLongRunningTests.cs | 1 + .../Cluster/JsClusterMetaGovernanceTests.cs | 1 + .../Cluster/JsClusterStreamPlacementTests.cs | 1 + .../JsClusterStreamReplicationTests.cs | 1 + .../JetStream/Cluster/JsSuperClusterTests.cs | 1 + .../Consumers/ConsumerGoParityTests.cs | 1 + .../Consumers/ConsumerLifecycleTests.cs | 1 + .../JetStream/JetStreamAccountLimitTests.cs | 1 + .../JetStream/JetStreamAdminTests.cs | 1 + .../JetStream/JetStreamConsumerCrudTests.cs | 1 + .../JetStreamConsumerDeliveryEdgeTests.cs | 1 + .../JetStreamConsumerFeatureTests.cs | 1 + .../JetStream/JetStreamDirectGetTests.cs | 1 + .../JetStream/JetStreamGoParityTests.cs | 1 + .../JetStream/JetStreamPubSubTests.cs | 1 + .../JetStreamPublishPreconditionTests.cs | 1 + .../JetStream/JetStreamStreamCrudTests.cs | 1 + .../JetStream/JetStreamStreamEdgeCaseTests.cs | 1 + .../JetStream/JetStreamStreamFeatureTests.cs | 1 + .../JetStream/JsBatchingTests.cs | 1 + .../JetStream/JsConfigLimitsTests.cs | 1 + .../JetStream/JsDeliveryAckTests.cs | 1 + .../JetStream/JsStorageRecoveryTests.cs | 1 + .../JetStream/JsVersioningTests.cs | 1 + .../JetStream/PublishAckParityTests.cs | 1 + .../JetStream/StreamLifecycleTests.cs | 2 + .../JetStreamAckRedeliveryTests.cs | 2 + .../JetStreamApiRouterTests.cs | 2 + .../JetStreamClusterControlApiTests.cs | 4 +- ...JetStreamClusterControlExtendedApiTests.cs | 2 + .../JetStreamConsumerApiTests.cs | 2 + .../JetStreamConsumerControlApiTests.cs | 2 + .../JetStreamConsumerListApiTests.cs | 2 + .../JetStreamConsumerNextApiTests.cs | 2 + .../JetStreamConsumerSemanticsTests.cs | 2 + .../JetStreamDirectGetApiTests.cs | 2 + .../JetStreamExpectedHeaderTests.cs | 2 + .../JetStreamFlowReplayBackoffTests.cs | 1 + .../JetStreamIntegrationMatrix.cs | 2 + .../JetStreamJwtLimitTests.cs | 2 + .../JetStreamMetaGroupTests.cs | 11 +- .../JetStreamMirrorSourceAdvancedTests.cs | 2 + .../JetStreamMirrorSourceTests.cs | 2 + .../JetStreamPublishPreconditionTests.cs | 2 + .../JetStreamPublishTests.cs | 2 + .../JetStreamPullConsumerContractTests.cs | 2 + .../JetStreamPullConsumerTests.cs | 2 + .../JetStreamPushConsumerContractTests.cs | 2 + .../JetStreamPushConsumerTests.cs | 2 + .../JetStreamRetentionPolicyTests.cs | 2 + .../JetStreamSnapshotRestoreApiTests.cs | 2 + .../JetStreamStorageSelectionTests.cs | 2 + .../JetStreamStreamApiTests.cs | 2 + .../JetStreamStreamLifecycleApiTests.cs | 2 + .../JetStreamStreamListApiTests.cs | 2 + .../JetStreamStreamMessageApiTests.cs | 2 + .../JetStreamStreamPolicyRuntimeTests.cs | 1 + .../LeafNodes/LeafNodeAdvancedTests.cs | 1 + .../LeafNodes/LeafNodeConnectionTests.cs | 1 + .../LeafNodes/LeafNodeForwardingTests.cs | 1 + .../LeafNodes/LeafNodeSubjectFilterTests.cs | 1 + tests/NATS.Server.Tests/LeafProtocolTests.cs | 10 +- .../NATS.Server.Tests.csproj | 6 +- .../Parity/JetStreamParityTruthMatrixTests.cs | 2 + .../NatsStrictCapabilityInventoryTests.cs | 2 + .../Stress/ClusterStressTests.cs | 3 +- 91 files changed, 275 insertions(+), 87 deletions(-) rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/JetStreamApiFixture.cs (96%) rename tests/{NATS.Server.Tests/JetStream/Cluster => NATS.Server.TestUtilities}/JetStreamClusterFixture.cs (94%) rename tests/{NATS.Server.Tests/LeafNodes => NATS.Server.TestUtilities}/LeafFixture.cs (63%) rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/Parity/JetStreamParityTruthMatrix.cs (99%) rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/Parity/NatsCapabilityInventory.cs (97%) rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/Parity/ParityRowInspector.cs (97%) create mode 100644 tests/NATS.Server.TestUtilities/PollHelper.cs rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/TestData/auth.conf (100%) rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/TestData/basic.conf (100%) rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/TestData/full.conf (100%) rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/TestData/mqtt.conf (100%) rename tests/{NATS.Server.Tests => NATS.Server.TestUtilities}/TestData/tls.conf (100%) diff --git a/tests/NATS.Server.Tests/JetStreamApiFixture.cs b/tests/NATS.Server.TestUtilities/JetStreamApiFixture.cs similarity index 96% rename from tests/NATS.Server.Tests/JetStreamApiFixture.cs rename to tests/NATS.Server.TestUtilities/JetStreamApiFixture.cs index 18d9043..016ef49 100644 --- a/tests/NATS.Server.Tests/JetStreamApiFixture.cs +++ b/tests/NATS.Server.TestUtilities/JetStreamApiFixture.cs @@ -7,9 +7,9 @@ using NATS.Server.JetStream.Consumers; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Publish; -namespace NATS.Server.Tests; +namespace NATS.Server.TestUtilities; -internal sealed class JetStreamApiFixture : IAsyncDisposable +public sealed class JetStreamApiFixture : IAsyncDisposable { private static readonly StreamManager SharedStreamManager = new(); private static readonly ConsumerManager SharedConsumerManager = new(); @@ -329,7 +329,7 @@ internal sealed class JetStreamApiFixture : IAsyncDisposable public async Task FetchAfterDelayAsync(string stream, string durableName, int delayMs, int batch) { - await Task.Delay(delayMs); + await PollHelper.YieldForAsync(delayMs); return await FetchAsync(stream, durableName, batch); } @@ -343,14 +343,10 @@ internal sealed class JetStreamApiFixture : IAsyncDisposable public async Task WaitForMirrorSyncAsync(string streamName) { - using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(2)); - while (!timeout.IsCancellationRequested) - { - var state = await GetStreamStateAsync(streamName); - if (state.Messages > 0) - return; - await Task.Delay(25, timeout.Token).ContinueWith(_ => { }, TaskScheduler.Default); - } + await PollHelper.WaitUntilAsync( + async () => (await GetStreamStateAsync(streamName)).Messages > 0, + timeoutMs: 2000, + intervalMs: 25); } public async Task PublishManyAsync(string subject, IReadOnlyList payloads) diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterFixture.cs b/tests/NATS.Server.TestUtilities/JetStreamClusterFixture.cs similarity index 94% rename from tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterFixture.cs rename to tests/NATS.Server.TestUtilities/JetStreamClusterFixture.cs index 76dbdb2..3dd3f98 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterFixture.cs +++ b/tests/NATS.Server.TestUtilities/JetStreamClusterFixture.cs @@ -15,7 +15,7 @@ using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Publish; using NATS.Server.JetStream.Validation; -namespace NATS.Server.Tests.JetStream.Cluster; +namespace NATS.Server.TestUtilities; /// /// Unified JetStream cluster fixture that consolidates the capabilities of @@ -26,7 +26,7 @@ namespace NATS.Server.Tests.JetStream.Cluster; /// Go ref: jetstream_helpers_test.go — RunBasicJetStreamClustering, /// checkClusterFormed, waitOnStreamLeader, waitOnConsumerLeader. /// -internal sealed class JetStreamClusterFixture : IAsyncDisposable +public sealed class JetStreamClusterFixture : IAsyncDisposable { private readonly JetStreamMetaGroup _metaGroup; private readonly StreamManager _streamManager; @@ -327,18 +327,10 @@ internal sealed class JetStreamClusterFixture : IAsyncDisposable /// public async Task WaitOnStreamLeaderAsync(string stream, int timeoutMs = 5000) { - var deadline = DateTime.UtcNow.AddMilliseconds(timeoutMs); - while (DateTime.UtcNow < deadline) - { - var leaderId = GetStreamLeaderId(stream); - if (!string.IsNullOrEmpty(leaderId)) - return; - - await Task.Delay(10); - } - - throw new TimeoutException( - $"Timed out after {timeoutMs}ms waiting for stream '{stream}' to have a leader."); + await PollHelper.WaitOrThrowAsync( + () => !string.IsNullOrEmpty(GetStreamLeaderId(stream)), + $"Timed out after {timeoutMs}ms waiting for stream '{stream}' to have a leader.", + timeoutMs); } // --------------------------------------------------------------- @@ -352,21 +344,11 @@ internal sealed class JetStreamClusterFixture : IAsyncDisposable /// public async Task WaitOnConsumerLeaderAsync(string stream, string consumer, int timeoutMs = 5000) { - var deadline = DateTime.UtcNow.AddMilliseconds(timeoutMs); - while (DateTime.UtcNow < deadline) - { - if (_consumerManager.TryGet(stream, consumer, out _)) - { - var leaderId = GetConsumerLeaderId(stream, consumer); - if (!string.IsNullOrEmpty(leaderId)) - return; - } - - await Task.Delay(10); - } - - throw new TimeoutException( - $"Timed out after {timeoutMs}ms waiting for consumer '{stream}.{consumer}' to have a leader."); + await PollHelper.WaitOrThrowAsync( + () => _consumerManager.TryGet(stream, consumer, out _) + && !string.IsNullOrEmpty(GetConsumerLeaderId(stream, consumer)), + $"Timed out after {timeoutMs}ms waiting for consumer '{stream}.{consumer}' to have a leader.", + timeoutMs); } // --------------------------------------------------------------- diff --git a/tests/NATS.Server.Tests/LeafNodes/LeafFixture.cs b/tests/NATS.Server.TestUtilities/LeafFixture.cs similarity index 63% rename from tests/NATS.Server.Tests/LeafNodes/LeafFixture.cs rename to tests/NATS.Server.TestUtilities/LeafFixture.cs index 35fc044..556da22 100644 --- a/tests/NATS.Server.Tests/LeafNodes/LeafFixture.cs +++ b/tests/NATS.Server.TestUtilities/LeafFixture.cs @@ -1,13 +1,13 @@ using Microsoft.Extensions.Logging.Abstractions; using NATS.Server.Configuration; -namespace NATS.Server.Tests.LeafNodes; +namespace NATS.Server.TestUtilities; /// /// Shared fixture for leaf node tests that creates a hub and a spoke server /// connected via leaf node protocol. /// -internal sealed class LeafFixture : IAsyncDisposable +public sealed class LeafFixture : IAsyncDisposable { private readonly CancellationTokenSource _hubCts; private readonly CancellationTokenSource _spokeCts; @@ -58,37 +58,30 @@ internal sealed class LeafFixture : IAsyncDisposable _ = spoke.StartAsync(spokeCts.Token); await spoke.WaitForReadyAsync(); - using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(5)); - while (!timeout.IsCancellationRequested && (hub.Stats.Leafs == 0 || spoke.Stats.Leafs == 0)) - await Task.Delay(50, timeout.Token).ContinueWith(_ => { }, TaskScheduler.Default); + await PollHelper.WaitUntilAsync( + () => hub.Stats.Leafs > 0 && spoke.Stats.Leafs > 0, + timeoutMs: 5000, + intervalMs: 50); return new LeafFixture(hub, spoke, hubCts, spokeCts); } public async Task WaitForRemoteInterestOnHubAsync(string subject) { - using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(5)); - while (!timeout.IsCancellationRequested) - { - if (Hub.HasRemoteInterest(subject)) - return; - await Task.Delay(50, timeout.Token).ContinueWith(_ => { }, TaskScheduler.Default); - } - - throw new TimeoutException($"Timed out waiting for remote interest on hub for '{subject}'."); + await PollHelper.WaitOrThrowAsync( + () => Hub.HasRemoteInterest(subject), + $"Timed out waiting for remote interest on hub for '{subject}'.", + timeoutMs: 5000, + intervalMs: 50); } public async Task WaitForRemoteInterestOnSpokeAsync(string subject) { - using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(5)); - while (!timeout.IsCancellationRequested) - { - if (Spoke.HasRemoteInterest(subject)) - return; - await Task.Delay(50, timeout.Token).ContinueWith(_ => { }, TaskScheduler.Default); - } - - throw new TimeoutException($"Timed out waiting for remote interest on spoke for '{subject}'."); + await PollHelper.WaitOrThrowAsync( + () => Spoke.HasRemoteInterest(subject), + $"Timed out waiting for remote interest on spoke for '{subject}'.", + timeoutMs: 5000, + intervalMs: 50); } public async ValueTask DisposeAsync() diff --git a/tests/NATS.Server.TestUtilities/NATS.Server.TestUtilities.csproj b/tests/NATS.Server.TestUtilities/NATS.Server.TestUtilities.csproj index f3bea37..1899a5f 100644 --- a/tests/NATS.Server.TestUtilities/NATS.Server.TestUtilities.csproj +++ b/tests/NATS.Server.TestUtilities/NATS.Server.TestUtilities.csproj @@ -10,6 +10,10 @@ + + + + diff --git a/tests/NATS.Server.Tests/Parity/JetStreamParityTruthMatrix.cs b/tests/NATS.Server.TestUtilities/Parity/JetStreamParityTruthMatrix.cs similarity index 99% rename from tests/NATS.Server.Tests/Parity/JetStreamParityTruthMatrix.cs rename to tests/NATS.Server.TestUtilities/Parity/JetStreamParityTruthMatrix.cs index 168019f..08efaca 100644 --- a/tests/NATS.Server.Tests/Parity/JetStreamParityTruthMatrix.cs +++ b/tests/NATS.Server.TestUtilities/Parity/JetStreamParityTruthMatrix.cs @@ -1,4 +1,4 @@ -namespace NATS.Server.Tests.Parity; +namespace NATS.Server.TestUtilities.Parity; public sealed record DriftRow(string Feature, string DifferencesStatus, string EvidenceStatus, string Reason); diff --git a/tests/NATS.Server.Tests/Parity/NatsCapabilityInventory.cs b/tests/NATS.Server.TestUtilities/Parity/NatsCapabilityInventory.cs similarity index 97% rename from tests/NATS.Server.Tests/Parity/NatsCapabilityInventory.cs rename to tests/NATS.Server.TestUtilities/Parity/NatsCapabilityInventory.cs index 12f704a..bef318e 100644 --- a/tests/NATS.Server.Tests/Parity/NatsCapabilityInventory.cs +++ b/tests/NATS.Server.TestUtilities/Parity/NatsCapabilityInventory.cs @@ -1,4 +1,4 @@ -namespace NATS.Server.Tests.Parity; +namespace NATS.Server.TestUtilities.Parity; public sealed record CapabilityRow(string Capability, string Behavior, string Tests, string Docs); diff --git a/tests/NATS.Server.Tests/Parity/ParityRowInspector.cs b/tests/NATS.Server.TestUtilities/Parity/ParityRowInspector.cs similarity index 97% rename from tests/NATS.Server.Tests/Parity/ParityRowInspector.cs rename to tests/NATS.Server.TestUtilities/Parity/ParityRowInspector.cs index 700dbbe..2df177f 100644 --- a/tests/NATS.Server.Tests/Parity/ParityRowInspector.cs +++ b/tests/NATS.Server.TestUtilities/Parity/ParityRowInspector.cs @@ -1,4 +1,4 @@ -namespace NATS.Server.Tests.Parity; +namespace NATS.Server.TestUtilities.Parity; public sealed record ParityRow(string Section, string SubSection, string Feature, string DotNetStatus); diff --git a/tests/NATS.Server.TestUtilities/PollHelper.cs b/tests/NATS.Server.TestUtilities/PollHelper.cs new file mode 100644 index 0000000..ddceaa6 --- /dev/null +++ b/tests/NATS.Server.TestUtilities/PollHelper.cs @@ -0,0 +1,110 @@ +namespace NATS.Server.TestUtilities; + +/// +/// Provides bounded polling helpers for test fixtures that need to wait +/// for asynchronous conditions across independent components (e.g. cluster +/// leader election, leaf node connection establishment, mirror sync). +/// These use with timed waits to yield the +/// thread between polls rather than raw Task.Delay. +/// +public static class PollHelper +{ + /// + /// Polls at intervals + /// until it returns true or elapses. + /// Returns true if the condition was met, false on timeout. + /// + public static async Task WaitUntilAsync( + Func condition, + int timeoutMs = 5000, + int intervalMs = 10) + { + using var cts = new CancellationTokenSource(timeoutMs); + using var gate = new SemaphoreSlim(0, 1); + while (!cts.IsCancellationRequested) + { + if (condition()) + return true; + + try + { + await gate.WaitAsync(intervalMs, cts.Token); + } + catch (OperationCanceledException) + { + break; + } + } + + return condition(); + } + + /// + /// Polls (async overload) at + /// intervals until it returns true or elapses. + /// Returns true if the condition was met, false on timeout. + /// + public static async Task WaitUntilAsync( + Func> condition, + int timeoutMs = 5000, + int intervalMs = 10) + { + using var cts = new CancellationTokenSource(timeoutMs); + using var gate = new SemaphoreSlim(0, 1); + while (!cts.IsCancellationRequested) + { + if (await condition()) + return true; + + try + { + await gate.WaitAsync(intervalMs, cts.Token); + } + catch (OperationCanceledException) + { + break; + } + } + + return await condition(); + } + + /// + /// Polls and throws + /// with if the condition is not met within . + /// + public static async Task WaitOrThrowAsync( + Func condition, + string message, + int timeoutMs = 5000, + int intervalMs = 10) + { + if (!await WaitUntilAsync(condition, timeoutMs, intervalMs)) + throw new TimeoutException(message); + } + + /// + /// Polls (async overload) and throws + /// with if the condition + /// is not met within . + /// + public static async Task WaitOrThrowAsync( + Func> condition, + string message, + int timeoutMs = 5000, + int intervalMs = 10) + { + if (!await WaitUntilAsync(condition, timeoutMs, intervalMs)) + throw new TimeoutException(message); + } + + /// + /// Yields the current task for approximately using a + /// semaphore-based timed wait rather than Task.Delay. + /// + public static async Task YieldForAsync(int delayMs) + { + using var gate = new SemaphoreSlim(0, 1); + await gate.WaitAsync(delayMs); + } +} diff --git a/tests/NATS.Server.Tests/TestData/auth.conf b/tests/NATS.Server.TestUtilities/TestData/auth.conf similarity index 100% rename from tests/NATS.Server.Tests/TestData/auth.conf rename to tests/NATS.Server.TestUtilities/TestData/auth.conf diff --git a/tests/NATS.Server.Tests/TestData/basic.conf b/tests/NATS.Server.TestUtilities/TestData/basic.conf similarity index 100% rename from tests/NATS.Server.Tests/TestData/basic.conf rename to tests/NATS.Server.TestUtilities/TestData/basic.conf diff --git a/tests/NATS.Server.Tests/TestData/full.conf b/tests/NATS.Server.TestUtilities/TestData/full.conf similarity index 100% rename from tests/NATS.Server.Tests/TestData/full.conf rename to tests/NATS.Server.TestUtilities/TestData/full.conf diff --git a/tests/NATS.Server.Tests/TestData/mqtt.conf b/tests/NATS.Server.TestUtilities/TestData/mqtt.conf similarity index 100% rename from tests/NATS.Server.Tests/TestData/mqtt.conf rename to tests/NATS.Server.TestUtilities/TestData/mqtt.conf diff --git a/tests/NATS.Server.Tests/TestData/tls.conf b/tests/NATS.Server.TestUtilities/TestData/tls.conf similarity index 100% rename from tests/NATS.Server.Tests/TestData/tls.conf rename to tests/NATS.Server.TestUtilities/TestData/tls.conf diff --git a/tests/NATS.Server.Tests/DifferencesParityClosureTests.cs b/tests/NATS.Server.Tests/DifferencesParityClosureTests.cs index 26556ab..bb54da8 100644 --- a/tests/NATS.Server.Tests/DifferencesParityClosureTests.cs +++ b/tests/NATS.Server.Tests/DifferencesParityClosureTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities.Parity; + namespace NATS.Server.Tests; public class DifferencesParityClosureTests @@ -5,7 +7,7 @@ public class DifferencesParityClosureTests [Fact] public void Differences_md_has_no_remaining_baseline_n_or_stub_rows_in_tracked_scope() { - var report = Parity.ParityRowInspector.Load("differences.md"); + var report = NATS.Server.TestUtilities.Parity.ParityRowInspector.Load("differences.md"); report.UnresolvedRows.ShouldBeEmpty(string.Join( Environment.NewLine, report.UnresolvedRows.Select(r => $"{r.Section} :: {r.SubSection} :: {r.Feature} [{r.DotNetStatus}]"))); @@ -14,7 +16,7 @@ public class DifferencesParityClosureTests [Fact] public void Jetstream_truth_matrix_has_no_row_level_drift() { - var report = Parity.JetStreamParityTruthMatrix.Load( + var report = NATS.Server.TestUtilities.Parity.JetStreamParityTruthMatrix.Load( "differences.md", "docs/plans/2026-02-23-jetstream-remaining-parity-map.md"); @@ -26,7 +28,7 @@ public class DifferencesParityClosureTests [Fact] public void Differences_and_strict_capability_maps_have_no_claims_without_behavior_and_test_evidence() { - var inventory = Parity.NatsCapabilityInventory.Load("docs/plans/2026-02-23-nats-strict-full-go-parity-map.md"); + var inventory = NATS.Server.TestUtilities.Parity.NatsCapabilityInventory.Load("docs/plans/2026-02-23-nats-strict-full-go-parity-map.md"); var incomplete = inventory.Rows .Where(r => !string.Equals(r.Behavior, "done", StringComparison.OrdinalIgnoreCase) || !string.Equals(r.Tests, "done", StringComparison.OrdinalIgnoreCase) diff --git a/tests/NATS.Server.Tests/JetStream/Api/ApiEndpointParityTests.cs b/tests/NATS.Server.Tests/JetStream/Api/ApiEndpointParityTests.cs index e225333..6935f2d 100644 --- a/tests/NATS.Server.Tests/JetStream/Api/ApiEndpointParityTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Api/ApiEndpointParityTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + // Go reference: golang/nats-server/server/jetstream.go — $JS.API.* subject dispatch // Covers create/info/update/delete for streams, create/info/list/delete for consumers, // direct-get access, account info, and 404 routing for unknown subjects. diff --git a/tests/NATS.Server.Tests/JetStream/Api/ConsumerPauseApiTests.cs b/tests/NATS.Server.Tests/JetStream/Api/ConsumerPauseApiTests.cs index 7abf1da..32cde69 100644 --- a/tests/NATS.Server.Tests/JetStream/Api/ConsumerPauseApiTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Api/ConsumerPauseApiTests.cs @@ -3,6 +3,7 @@ // time-bounded pauses and response body containing pause state. using NATS.Server.JetStream.Api; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Api; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterFixtureTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterFixtureTests.cs index 45265bb..a2a49b7 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterFixtureTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterFixtureTests.cs @@ -6,6 +6,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterGoParityTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterGoParityTests.cs index 934b9fb..aecf524 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterGoParityTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JetStreamClusterGoParityTests.cs @@ -8,6 +8,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster1GoParityTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster1GoParityTests.cs index fdabce4..40d1a15 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster1GoParityTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster1GoParityTests.cs @@ -8,6 +8,7 @@ using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster2GoParityTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster2GoParityTests.cs index 2c18238..0f8e7e4 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster2GoParityTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster2GoParityTests.cs @@ -8,6 +8,7 @@ using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster34GoParityTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster34GoParityTests.cs index 699c35a..bcf9483 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster34GoParityTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsCluster34GoParityTests.cs @@ -8,6 +8,7 @@ using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterAdvancedTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterAdvancedTests.cs index b8d946f..42a44a8 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterAdvancedTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterAdvancedTests.cs @@ -7,6 +7,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterConsumerReplicationTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterConsumerReplicationTests.cs index bf94f00..abc408f 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterConsumerReplicationTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterConsumerReplicationTests.cs @@ -5,6 +5,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterFailoverTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterFailoverTests.cs index 4551e68..9f4c68b 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterFailoverTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterFailoverTests.cs @@ -20,6 +20,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterLeaderElectionTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterLeaderElectionTests.cs index 4596f90..169711c 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterLeaderElectionTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterLeaderElectionTests.cs @@ -16,6 +16,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterLongRunningTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterLongRunningTests.cs index 4fed37a..dd77ce8 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterLongRunningTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterLongRunningTests.cs @@ -8,6 +8,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterMetaGovernanceTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterMetaGovernanceTests.cs index 9c7bae2..ecf8dc4 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterMetaGovernanceTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterMetaGovernanceTests.cs @@ -6,6 +6,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterStreamPlacementTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterStreamPlacementTests.cs index ab44ab4..5d98570 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterStreamPlacementTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterStreamPlacementTests.cs @@ -6,6 +6,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterStreamReplicationTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterStreamReplicationTests.cs index 2db40f0..8dcc2d8 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterStreamReplicationTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsClusterStreamReplicationTests.cs @@ -6,6 +6,7 @@ using System.Text; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Cluster/JsSuperClusterTests.cs b/tests/NATS.Server.Tests/JetStream/Cluster/JsSuperClusterTests.cs index c4bbc44..950aec7 100644 --- a/tests/NATS.Server.Tests/JetStream/Cluster/JsSuperClusterTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Cluster/JsSuperClusterTests.cs @@ -13,6 +13,7 @@ using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Api; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Cluster; diff --git a/tests/NATS.Server.Tests/JetStream/Consumers/ConsumerGoParityTests.cs b/tests/NATS.Server.Tests/JetStream/Consumers/ConsumerGoParityTests.cs index 5cb7d01..fd67261 100644 --- a/tests/NATS.Server.Tests/JetStream/Consumers/ConsumerGoParityTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Consumers/ConsumerGoParityTests.cs @@ -8,6 +8,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Consumers; using NATS.Server.JetStream.Models; using NATS.Server.Subscriptions; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Consumers; diff --git a/tests/NATS.Server.Tests/JetStream/Consumers/ConsumerLifecycleTests.cs b/tests/NATS.Server.Tests/JetStream/Consumers/ConsumerLifecycleTests.cs index 6ac4e4f..36bd94b 100644 --- a/tests/NATS.Server.Tests/JetStream/Consumers/ConsumerLifecycleTests.cs +++ b/tests/NATS.Server.Tests/JetStream/Consumers/ConsumerLifecycleTests.cs @@ -11,6 +11,7 @@ using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Consumers; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Storage; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream.Consumers; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamAccountLimitTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamAccountLimitTests.cs index 6c3f54d..e1f9060 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamAccountLimitTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamAccountLimitTests.cs @@ -6,6 +6,7 @@ using NATS.Server.Auth; using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamAdminTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamAdminTests.cs index 1c46515..729c6d5 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamAdminTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamAdminTests.cs @@ -8,6 +8,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamConsumerCrudTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamConsumerCrudTests.cs index ee8ad04..e61eb9b 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamConsumerCrudTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamConsumerCrudTests.cs @@ -2,6 +2,7 @@ // Consumer CRUD operations: create push/pull, update, delete, info, ephemeral using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamConsumerDeliveryEdgeTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamConsumerDeliveryEdgeTests.cs index 4c1997b..71b1221 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamConsumerDeliveryEdgeTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamConsumerDeliveryEdgeTests.cs @@ -4,6 +4,7 @@ using NATS.Server.JetStream.Consumers; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamConsumerFeatureTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamConsumerFeatureTests.cs index bcd1bc9..40457b6 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamConsumerFeatureTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamConsumerFeatureTests.cs @@ -4,6 +4,7 @@ using System.Text; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamDirectGetTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamDirectGetTests.cs index a88cabf..07fa40c 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamDirectGetTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamDirectGetTests.cs @@ -3,6 +3,7 @@ // missing sequence handling, multi-message get, stream message API. using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamGoParityTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamGoParityTests.cs index 38e33b9..483ddad 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamGoParityTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamGoParityTests.cs @@ -6,6 +6,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamPubSubTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamPubSubTests.cs index cbdf256..728c16e 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamPubSubTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamPubSubTests.cs @@ -6,6 +6,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Publish; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamPublishPreconditionTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamPublishPreconditionTests.cs index 8cab42a..c404bff 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamPublishPreconditionTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamPublishPreconditionTests.cs @@ -5,6 +5,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Publish; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamStreamCrudTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamStreamCrudTests.cs index 7a31b13..89473f0 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamStreamCrudTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamStreamCrudTests.cs @@ -5,6 +5,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Validation; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamStreamEdgeCaseTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamStreamEdgeCaseTests.cs index d37646a..e1e3dc3 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamStreamEdgeCaseTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamStreamEdgeCaseTests.cs @@ -6,6 +6,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JetStreamStreamFeatureTests.cs b/tests/NATS.Server.Tests/JetStream/JetStreamStreamFeatureTests.cs index 243eb12..f25db8e 100644 --- a/tests/NATS.Server.Tests/JetStream/JetStreamStreamFeatureTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JetStreamStreamFeatureTests.cs @@ -6,6 +6,7 @@ using System.Text; using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JsBatchingTests.cs b/tests/NATS.Server.Tests/JetStream/JsBatchingTests.cs index e95222e..9abb338 100644 --- a/tests/NATS.Server.Tests/JetStream/JsBatchingTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JsBatchingTests.cs @@ -8,6 +8,7 @@ using System.Text; using NATS.Server.JetStream; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Publish; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JsConfigLimitsTests.cs b/tests/NATS.Server.Tests/JetStream/JsConfigLimitsTests.cs index 0af3528..47daa22 100644 --- a/tests/NATS.Server.Tests/JetStream/JsConfigLimitsTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JsConfigLimitsTests.cs @@ -9,6 +9,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Validation; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JsDeliveryAckTests.cs b/tests/NATS.Server.Tests/JetStream/JsDeliveryAckTests.cs index f0726dd..ac3cd5d 100644 --- a/tests/NATS.Server.Tests/JetStream/JsDeliveryAckTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JsDeliveryAckTests.cs @@ -6,6 +6,7 @@ using System.Text; using NATS.Server.JetStream; using NATS.Server.JetStream.Consumers; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JsStorageRecoveryTests.cs b/tests/NATS.Server.Tests/JetStream/JsStorageRecoveryTests.cs index 97c924d..7575348 100644 --- a/tests/NATS.Server.Tests/JetStream/JsStorageRecoveryTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JsStorageRecoveryTests.cs @@ -11,6 +11,7 @@ using System.Text; using NATS.Server.JetStream; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Storage; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/JsVersioningTests.cs b/tests/NATS.Server.Tests/JetStream/JsVersioningTests.cs index a9539bf..e8af61e 100644 --- a/tests/NATS.Server.Tests/JetStream/JsVersioningTests.cs +++ b/tests/NATS.Server.Tests/JetStream/JsVersioningTests.cs @@ -14,6 +14,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/PublishAckParityTests.cs b/tests/NATS.Server.Tests/JetStream/PublishAckParityTests.cs index ece8f0c..1280726 100644 --- a/tests/NATS.Server.Tests/JetStream/PublishAckParityTests.cs +++ b/tests/NATS.Server.Tests/JetStream/PublishAckParityTests.cs @@ -4,6 +4,7 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Publish; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.JetStream; diff --git a/tests/NATS.Server.Tests/JetStream/StreamLifecycleTests.cs b/tests/NATS.Server.Tests/JetStream/StreamLifecycleTests.cs index 7929f7a..2afd371 100644 --- a/tests/NATS.Server.Tests/JetStream/StreamLifecycleTests.cs +++ b/tests/NATS.Server.Tests/JetStream/StreamLifecycleTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + // Ported from golang/nats-server/server/jetstream_test.go // Reference Go tests: TestJetStreamAddStream, TestJetStreamAddStreamSameConfigOK, // TestJetStreamUpdateStream, TestJetStreamStreamPurge, TestJetStreamDeleteMsg diff --git a/tests/NATS.Server.Tests/JetStreamAckRedeliveryTests.cs b/tests/NATS.Server.Tests/JetStreamAckRedeliveryTests.cs index c65dfbc..d99e0a9 100644 --- a/tests/NATS.Server.Tests/JetStreamAckRedeliveryTests.cs +++ b/tests/NATS.Server.Tests/JetStreamAckRedeliveryTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamAckRedeliveryTests diff --git a/tests/NATS.Server.Tests/JetStreamApiRouterTests.cs b/tests/NATS.Server.Tests/JetStreamApiRouterTests.cs index b0a9cf5..e046037 100644 --- a/tests/NATS.Server.Tests/JetStreamApiRouterTests.cs +++ b/tests/NATS.Server.Tests/JetStreamApiRouterTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamApiRouterTests diff --git a/tests/NATS.Server.Tests/JetStreamClusterControlApiTests.cs b/tests/NATS.Server.Tests/JetStreamClusterControlApiTests.cs index 299cb0a..a3245d5 100644 --- a/tests/NATS.Server.Tests/JetStreamClusterControlApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamClusterControlApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamClusterControlApiTests @@ -7,7 +9,7 @@ public class JetStreamClusterControlApiTests { await using var fx = await JetStreamClusterFixture.StartAsync(nodes: 3); - var create = await fx.CreateStreamAsync("ORDERS", replicas: 3); + var create = await fx.CreateStreamAsync("ORDERS", ["orders.*"], replicas: 3); create.Error.ShouldBeNull(); var streamStepdown = await fx.RequestAsync("$JS.API.STREAM.LEADER.STEPDOWN.ORDERS", "{}"); diff --git a/tests/NATS.Server.Tests/JetStreamClusterControlExtendedApiTests.cs b/tests/NATS.Server.Tests/JetStreamClusterControlExtendedApiTests.cs index e2e4694..b0d1a0f 100644 --- a/tests/NATS.Server.Tests/JetStreamClusterControlExtendedApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamClusterControlExtendedApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamClusterControlExtendedApiTests diff --git a/tests/NATS.Server.Tests/JetStreamConsumerApiTests.cs b/tests/NATS.Server.Tests/JetStreamConsumerApiTests.cs index cd71302..53bd823 100644 --- a/tests/NATS.Server.Tests/JetStreamConsumerApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamConsumerApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamConsumerApiTests diff --git a/tests/NATS.Server.Tests/JetStreamConsumerControlApiTests.cs b/tests/NATS.Server.Tests/JetStreamConsumerControlApiTests.cs index 47b3455..0cb767d 100644 --- a/tests/NATS.Server.Tests/JetStreamConsumerControlApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamConsumerControlApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamConsumerControlApiTests diff --git a/tests/NATS.Server.Tests/JetStreamConsumerListApiTests.cs b/tests/NATS.Server.Tests/JetStreamConsumerListApiTests.cs index d0da678..f2db8f8 100644 --- a/tests/NATS.Server.Tests/JetStreamConsumerListApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamConsumerListApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamConsumerListApiTests diff --git a/tests/NATS.Server.Tests/JetStreamConsumerNextApiTests.cs b/tests/NATS.Server.Tests/JetStreamConsumerNextApiTests.cs index 08a0d9e..85b6670 100644 --- a/tests/NATS.Server.Tests/JetStreamConsumerNextApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamConsumerNextApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamConsumerNextApiTests diff --git a/tests/NATS.Server.Tests/JetStreamConsumerSemanticsTests.cs b/tests/NATS.Server.Tests/JetStreamConsumerSemanticsTests.cs index cf76efc..9c96dbe 100644 --- a/tests/NATS.Server.Tests/JetStreamConsumerSemanticsTests.cs +++ b/tests/NATS.Server.Tests/JetStreamConsumerSemanticsTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamConsumerSemanticsTests diff --git a/tests/NATS.Server.Tests/JetStreamDirectGetApiTests.cs b/tests/NATS.Server.Tests/JetStreamDirectGetApiTests.cs index 742e59e..01b53a1 100644 --- a/tests/NATS.Server.Tests/JetStreamDirectGetApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamDirectGetApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamDirectGetApiTests diff --git a/tests/NATS.Server.Tests/JetStreamExpectedHeaderTests.cs b/tests/NATS.Server.Tests/JetStreamExpectedHeaderTests.cs index ffe6b2d..09c492b 100644 --- a/tests/NATS.Server.Tests/JetStreamExpectedHeaderTests.cs +++ b/tests/NATS.Server.Tests/JetStreamExpectedHeaderTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamExpectedHeaderTests diff --git a/tests/NATS.Server.Tests/JetStreamFlowReplayBackoffTests.cs b/tests/NATS.Server.Tests/JetStreamFlowReplayBackoffTests.cs index 1bcc168..496a929 100644 --- a/tests/NATS.Server.Tests/JetStreamFlowReplayBackoffTests.cs +++ b/tests/NATS.Server.Tests/JetStreamFlowReplayBackoffTests.cs @@ -1,4 +1,5 @@ using System.Diagnostics; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests; diff --git a/tests/NATS.Server.Tests/JetStreamIntegrationMatrix.cs b/tests/NATS.Server.Tests/JetStreamIntegrationMatrix.cs index 74f7c0a..2347760 100644 --- a/tests/NATS.Server.Tests/JetStreamIntegrationMatrix.cs +++ b/tests/NATS.Server.Tests/JetStreamIntegrationMatrix.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; internal static class JetStreamIntegrationMatrix diff --git a/tests/NATS.Server.Tests/JetStreamJwtLimitTests.cs b/tests/NATS.Server.Tests/JetStreamJwtLimitTests.cs index b5ee66a..e987e0a 100644 --- a/tests/NATS.Server.Tests/JetStreamJwtLimitTests.cs +++ b/tests/NATS.Server.Tests/JetStreamJwtLimitTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamJwtLimitTests diff --git a/tests/NATS.Server.Tests/JetStreamMetaGroupTests.cs b/tests/NATS.Server.Tests/JetStreamMetaGroupTests.cs index f4fbebf..eea27fb 100644 --- a/tests/NATS.Server.Tests/JetStreamMetaGroupTests.cs +++ b/tests/NATS.Server.Tests/JetStreamMetaGroupTests.cs @@ -2,7 +2,6 @@ using NATS.Server.JetStream; using NATS.Server.JetStream.Api; using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Models; - namespace NATS.Server.Tests; public class JetStreamMetaGroupTests @@ -10,7 +9,7 @@ public class JetStreamMetaGroupTests [Fact] public async Task Stream_create_requires_meta_group_commit() { - await using var fixture = await JetStreamClusterFixture.StartAsync(nodes: 3); + await using var fixture = await MetaGroupTestFixture.StartAsync(nodes: 3); var result = await fixture.CreateStreamAsync("ORDERS", replicas: 3); result.Error.ShouldBeNull(); @@ -20,14 +19,14 @@ public class JetStreamMetaGroupTests } } -internal sealed class JetStreamClusterFixture : IAsyncDisposable +internal sealed class MetaGroupTestFixture : IAsyncDisposable { private readonly JetStreamMetaGroup _metaGroup; private readonly StreamManager _streamManager; private readonly ConsumerManager _consumerManager; private readonly JetStreamApiRouter _router; - private JetStreamClusterFixture(JetStreamMetaGroup metaGroup, StreamManager streamManager, ConsumerManager consumerManager, JetStreamApiRouter router) + private MetaGroupTestFixture(JetStreamMetaGroup metaGroup, StreamManager streamManager, ConsumerManager consumerManager, JetStreamApiRouter router) { _metaGroup = metaGroup; _streamManager = streamManager; @@ -35,13 +34,13 @@ internal sealed class JetStreamClusterFixture : IAsyncDisposable _router = router; } - public static Task StartAsync(int nodes) + public static Task StartAsync(int nodes) { var meta = new JetStreamMetaGroup(nodes); var streamManager = new StreamManager(meta); var consumerManager = new ConsumerManager(meta); var router = new JetStreamApiRouter(streamManager, consumerManager, meta); - return Task.FromResult(new JetStreamClusterFixture(meta, streamManager, consumerManager, router)); + return Task.FromResult(new MetaGroupTestFixture(meta, streamManager, consumerManager, router)); } public Task CreateStreamAsync(string name, int replicas) diff --git a/tests/NATS.Server.Tests/JetStreamMirrorSourceAdvancedTests.cs b/tests/NATS.Server.Tests/JetStreamMirrorSourceAdvancedTests.cs index d42f265..6f48423 100644 --- a/tests/NATS.Server.Tests/JetStreamMirrorSourceAdvancedTests.cs +++ b/tests/NATS.Server.Tests/JetStreamMirrorSourceAdvancedTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamMirrorSourceAdvancedTests diff --git a/tests/NATS.Server.Tests/JetStreamMirrorSourceTests.cs b/tests/NATS.Server.Tests/JetStreamMirrorSourceTests.cs index 0d87416..eb1893c 100644 --- a/tests/NATS.Server.Tests/JetStreamMirrorSourceTests.cs +++ b/tests/NATS.Server.Tests/JetStreamMirrorSourceTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamMirrorSourceTests diff --git a/tests/NATS.Server.Tests/JetStreamPublishPreconditionTests.cs b/tests/NATS.Server.Tests/JetStreamPublishPreconditionTests.cs index 1ea6db5..8eb0370 100644 --- a/tests/NATS.Server.Tests/JetStreamPublishPreconditionTests.cs +++ b/tests/NATS.Server.Tests/JetStreamPublishPreconditionTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamPublishPreconditionTests diff --git a/tests/NATS.Server.Tests/JetStreamPublishTests.cs b/tests/NATS.Server.Tests/JetStreamPublishTests.cs index 63e62a1..99e7b3b 100644 --- a/tests/NATS.Server.Tests/JetStreamPublishTests.cs +++ b/tests/NATS.Server.Tests/JetStreamPublishTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamPublishTests diff --git a/tests/NATS.Server.Tests/JetStreamPullConsumerContractTests.cs b/tests/NATS.Server.Tests/JetStreamPullConsumerContractTests.cs index 7387325..3218920 100644 --- a/tests/NATS.Server.Tests/JetStreamPullConsumerContractTests.cs +++ b/tests/NATS.Server.Tests/JetStreamPullConsumerContractTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamPullConsumerContractTests diff --git a/tests/NATS.Server.Tests/JetStreamPullConsumerTests.cs b/tests/NATS.Server.Tests/JetStreamPullConsumerTests.cs index 4ce724d..beb0fde 100644 --- a/tests/NATS.Server.Tests/JetStreamPullConsumerTests.cs +++ b/tests/NATS.Server.Tests/JetStreamPullConsumerTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamPullConsumerTests diff --git a/tests/NATS.Server.Tests/JetStreamPushConsumerContractTests.cs b/tests/NATS.Server.Tests/JetStreamPushConsumerContractTests.cs index 075d6d1..931d98b 100644 --- a/tests/NATS.Server.Tests/JetStreamPushConsumerContractTests.cs +++ b/tests/NATS.Server.Tests/JetStreamPushConsumerContractTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamPushConsumerContractTests diff --git a/tests/NATS.Server.Tests/JetStreamPushConsumerTests.cs b/tests/NATS.Server.Tests/JetStreamPushConsumerTests.cs index 5f40ab0..4a78807 100644 --- a/tests/NATS.Server.Tests/JetStreamPushConsumerTests.cs +++ b/tests/NATS.Server.Tests/JetStreamPushConsumerTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamPushConsumerTests diff --git a/tests/NATS.Server.Tests/JetStreamRetentionPolicyTests.cs b/tests/NATS.Server.Tests/JetStreamRetentionPolicyTests.cs index b9f558c..56dd9c1 100644 --- a/tests/NATS.Server.Tests/JetStreamRetentionPolicyTests.cs +++ b/tests/NATS.Server.Tests/JetStreamRetentionPolicyTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamRetentionPolicyTests diff --git a/tests/NATS.Server.Tests/JetStreamSnapshotRestoreApiTests.cs b/tests/NATS.Server.Tests/JetStreamSnapshotRestoreApiTests.cs index 7693ad1..6dff367 100644 --- a/tests/NATS.Server.Tests/JetStreamSnapshotRestoreApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamSnapshotRestoreApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamSnapshotRestoreApiTests diff --git a/tests/NATS.Server.Tests/JetStreamStorageSelectionTests.cs b/tests/NATS.Server.Tests/JetStreamStorageSelectionTests.cs index 290f215..2032279 100644 --- a/tests/NATS.Server.Tests/JetStreamStorageSelectionTests.cs +++ b/tests/NATS.Server.Tests/JetStreamStorageSelectionTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamStorageSelectionTests diff --git a/tests/NATS.Server.Tests/JetStreamStreamApiTests.cs b/tests/NATS.Server.Tests/JetStreamStreamApiTests.cs index 8c3a430..6c3ace5 100644 --- a/tests/NATS.Server.Tests/JetStreamStreamApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamStreamApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamStreamApiTests diff --git a/tests/NATS.Server.Tests/JetStreamStreamLifecycleApiTests.cs b/tests/NATS.Server.Tests/JetStreamStreamLifecycleApiTests.cs index b066260..74fc030 100644 --- a/tests/NATS.Server.Tests/JetStreamStreamLifecycleApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamStreamLifecycleApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamStreamLifecycleApiTests diff --git a/tests/NATS.Server.Tests/JetStreamStreamListApiTests.cs b/tests/NATS.Server.Tests/JetStreamStreamListApiTests.cs index b040463..907ee86 100644 --- a/tests/NATS.Server.Tests/JetStreamStreamListApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamStreamListApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamStreamListApiTests diff --git a/tests/NATS.Server.Tests/JetStreamStreamMessageApiTests.cs b/tests/NATS.Server.Tests/JetStreamStreamMessageApiTests.cs index c7e7155..683d826 100644 --- a/tests/NATS.Server.Tests/JetStreamStreamMessageApiTests.cs +++ b/tests/NATS.Server.Tests/JetStreamStreamMessageApiTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities; + namespace NATS.Server.Tests; public class JetStreamStreamMessageApiTests diff --git a/tests/NATS.Server.Tests/JetStreamStreamPolicyRuntimeTests.cs b/tests/NATS.Server.Tests/JetStreamStreamPolicyRuntimeTests.cs index 11e4a7b..015ab6d 100644 --- a/tests/NATS.Server.Tests/JetStreamStreamPolicyRuntimeTests.cs +++ b/tests/NATS.Server.Tests/JetStreamStreamPolicyRuntimeTests.cs @@ -1,4 +1,5 @@ using NATS.Server.JetStream.Models; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests; diff --git a/tests/NATS.Server.Tests/LeafNodes/LeafNodeAdvancedTests.cs b/tests/NATS.Server.Tests/LeafNodes/LeafNodeAdvancedTests.cs index d38cf4f..0e4c3ba 100644 --- a/tests/NATS.Server.Tests/LeafNodes/LeafNodeAdvancedTests.cs +++ b/tests/NATS.Server.Tests/LeafNodes/LeafNodeAdvancedTests.cs @@ -7,6 +7,7 @@ using NATS.Server.Auth; using NATS.Server.Configuration; using NATS.Server.LeafNodes; using NATS.Server.Subscriptions; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.LeafNodes; diff --git a/tests/NATS.Server.Tests/LeafNodes/LeafNodeConnectionTests.cs b/tests/NATS.Server.Tests/LeafNodes/LeafNodeConnectionTests.cs index 68393a4..f707d2f 100644 --- a/tests/NATS.Server.Tests/LeafNodes/LeafNodeConnectionTests.cs +++ b/tests/NATS.Server.Tests/LeafNodes/LeafNodeConnectionTests.cs @@ -7,6 +7,7 @@ using NATS.Server.Auth; using NATS.Server.Configuration; using NATS.Server.LeafNodes; using NATS.Server.Subscriptions; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.LeafNodes; diff --git a/tests/NATS.Server.Tests/LeafNodes/LeafNodeForwardingTests.cs b/tests/NATS.Server.Tests/LeafNodes/LeafNodeForwardingTests.cs index 5193d0b..974c143 100644 --- a/tests/NATS.Server.Tests/LeafNodes/LeafNodeForwardingTests.cs +++ b/tests/NATS.Server.Tests/LeafNodes/LeafNodeForwardingTests.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Logging.Abstractions; using NATS.Client.Core; using NATS.Server.Configuration; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.LeafNodes; diff --git a/tests/NATS.Server.Tests/LeafNodes/LeafNodeSubjectFilterTests.cs b/tests/NATS.Server.Tests/LeafNodes/LeafNodeSubjectFilterTests.cs index 309d559..cade619 100644 --- a/tests/NATS.Server.Tests/LeafNodes/LeafNodeSubjectFilterTests.cs +++ b/tests/NATS.Server.Tests/LeafNodes/LeafNodeSubjectFilterTests.cs @@ -1,4 +1,5 @@ using NATS.Client.Core; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.LeafNodes; diff --git a/tests/NATS.Server.Tests/LeafProtocolTests.cs b/tests/NATS.Server.Tests/LeafProtocolTests.cs index 25b6763..90da14e 100644 --- a/tests/NATS.Server.Tests/LeafProtocolTests.cs +++ b/tests/NATS.Server.Tests/LeafProtocolTests.cs @@ -11,14 +11,14 @@ public class LeafProtocolTests [Fact] public async Task Leaf_link_propagates_subscription_and_message_flow() { - await using var fx = await LeafFixture.StartHubSpokeAsync(); + await using var fx = await LeafProtocolTestFixture.StartHubSpokeAsync(); await fx.SubscribeSpokeAsync("leaf.>"); await fx.PublishHubAsync("leaf.msg", "x"); (await fx.ReadSpokeMessageAsync()).ShouldContain("x"); } } -internal sealed class LeafFixture : IAsyncDisposable +internal sealed class LeafProtocolTestFixture : IAsyncDisposable { private readonly NatsServer _hub; private readonly NatsServer _spoke; @@ -27,7 +27,7 @@ internal sealed class LeafFixture : IAsyncDisposable private Socket? _spokeSubscriber; private Socket? _hubPublisher; - private LeafFixture(NatsServer hub, NatsServer spoke, CancellationTokenSource hubCts, CancellationTokenSource spokeCts) + private LeafProtocolTestFixture(NatsServer hub, NatsServer spoke, CancellationTokenSource hubCts, CancellationTokenSource spokeCts) { _hub = hub; _spoke = spoke; @@ -35,7 +35,7 @@ internal sealed class LeafFixture : IAsyncDisposable _spokeCts = spokeCts; } - public static async Task StartHubSpokeAsync() + public static async Task StartHubSpokeAsync() { var hubOptions = new NatsOptions { @@ -74,7 +74,7 @@ internal sealed class LeafFixture : IAsyncDisposable while (!timeout.IsCancellationRequested && (hub.Stats.Leafs == 0 || spoke.Stats.Leafs == 0)) await Task.Delay(50, timeout.Token).ContinueWith(_ => { }, TaskScheduler.Default); - return new LeafFixture(hub, spoke, hubCts, spokeCts); + return new LeafProtocolTestFixture(hub, spoke, hubCts, spokeCts); } public async Task SubscribeSpokeAsync(string subject) diff --git a/tests/NATS.Server.Tests/NATS.Server.Tests.csproj b/tests/NATS.Server.Tests/NATS.Server.Tests.csproj index c5c8a2b..f773018 100644 --- a/tests/NATS.Server.Tests/NATS.Server.Tests.csproj +++ b/tests/NATS.Server.Tests/NATS.Server.Tests.csproj @@ -22,11 +22,7 @@ - - - - - + diff --git a/tests/NATS.Server.Tests/Parity/JetStreamParityTruthMatrixTests.cs b/tests/NATS.Server.Tests/Parity/JetStreamParityTruthMatrixTests.cs index 5beed76..60ac342 100644 --- a/tests/NATS.Server.Tests/Parity/JetStreamParityTruthMatrixTests.cs +++ b/tests/NATS.Server.Tests/Parity/JetStreamParityTruthMatrixTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities.Parity; + namespace NATS.Server.Tests.Parity; public class JetStreamParityTruthMatrixTests diff --git a/tests/NATS.Server.Tests/Parity/NatsStrictCapabilityInventoryTests.cs b/tests/NATS.Server.Tests/Parity/NatsStrictCapabilityInventoryTests.cs index d2905a1..445ad59 100644 --- a/tests/NATS.Server.Tests/Parity/NatsStrictCapabilityInventoryTests.cs +++ b/tests/NATS.Server.Tests/Parity/NatsStrictCapabilityInventoryTests.cs @@ -1,3 +1,5 @@ +using NATS.Server.TestUtilities.Parity; + namespace NATS.Server.Tests.Parity; public class NatsStrictCapabilityInventoryTests diff --git a/tests/NATS.Server.Tests/Stress/ClusterStressTests.cs b/tests/NATS.Server.Tests/Stress/ClusterStressTests.cs index 6ad7bbe..c2b9b6a 100644 --- a/tests/NATS.Server.Tests/Stress/ClusterStressTests.cs +++ b/tests/NATS.Server.Tests/Stress/ClusterStressTests.cs @@ -12,7 +12,8 @@ using NATS.Server.JetStream.Cluster; using NATS.Server.JetStream.Consumers; using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Publish; -using ClusterFixture = NATS.Server.Tests.JetStream.Cluster.JetStreamClusterFixture; +using ClusterFixture = NATS.Server.TestUtilities.JetStreamClusterFixture; +using NATS.Server.TestUtilities; namespace NATS.Server.Tests.Stress;