37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using NATS.Server.JetStream.Storage;
|
|
|
|
namespace NATS.Server.JetStream.Tests;
|
|
|
|
public class JetStreamStoreIndexTests
|
|
{
|
|
[Fact]
|
|
public async Task Store_can_get_last_message_by_subject()
|
|
{
|
|
var store = new MemStore();
|
|
await store.AppendAsync("orders.created", "1"u8.ToArray(), default);
|
|
await store.AppendAsync("orders.updated", "2"u8.ToArray(), default);
|
|
await store.AppendAsync("orders.created", "3"u8.ToArray(), default);
|
|
|
|
var last = await store.LoadLastBySubjectAsync("orders.created", default);
|
|
last!.Payload.Span.SequenceEqual("3"u8).ShouldBeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task FileStore_trim_to_zero_preserves_high_water_mark_for_empty_state()
|
|
{
|
|
var dir = Directory.CreateTempSubdirectory();
|
|
await using var store = new FileStore(new FileStoreOptions { Directory = dir.FullName });
|
|
|
|
await store.AppendAsync("orders.created", "1"u8.ToArray(), default);
|
|
await store.AppendAsync("orders.updated", "2"u8.ToArray(), default);
|
|
await store.AppendAsync("orders.created", "3"u8.ToArray(), default);
|
|
|
|
store.TrimToMaxMessages(0);
|
|
|
|
var state = await store.GetStateAsync(default);
|
|
state.Messages.ShouldBe(0UL);
|
|
state.LastSeq.ShouldBe(3UL);
|
|
state.FirstSeq.ShouldBe(4UL);
|
|
}
|
|
}
|