* 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
38 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|