59 lines
1.8 KiB
C#
59 lines
1.8 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 JetStreamFileStoreTests
|
|
{
|
|
[Fact] // T:575
|
|
public void JetStreamFileStoreSubjectsRemovedAfterSecureErase_ShouldSucceed()
|
|
{
|
|
var root = Path.Combine(Path.GetTempPath(), $"impl-fs-{Guid.NewGuid():N}");
|
|
Directory.CreateDirectory(root);
|
|
JetStreamFileStore? fs = null;
|
|
|
|
try
|
|
{
|
|
fs = new JetStreamFileStore(
|
|
new FileStoreConfig { StoreDir = root },
|
|
new FileStreamInfo
|
|
{
|
|
Created = DateTime.UtcNow,
|
|
Config = new StreamConfig
|
|
{
|
|
Name = "TEST",
|
|
Storage = StorageType.FileStorage,
|
|
Subjects = ["test.*"],
|
|
},
|
|
});
|
|
|
|
fs.StoreMsg("test.1", null, "msg1"u8.ToArray(), 0).Seq.ShouldBe(1UL);
|
|
fs.StoreMsg("test.2", null, "msg2"u8.ToArray(), 0).Seq.ShouldBe(2UL);
|
|
fs.StoreMsg("test.3", null, "msg3"u8.ToArray(), 0).Seq.ShouldBe(3UL);
|
|
|
|
var before = fs.SubjectsTotals(">");
|
|
before.Count.ShouldBe(3);
|
|
before.ShouldContainKey("test.1");
|
|
before.ShouldContainKey("test.2");
|
|
before.ShouldContainKey("test.3");
|
|
|
|
var (removed, err) = fs.EraseMsg(1);
|
|
removed.ShouldBeTrue();
|
|
err.ShouldBeNull();
|
|
|
|
var after = fs.SubjectsTotals(">");
|
|
after.Count.ShouldBe(2);
|
|
after.ContainsKey("test.1").ShouldBeFalse();
|
|
after["test.2"].ShouldBe(1UL);
|
|
after["test.3"].ShouldBe(1UL);
|
|
}
|
|
finally
|
|
{
|
|
fs?.Stop();
|
|
Directory.Delete(root, recursive: true);
|
|
}
|
|
}
|
|
|
|
}
|