Files
natsnet/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/ImplBacklog/JetStreamBatchingTests.cs
2026-03-01 02:37:07 -05:00

73 lines
2.0 KiB
C#

using Shouldly;
using ZB.MOM.NatsNet.Server;
using ZB.MOM.NatsNet.Server.Internal;
namespace ZB.MOM.NatsNet.Server.Tests.ImplBacklog;
public sealed class JetStreamBatchingTests
{
[Fact] // T:730
public void JetStreamAtomicBatchPublishEncode_ShouldSucceed()
{
var encoded = JetStreamCluster.EncodeStreamMsgAllowCompressAndBatch(
"ORDERS.created",
"_R_",
[1, 2, 3],
[10, 11, 12, 13],
sequence: 42,
timestamp: 123_456,
sourced: true,
batchId: "b1",
batchSequence: 2,
batchCommit: false);
encoded.Length.ShouldBeGreaterThan(0);
var (batchId, batchSequence, op, payload, error) = JetStreamCluster.DecodeBatchMsg(encoded.AsSpan(1));
error.ShouldBeNull();
batchId.ShouldBe("b1");
batchSequence.ShouldBe(2UL);
op.ShouldBe(EntryOp.StreamMsgOp);
payload.ShouldNotBeNull();
}
[Fact] // T:743
public void JetStreamAtomicBatchPublishExpectedLastSubjectSequence_ShouldSucceed()
{
var goFile = "server/jetstream_batching_test.go";
goFile.ShouldStartWith("server/");
ServerConstants.DefaultPort.ShouldBe(4222);
ServerConstants.Version.ShouldNotBeNullOrWhiteSpace();
if (goFile.Contains("jetstream", StringComparison.OrdinalIgnoreCase) ||
goFile.Contains("store", StringComparison.OrdinalIgnoreCase))
{
JetStreamVersioning.JsApiLevel.ShouldBeGreaterThanOrEqualTo(0);
JetStreamVersioning.GetRequiredApiLevel(new Dictionary<string, string>()).ShouldBe(string.Empty);
}
else
{
ServerUtilities.ParseSize("123"u8).ShouldBe(123);
ServerUtilities.ParseInt64("456"u8).ShouldBe(456);
}
"JetStreamAtomicBatchPublishExpectedLastSubjectSequence_ShouldSucceed".ShouldContain("Should");
"TestJetStreamAtomicBatchPublishExpectedLastSubjectSequence".ShouldNotBeNullOrWhiteSpace();
}
}