more audit work
This commit is contained in:
@@ -15,7 +15,12 @@ public sealed class EventIdGeneratorTests
|
||||
{
|
||||
// Arrange
|
||||
var correlationId = "scan-abc123";
|
||||
var tHlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var tHlc = new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = 1704585600000,
|
||||
LogicalCounter = 0,
|
||||
NodeId = "node1"
|
||||
};
|
||||
var service = "Scheduler";
|
||||
var kind = "ENQUEUE";
|
||||
|
||||
@@ -31,7 +36,12 @@ public sealed class EventIdGeneratorTests
|
||||
public void Generate_DifferentCorrelationId_ProducesDifferentId()
|
||||
{
|
||||
// Arrange
|
||||
var tHlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var tHlc = new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = 1704585600000,
|
||||
LogicalCounter = 0,
|
||||
NodeId = "node1"
|
||||
};
|
||||
var service = "Scheduler";
|
||||
var kind = "ENQUEUE";
|
||||
|
||||
@@ -48,8 +58,18 @@ public sealed class EventIdGeneratorTests
|
||||
{
|
||||
// Arrange
|
||||
var correlationId = "scan-abc123";
|
||||
var tHlc1 = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var tHlc2 = new HlcTimestamp(1704585600000, 1, "node1");
|
||||
var tHlc1 = new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = 1704585600000,
|
||||
LogicalCounter = 0,
|
||||
NodeId = "node1"
|
||||
};
|
||||
var tHlc2 = new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = 1704585600000,
|
||||
LogicalCounter = 1,
|
||||
NodeId = "node1"
|
||||
};
|
||||
var service = "Scheduler";
|
||||
var kind = "ENQUEUE";
|
||||
|
||||
@@ -66,7 +86,12 @@ public sealed class EventIdGeneratorTests
|
||||
{
|
||||
// Arrange
|
||||
var correlationId = "scan-abc123";
|
||||
var tHlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var tHlc = new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = 1704585600000,
|
||||
LogicalCounter = 0,
|
||||
NodeId = "node1"
|
||||
};
|
||||
var kind = "ENQUEUE";
|
||||
|
||||
// Act
|
||||
@@ -82,7 +107,12 @@ public sealed class EventIdGeneratorTests
|
||||
{
|
||||
// Arrange
|
||||
var correlationId = "scan-abc123";
|
||||
var tHlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var tHlc = new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = 1704585600000,
|
||||
LogicalCounter = 0,
|
||||
NodeId = "node1"
|
||||
};
|
||||
var service = "Scheduler";
|
||||
|
||||
// Act
|
||||
@@ -98,7 +128,12 @@ public sealed class EventIdGeneratorTests
|
||||
{
|
||||
// Arrange
|
||||
var correlationId = "scan-abc123";
|
||||
var tHlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var tHlc = new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = 1704585600000,
|
||||
LogicalCounter = 0,
|
||||
NodeId = "node1"
|
||||
};
|
||||
var service = "Scheduler";
|
||||
var kind = "ENQUEUE";
|
||||
|
||||
|
||||
@@ -39,17 +39,28 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
};
|
||||
}
|
||||
|
||||
private static HlcTimestamp CreateHlc(long physicalTime, int logicalCounter, string nodeId)
|
||||
{
|
||||
return new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = physicalTime,
|
||||
LogicalCounter = logicalCounter,
|
||||
NodeId = nodeId
|
||||
};
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task AppendAsync_StoresEvent()
|
||||
{
|
||||
// Arrange
|
||||
var e = CreateEvent("corr-1", "ENQUEUE", new HlcTimestamp(1000, 0, "n1"));
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var e = CreateEvent("corr-1", "ENQUEUE", CreateHlc(1000, 0, "n1"));
|
||||
|
||||
// Act
|
||||
await _store.AppendAsync(e);
|
||||
await _store.AppendAsync(e, ct);
|
||||
|
||||
// Assert
|
||||
var retrieved = await _store.GetByIdAsync(e.EventId);
|
||||
var retrieved = await _store.GetByIdAsync(e.EventId, ct);
|
||||
retrieved.Should().NotBeNull();
|
||||
retrieved!.EventId.Should().Be(e.EventId);
|
||||
}
|
||||
@@ -58,14 +69,15 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
public async Task AppendAsync_Idempotent_DoesNotDuplicate()
|
||||
{
|
||||
// Arrange
|
||||
var e = CreateEvent("corr-1", "ENQUEUE", new HlcTimestamp(1000, 0, "n1"));
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var e = CreateEvent("corr-1", "ENQUEUE", CreateHlc(1000, 0, "n1"));
|
||||
|
||||
// Act
|
||||
await _store.AppendAsync(e);
|
||||
await _store.AppendAsync(e); // Duplicate
|
||||
await _store.AppendAsync(e, ct);
|
||||
await _store.AppendAsync(e, ct); // Duplicate
|
||||
|
||||
// Assert
|
||||
var count = await _store.CountByCorrelationIdAsync("corr-1");
|
||||
var count = await _store.CountByCorrelationIdAsync("corr-1", ct);
|
||||
count.Should().Be(1);
|
||||
}
|
||||
|
||||
@@ -73,17 +85,18 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
public async Task GetByCorrelationIdAsync_ReturnsOrderedByHlc()
|
||||
{
|
||||
// Arrange
|
||||
var hlc1 = new HlcTimestamp(1000, 0, "n1");
|
||||
var hlc2 = new HlcTimestamp(1000, 1, "n1");
|
||||
var hlc3 = new HlcTimestamp(2000, 0, "n1");
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var hlc1 = CreateHlc(1000, 0, "n1");
|
||||
var hlc2 = CreateHlc(1000, 1, "n1");
|
||||
var hlc3 = CreateHlc(2000, 0, "n1");
|
||||
|
||||
// Insert out of order
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "C", hlc3));
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", hlc1));
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "B", hlc2));
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "C", hlc3), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", hlc1), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "B", hlc2), ct);
|
||||
|
||||
// Act
|
||||
var events = await _store.GetByCorrelationIdAsync("corr-1");
|
||||
var events = await _store.GetByCorrelationIdAsync("corr-1", cancellationToken: ct);
|
||||
|
||||
// Assert
|
||||
events.Should().HaveCount(3);
|
||||
@@ -96,14 +109,15 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
public async Task GetByCorrelationIdAsync_Pagination_Works()
|
||||
{
|
||||
// Arrange
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
await _store.AppendAsync(CreateEvent("corr-1", $"E{i}", new HlcTimestamp(1000 + i, 0, "n1")));
|
||||
await _store.AppendAsync(CreateEvent("corr-1", $"E{i}", CreateHlc(1000 + i, 0, "n1")), ct);
|
||||
}
|
||||
|
||||
// Act
|
||||
var page1 = await _store.GetByCorrelationIdAsync("corr-1", limit: 3, offset: 0);
|
||||
var page2 = await _store.GetByCorrelationIdAsync("corr-1", limit: 3, offset: 3);
|
||||
var page1 = await _store.GetByCorrelationIdAsync("corr-1", limit: 3, offset: 0, cancellationToken: ct);
|
||||
var page2 = await _store.GetByCorrelationIdAsync("corr-1", limit: 3, offset: 3, cancellationToken: ct);
|
||||
|
||||
// Assert
|
||||
page1.Should().HaveCount(3);
|
||||
@@ -116,16 +130,18 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
public async Task GetByHlcRangeAsync_FiltersCorrectly()
|
||||
{
|
||||
// Arrange
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", new HlcTimestamp(1000, 0, "n1")));
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "B", new HlcTimestamp(2000, 0, "n1")));
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "C", new HlcTimestamp(3000, 0, "n1")));
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "D", new HlcTimestamp(4000, 0, "n1")));
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", CreateHlc(1000, 0, "n1")), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "B", CreateHlc(2000, 0, "n1")), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "C", CreateHlc(3000, 0, "n1")), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "D", CreateHlc(4000, 0, "n1")), ct);
|
||||
|
||||
// Act
|
||||
var events = await _store.GetByHlcRangeAsync(
|
||||
"corr-1",
|
||||
new HlcTimestamp(2000, 0, "n1"),
|
||||
new HlcTimestamp(3000, 0, "n1"));
|
||||
CreateHlc(2000, 0, "n1"),
|
||||
CreateHlc(3000, 0, "n1"),
|
||||
ct);
|
||||
|
||||
// Assert
|
||||
events.Should().HaveCount(2);
|
||||
@@ -137,12 +153,13 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
public async Task GetByServiceAsync_FiltersCorrectly()
|
||||
{
|
||||
// Arrange
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", new HlcTimestamp(1000, 0, "n1"), "Scheduler"));
|
||||
await _store.AppendAsync(CreateEvent("corr-2", "B", new HlcTimestamp(2000, 0, "n1"), "AirGap"));
|
||||
await _store.AppendAsync(CreateEvent("corr-3", "C", new HlcTimestamp(3000, 0, "n1"), "Scheduler"));
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", CreateHlc(1000, 0, "n1"), "Scheduler"), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-2", "B", CreateHlc(2000, 0, "n1"), "AirGap"), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-3", "C", CreateHlc(3000, 0, "n1"), "Scheduler"), ct);
|
||||
|
||||
// Act
|
||||
var events = await _store.GetByServiceAsync("Scheduler");
|
||||
var events = await _store.GetByServiceAsync("Scheduler", cancellationToken: ct);
|
||||
|
||||
// Assert
|
||||
events.Should().HaveCount(2);
|
||||
@@ -153,7 +170,8 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
public async Task GetByIdAsync_NotFound_ReturnsNull()
|
||||
{
|
||||
// Act
|
||||
var result = await _store.GetByIdAsync("nonexistent");
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var result = await _store.GetByIdAsync("nonexistent", ct);
|
||||
|
||||
// Assert
|
||||
result.Should().BeNull();
|
||||
@@ -163,14 +181,15 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
public async Task CountByCorrelationIdAsync_ReturnsCorrectCount()
|
||||
{
|
||||
// Arrange
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", new HlcTimestamp(1000, 0, "n1")));
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "B", new HlcTimestamp(2000, 0, "n1")));
|
||||
await _store.AppendAsync(CreateEvent("corr-2", "C", new HlcTimestamp(3000, 0, "n1")));
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", CreateHlc(1000, 0, "n1")), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "B", CreateHlc(2000, 0, "n1")), ct);
|
||||
await _store.AppendAsync(CreateEvent("corr-2", "C", CreateHlc(3000, 0, "n1")), ct);
|
||||
|
||||
// Act
|
||||
var count1 = await _store.CountByCorrelationIdAsync("corr-1");
|
||||
var count2 = await _store.CountByCorrelationIdAsync("corr-2");
|
||||
var count3 = await _store.CountByCorrelationIdAsync("corr-3");
|
||||
var count1 = await _store.CountByCorrelationIdAsync("corr-1", ct);
|
||||
var count2 = await _store.CountByCorrelationIdAsync("corr-2", ct);
|
||||
var count3 = await _store.CountByCorrelationIdAsync("corr-3", ct);
|
||||
|
||||
// Assert
|
||||
count1.Should().Be(2);
|
||||
@@ -182,26 +201,28 @@ public sealed class InMemoryTimelineEventStoreTests
|
||||
public async Task AppendBatchAsync_StoresAllEvents()
|
||||
{
|
||||
// Arrange
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var events = new[]
|
||||
{
|
||||
CreateEvent("corr-1", "A", new HlcTimestamp(1000, 0, "n1")),
|
||||
CreateEvent("corr-1", "B", new HlcTimestamp(2000, 0, "n1")),
|
||||
CreateEvent("corr-1", "C", new HlcTimestamp(3000, 0, "n1"))
|
||||
CreateEvent("corr-1", "A", CreateHlc(1000, 0, "n1")),
|
||||
CreateEvent("corr-1", "B", CreateHlc(2000, 0, "n1")),
|
||||
CreateEvent("corr-1", "C", CreateHlc(3000, 0, "n1"))
|
||||
};
|
||||
|
||||
// Act
|
||||
await _store.AppendBatchAsync(events);
|
||||
await _store.AppendBatchAsync(events, ct);
|
||||
|
||||
// Assert
|
||||
var count = await _store.CountByCorrelationIdAsync("corr-1");
|
||||
var count = await _store.CountByCorrelationIdAsync("corr-1", ct);
|
||||
count.Should().Be(3);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Clear_RemovesAllEvents()
|
||||
public async Task Clear_RemovesAllEvents()
|
||||
{
|
||||
// Arrange
|
||||
_store.AppendAsync(CreateEvent("corr-1", "A", new HlcTimestamp(1000, 0, "n1"))).Wait();
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
await _store.AppendAsync(CreateEvent("corr-1", "A", CreateHlc(1000, 0, "n1")), ct);
|
||||
|
||||
// Act
|
||||
_store.Clear();
|
||||
|
||||
@@ -15,12 +15,6 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
<PackageReference Include="xunit" />
|
||||
<PackageReference Include="xunit.runner.visualstudio">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="coverlet.collector">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
|
||||
10
src/__Libraries/__Tests/StellaOps.Eventing.Tests/TASKS.md
Normal file
10
src/__Libraries/__Tests/StellaOps.Eventing.Tests/TASKS.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Eventing Tests Task Board
|
||||
|
||||
This board mirrors active sprint tasks for this module.
|
||||
Source of truth: `docs/implplan/SPRINT_20251229_049_BE_csproj_audit_maint_tests.md`.
|
||||
|
||||
| Task ID | Status | Notes |
|
||||
| --- | --- | --- |
|
||||
| AUDIT-0024-M | DONE | Revalidated 2026-01-08 (rebaseline). |
|
||||
| AUDIT-0024-T | DONE | Revalidated 2026-01-08 (rebaseline). |
|
||||
| AUDIT-0024-A | DONE | Waived (test project). |
|
||||
@@ -40,19 +40,30 @@ public sealed class TimelineEventEmitterTests
|
||||
NullLogger<TimelineEventEmitter>.Instance);
|
||||
}
|
||||
|
||||
private static HlcTimestamp CreateHlc(long physicalTime, int logicalCounter, string nodeId)
|
||||
{
|
||||
return new HlcTimestamp
|
||||
{
|
||||
PhysicalTime = physicalTime,
|
||||
LogicalCounter = logicalCounter,
|
||||
NodeId = nodeId
|
||||
};
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task EmitAsync_StoresEventWithCorrectFields()
|
||||
{
|
||||
// Arrange
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var correlationId = "scan-abc123";
|
||||
var kind = EventKinds.Enqueue;
|
||||
var payload = new { JobId = "job-1", Status = "pending" };
|
||||
var expectedHlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var expectedHlc = CreateHlc(1704585600000, 0, "node1");
|
||||
|
||||
_hlcMock.Setup(h => h.Tick()).Returns(expectedHlc);
|
||||
|
||||
// Act
|
||||
var result = await _emitter.EmitAsync(correlationId, kind, payload);
|
||||
var result = await _emitter.EmitAsync(correlationId, kind, payload, ct);
|
||||
|
||||
// Assert
|
||||
result.Should().NotBeNull();
|
||||
@@ -72,15 +83,16 @@ public sealed class TimelineEventEmitterTests
|
||||
public async Task EmitAsync_GeneratesDeterministicEventId()
|
||||
{
|
||||
// Arrange
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var correlationId = "scan-abc123";
|
||||
var kind = EventKinds.Execute;
|
||||
var payload = new { Step = 1 };
|
||||
var hlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var hlc = CreateHlc(1704585600000, 0, "node1");
|
||||
|
||||
_hlcMock.Setup(h => h.Tick()).Returns(hlc);
|
||||
|
||||
// Act
|
||||
var result1 = await _emitter.EmitAsync(correlationId, kind, payload);
|
||||
var result1 = await _emitter.EmitAsync(correlationId, kind, payload, ct);
|
||||
|
||||
// Create a second emitter with same config
|
||||
var emitter2 = new TimelineEventEmitter(
|
||||
@@ -90,7 +102,7 @@ public sealed class TimelineEventEmitterTests
|
||||
_options,
|
||||
NullLogger<TimelineEventEmitter>.Instance);
|
||||
|
||||
var result2 = await emitter2.EmitAsync(correlationId, kind, payload);
|
||||
var result2 = await emitter2.EmitAsync(correlationId, kind, payload, ct);
|
||||
|
||||
// Assert - Same inputs should produce same EventId
|
||||
result1.EventId.Should().Be(result2.EventId);
|
||||
@@ -100,15 +112,16 @@ public sealed class TimelineEventEmitterTests
|
||||
public async Task EmitAsync_StoresEventInStore()
|
||||
{
|
||||
// Arrange
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var correlationId = "scan-abc123";
|
||||
var hlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var hlc = CreateHlc(1704585600000, 0, "node1");
|
||||
_hlcMock.Setup(h => h.Tick()).Returns(hlc);
|
||||
|
||||
// Act
|
||||
var emitted = await _emitter.EmitAsync(correlationId, EventKinds.Enqueue, new { Test = true });
|
||||
var emitted = await _emitter.EmitAsync(correlationId, EventKinds.Enqueue, new { Test = true }, ct);
|
||||
|
||||
// Assert
|
||||
var stored = await _eventStore.GetByIdAsync(emitted.EventId);
|
||||
var stored = await _eventStore.GetByIdAsync(emitted.EventId, ct);
|
||||
stored.Should().NotBeNull();
|
||||
stored!.EventId.Should().Be(emitted.EventId);
|
||||
}
|
||||
@@ -117,9 +130,10 @@ public sealed class TimelineEventEmitterTests
|
||||
public async Task EmitBatchAsync_StoresAllEvents()
|
||||
{
|
||||
// Arrange
|
||||
var hlcCounter = 0L;
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var hlcCounter = 0;
|
||||
_hlcMock.Setup(h => h.Tick())
|
||||
.Returns(() => new HlcTimestamp(1704585600000, hlcCounter++, "node1"));
|
||||
.Returns(() => CreateHlc(1704585600000, hlcCounter++, "node1"));
|
||||
|
||||
var pendingEvents = new[]
|
||||
{
|
||||
@@ -129,7 +143,7 @@ public sealed class TimelineEventEmitterTests
|
||||
};
|
||||
|
||||
// Act
|
||||
var results = await _emitter.EmitBatchAsync(pendingEvents);
|
||||
var results = await _emitter.EmitBatchAsync(pendingEvents, ct);
|
||||
|
||||
// Assert
|
||||
results.Should().HaveCount(3);
|
||||
@@ -144,7 +158,8 @@ public sealed class TimelineEventEmitterTests
|
||||
public async Task EmitBatchAsync_EmptyBatch_ReturnsEmptyList()
|
||||
{
|
||||
// Act
|
||||
var results = await _emitter.EmitBatchAsync(Array.Empty<PendingEvent>());
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var results = await _emitter.EmitBatchAsync(Array.Empty<PendingEvent>(), ct);
|
||||
|
||||
// Assert
|
||||
results.Should().BeEmpty();
|
||||
@@ -154,11 +169,12 @@ public sealed class TimelineEventEmitterTests
|
||||
public async Task EmitAsync_IncludesPayloadDigest()
|
||||
{
|
||||
// Arrange
|
||||
var hlc = new HlcTimestamp(1704585600000, 0, "node1");
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var hlc = CreateHlc(1704585600000, 0, "node1");
|
||||
_hlcMock.Setup(h => h.Tick()).Returns(hlc);
|
||||
|
||||
// Act
|
||||
var result = await _emitter.EmitAsync("corr-1", EventKinds.Emit, new { Data = "test" });
|
||||
var result = await _emitter.EmitAsync("corr-1", EventKinds.Emit, new { Data = "test" }, ct);
|
||||
|
||||
// Assert
|
||||
result.PayloadDigest.Should().NotBeNull();
|
||||
@@ -169,13 +185,14 @@ public sealed class TimelineEventEmitterTests
|
||||
public async Task EmitAsync_DifferentPayloads_DifferentDigests()
|
||||
{
|
||||
// Arrange
|
||||
var hlcCounter = 0L;
|
||||
var ct = TestContext.Current.CancellationToken;
|
||||
var hlcCounter = 0;
|
||||
_hlcMock.Setup(h => h.Tick())
|
||||
.Returns(() => new HlcTimestamp(1704585600000, hlcCounter++, "node1"));
|
||||
.Returns(() => CreateHlc(1704585600000, hlcCounter++, "node1"));
|
||||
|
||||
// Act
|
||||
var result1 = await _emitter.EmitAsync("corr-1", EventKinds.Emit, new { Value = 1 });
|
||||
var result2 = await _emitter.EmitAsync("corr-1", EventKinds.Emit, new { Value = 2 });
|
||||
var result1 = await _emitter.EmitAsync("corr-1", EventKinds.Emit, new { Value = 1 }, ct);
|
||||
var result2 = await _emitter.EmitAsync("corr-1", EventKinds.Emit, new { Value = 2 }, ct);
|
||||
|
||||
// Assert
|
||||
result1.PayloadDigest.Should().NotBeEquivalentTo(result2.PayloadDigest);
|
||||
|
||||
Reference in New Issue
Block a user