feat(batch2): verify memstore remainder features
This commit is contained in:
@@ -32,7 +32,7 @@ public class JetStreamMemoryStoreTests
|
||||
private static JetStreamMemStore NewMemStore(StreamConfig? cfg = null)
|
||||
{
|
||||
cfg ??= new StreamConfig { Storage = StorageType.MemoryStorage, Name = "test" };
|
||||
return new JetStreamMemStore(cfg);
|
||||
return JetStreamMemStore.NewMemStore(cfg);
|
||||
}
|
||||
|
||||
private static byte[] Bytes(string s) => Encoding.UTF8.GetBytes(s);
|
||||
@@ -41,6 +41,71 @@ public class JetStreamMemoryStoreTests
|
||||
private static ulong MsgSize(string subj, byte[]? hdr, byte[]? msg)
|
||||
=> (ulong)(subj.Length + (hdr?.Length ?? 0) + (msg?.Length ?? 0) + 16);
|
||||
|
||||
[Fact]
|
||||
public void NewMemStore_FactoryMethod_InitializesFirstSequence()
|
||||
{
|
||||
var method = typeof(JetStreamMemStore).GetMethod(
|
||||
"NewMemStore",
|
||||
System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic);
|
||||
method.ShouldNotBeNull();
|
||||
|
||||
var cfg = new StreamConfig
|
||||
{
|
||||
Name = "factory-init",
|
||||
Storage = StorageType.MemoryStorage,
|
||||
FirstSeq = 1000,
|
||||
};
|
||||
|
||||
var created = method!.Invoke(null, new object?[] { cfg });
|
||||
created.ShouldBeOfType<JetStreamMemStore>();
|
||||
|
||||
var ms = (JetStreamMemStore)created!;
|
||||
var state = ms.State();
|
||||
state.FirstSeq.ShouldBe(1000UL);
|
||||
state.LastSeq.ShouldBe(999UL);
|
||||
ms.Stop();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AllLastSeqsLocked_MatchesPublicAllLastSeqsOrdering()
|
||||
{
|
||||
var cfg = new StreamConfig
|
||||
{
|
||||
Name = "locked-all-last-seqs",
|
||||
Subjects = new[] { "*.*" },
|
||||
MaxMsgsPer = 50,
|
||||
Storage = StorageType.MemoryStorage,
|
||||
};
|
||||
var ms = NewMemStore(cfg);
|
||||
|
||||
var subjs = new[] { "foo.foo", "foo.bar", "foo.baz", "bar.foo", "bar.bar", "bar.baz" };
|
||||
var msg = Bytes("abc");
|
||||
var rng = new Random(11);
|
||||
|
||||
for (var i = 0; i < 1_000; i++)
|
||||
{
|
||||
var subj = subjs[rng.Next(subjs.Length)];
|
||||
ms.StoreMsg(subj, null, msg, 0);
|
||||
}
|
||||
|
||||
var method = typeof(JetStreamMemStore).GetMethod(
|
||||
"AllLastSeqsLocked",
|
||||
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
|
||||
method.ShouldNotBeNull();
|
||||
|
||||
var result = method!.Invoke(ms, Array.Empty<object>());
|
||||
result.ShouldNotBeNull();
|
||||
var (lockedSeqs, lockedErr) = ((ValueTuple<ulong[], Exception?>)result!);
|
||||
|
||||
var (publicSeqs, publicErr) = ms.AllLastSeqs();
|
||||
|
||||
lockedErr.ShouldBeNull();
|
||||
publicErr.ShouldBeNull();
|
||||
lockedSeqs.SequenceEqual(publicSeqs).ShouldBeTrue();
|
||||
|
||||
ms.Stop();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// TestMemStoreBasics (T:2023)
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
@@ -33,7 +33,7 @@ public class StorageEngineTests
|
||||
private static JetStreamMemStore NewMemStore(StreamConfig cfg)
|
||||
{
|
||||
cfg.Storage = StorageType.MemoryStorage;
|
||||
return new JetStreamMemStore(cfg);
|
||||
return JetStreamMemStore.NewMemStore(cfg);
|
||||
}
|
||||
|
||||
private static byte[] Bytes(string s) => Encoding.UTF8.GetBytes(s);
|
||||
|
||||
Reference in New Issue
Block a user