elsa-core/test/integration/Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.IntegrationTests/SqliteStructuredLogRetentionTests.cs
Sipke Schoorstra 827ad6bc6b
[codex] Add structured log SQLite persistence (#7445)
* Add structured log persistence spec

* Clarify structured log persistence spec

* Plan structured log persistence implementation

* Regenerate structured log persistence tasks

* Address structured log persistence analysis findings

* Add structured log SQLite persistence

* Address structured log persistence review

* Harden structured log write buffer shutdown

* Start structured log SQLite migrations before buffer
2026-05-13 15:57:06 +02:00

38 lines
1.4 KiB
C#

namespace Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.IntegrationTests;
public class SqliteStructuredLogRetentionTests
{
[Fact]
public async Task CleanupAsync_DoesNotDeleteRows_WhenRetentionIsNotConfigured()
{
await using var host = new SqliteStructuredLogTestHost();
await host.WriteAsync(
StructuredLogTestEvents.Create("old", DateTimeOffset.UtcNow.AddDays(-30)),
StructuredLogTestEvents.Create("new", DateTimeOffset.UtcNow));
await host.Retention.CleanupAsync();
Assert.Equal(2, await host.CountRowsAsync("StructuredLogEvents"));
}
[Fact]
public async Task CleanupAsync_AppliesMaxAgeAndMaxRows_WhenConfigured()
{
await using var host = new SqliteStructuredLogTestHost(options =>
{
options.Relational.Retention.MaxAge = TimeSpan.FromDays(7);
options.Relational.Retention.MaxRows = 1;
});
await host.WriteAsync(
StructuredLogTestEvents.Create("old", DateTimeOffset.UtcNow.AddDays(-30)),
StructuredLogTestEvents.Create("middle", DateTimeOffset.UtcNow.AddMinutes(-10)),
StructuredLogTestEvents.Create("new", DateTimeOffset.UtcNow));
await host.Retention.CleanupAsync();
var result = await host.Store.QueryAsync(new() { Take = 10 });
var item = Assert.Single(result.Items);
Assert.Equal("new", item.Id);
}
}