feat(p7-09): JetStream unit tests — versioning (12), dirstore (12), batching/errors deferred (66)
Port session P7-09: add tests from jetstream_versioning_test.go (T:1791–1808),
dirstore_test.go (T:285–296), jetstream_batching_test.go (T:716–744),
jetstream_errors_test.go (T:1381–1384), and accounts_test.go (T:80–110).
- JetStreamVersioningTests: 12 active unit tests + 6 deferred (server-required)
- DirectoryStoreTests: 12 filesystem tests using fake JWTs (no NKeys dependency)
- JetStreamBatchingTests: 29 deferred stubs (all require running JetStream cluster)
- JetStreamErrorsTests: 4 deferred stubs (NewJS* factories not yet ported)
- accounts_test.go T:80–110: 31 deferred (all use RunServerWithConfig)
Fix DirJwtStore.cs expiration bugs:
- Use DateTimeOffset.UtcNow.UtcTicks (not Unix-relative ticks) for expiry comparison
- Replace in-place JwtItem mutation with new-object replacement so DrainStale
can detect stale heap entries via ReferenceEquals check
Add JetStreamVersioning.cs methods: SetStaticStreamMetadata,
SetDynamicStreamMetadata, CopyStreamMetadata, SetStaticConsumerMetadata,
SetDynamicConsumerMetadata, SetDynamicConsumerInfoMetadata, CopyConsumerMetadata.
Tests: 725 pass, 53 skipped/deferred, 0 failures.
DB: +24 complete, +66 deferred.
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
// Copyright 2025 The NATS Authors
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
// Mirrors server/jetstream_batching_test.go in the NATS server Go source.
|
||||
// ALL tests in this file are deferred: they all use createJetStreamClusterExplicit()
|
||||
// or RunBasicJetStreamServer() and require a running JetStream cluster/server.
|
||||
|
||||
namespace ZB.MOM.NatsNet.Server.Tests.JetStream;
|
||||
|
||||
/// <summary>
|
||||
/// Tests for JetStream atomic batch publishing.
|
||||
/// Mirrors server/jetstream_batching_test.go.
|
||||
/// All tests are deferred pending JetStream server infrastructure.
|
||||
/// </summary>
|
||||
public sealed class JetStreamBatchingTests
|
||||
{
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:716
|
||||
public void JetStreamAtomicBatchPublish_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:717
|
||||
public void JetStreamAtomicBatchPublishEmptyAck_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:718
|
||||
public void JetStreamAtomicBatchPublishCommitEob_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:719
|
||||
public void JetStreamAtomicBatchPublishLimits_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:720
|
||||
public void JetStreamAtomicBatchPublishDedupeNotAllowed_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:721
|
||||
public void JetStreamAtomicBatchPublishSourceAndMirror_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:722
|
||||
public void JetStreamAtomicBatchPublishCleanup_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:723
|
||||
public void JetStreamAtomicBatchPublishConfigOpts_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:724
|
||||
public void JetStreamAtomicBatchPublishDenyHeaders_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:725
|
||||
public void JetStreamAtomicBatchPublishStageAndCommit_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:726
|
||||
public void JetStreamAtomicBatchPublishHighLevelRollback_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:727
|
||||
public void JetStreamAtomicBatchPublishExpectedPerSubject_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:728
|
||||
public void JetStreamAtomicBatchPublishSingleServerRecovery_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:729
|
||||
public void JetStreamAtomicBatchPublishSingleServerRecoveryCommitEob_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:730
|
||||
public void JetStreamAtomicBatchPublishEncode_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:731
|
||||
public void JetStreamAtomicBatchPublishProposeOne_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:732
|
||||
public void JetStreamAtomicBatchPublishProposeMultiple_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:733
|
||||
public void JetStreamAtomicBatchPublishProposeOnePartialBatch_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:734
|
||||
public void JetStreamAtomicBatchPublishProposeMultiplePartialBatches_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:735
|
||||
public void JetStreamAtomicBatchPublishContinuousBatchesStillMoveAppliedUp_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:736
|
||||
public void JetStreamAtomicBatchPublishPartiallyAppliedBatchOnRecovery_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:737
|
||||
public void JetStreamRollupIsolatedRead_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:738
|
||||
public void JetStreamAtomicBatchPublishAdvisories_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:739
|
||||
public void JetStreamAtomicBatchPublishExpectedSeq_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:740
|
||||
public void JetStreamAtomicBatchPublishPartialBatchInSharedAppendEntry_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:741
|
||||
public void JetStreamAtomicBatchPublishRejectPartialBatchOnLeaderChange_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:742
|
||||
public void JetStreamAtomicBatchPublishPersistModeAsync_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:743
|
||||
public void JetStreamAtomicBatchPublishExpectedLastSubjectSequence_RequiresRunningServer() { }
|
||||
|
||||
[Fact(Skip = "deferred: requires running JetStream cluster")] // T:744
|
||||
public void JetStreamAtomicBatchPublishCommitUnsupported_RequiresRunningServer() { }
|
||||
}
|
||||
Reference in New Issue
Block a user