Refactor code structure and optimize performance across multiple modules

This commit is contained in:
StellaOps Bot
2025-12-26 20:03:22 +02:00
parent c786faae84
commit b4fc66feb6
3353 changed files with 88254 additions and 1590657 deletions

View File

@@ -2,6 +2,7 @@ using Microsoft.Extensions.Logging.Abstractions;
using StellaOps.TaskRunner.Core.Events;
using Xunit;
using StellaOps.TestKit;
namespace StellaOps.TaskRunner.Tests;
/// <summary>
@@ -18,7 +19,8 @@ public sealed class PackRunTimelineEventTests
#region Domain Model Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Create_WithRequiredFields_GeneratesValidEvent()
{
// Arrange
@@ -45,7 +47,8 @@ public sealed class PackRunTimelineEventTests
Assert.Null(evt.EventSeq);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Create_WithPayload_ComputesHashAndNormalizes()
{
// Arrange
@@ -69,7 +72,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(64 + 7, evt.PayloadHash.Length); // sha256: prefix + 64 hex chars
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Create_WithStepId_SetsStepId()
{
// Act
@@ -86,7 +90,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(TestStepId, evt.StepId);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void Create_WithEvidencePointer_SetsPointer()
{
// Arrange
@@ -108,7 +113,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal("sha256:def456", evt.EvidencePointer.BundleDigest);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void WithReceivedAt_CreatesCopyWithTimestamp()
{
// Arrange
@@ -131,7 +137,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(evt.EventId, updated.EventId);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void WithSequence_CreatesCopyWithSequence()
{
// Arrange
@@ -151,7 +158,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(42, updated.EventSeq);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void ToJson_SerializesEvent()
{
// Arrange
@@ -174,7 +182,8 @@ public sealed class PackRunTimelineEventTests
Assert.Contains(TestStepId, json);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void FromJson_DeserializesEvent()
{
// Arrange
@@ -200,7 +209,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(original.StepId, deserialized.StepId);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void GenerateIdempotencyKey_ReturnsConsistentKey()
{
// Arrange
@@ -226,7 +236,8 @@ public sealed class PackRunTimelineEventTests
#region Event Types Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void PackRunEventTypes_HasExpectedValues()
{
Assert.Equal("pack.started", PackRunEventTypes.PackStarted);
@@ -237,7 +248,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal("pack.step.failed", PackRunEventTypes.StepFailed);
}
[Theory]
[Trait("Category", TestCategories.Unit)]
[Theory]
[InlineData("pack.started", true)]
[InlineData("pack.step.completed", true)]
[InlineData("scan.completed", false)]
@@ -251,7 +263,8 @@ public sealed class PackRunTimelineEventTests
#region Evidence Pointer Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void EvidencePointer_Bundle_CreatesCorrectType()
{
var bundleId = Guid.NewGuid();
@@ -262,7 +275,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal("sha256:abc", pointer.BundleDigest);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void EvidencePointer_Attestation_CreatesCorrectType()
{
var pointer = PackRunEvidencePointer.Attestation("subject:uri", "sha256:abc");
@@ -272,7 +286,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal("sha256:abc", pointer.AttestationDigest);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public void EvidencePointer_Manifest_CreatesCorrectType()
{
var pointer = PackRunEvidencePointer.Manifest("https://example.com/manifest", "/locker/path");
@@ -286,7 +301,8 @@ public sealed class PackRunTimelineEventTests
#region In-Memory Sink Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task InMemorySink_WriteAsync_StoresEvent()
{
// Arrange
@@ -309,7 +325,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(1, sink.Count);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task InMemorySink_WriteAsync_Deduplicates()
{
// Arrange
@@ -333,7 +350,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(1, sink.Count);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task InMemorySink_AssignsMonotonicSequence()
{
// Arrange
@@ -365,7 +383,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(2, result2.Sequence);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task InMemorySink_WriteBatchAsync_StoresMultiple()
{
// Arrange
@@ -389,7 +408,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(3, sink.Count);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task InMemorySink_GetEventsForRun_FiltersCorrectly()
{
// Arrange
@@ -423,7 +443,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal("run-2", run2Events[0].RunId);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task InMemorySink_Clear_RemovesAll()
{
// Arrange
@@ -447,7 +468,8 @@ public sealed class PackRunTimelineEventTests
#region Emitter Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Emitter_EmitPackStartedAsync_CreatesEvent()
{
// Arrange
@@ -474,7 +496,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(1, sink.Count);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Emitter_EmitPackCompletedAsync_CreatesEvent()
{
// Arrange
@@ -497,7 +520,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(PackRunEventTypes.PackCompleted, result.Event.EventType);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Emitter_EmitPackFailedAsync_CreatesEventWithError()
{
// Arrange
@@ -523,7 +547,8 @@ public sealed class PackRunTimelineEventTests
Assert.Contains("failureReason", result.Event.Attributes!.Keys);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Emitter_EmitStepStartedAsync_IncludesAttempt()
{
// Arrange
@@ -550,7 +575,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal("2", result.Event.Attributes!["attempt"]);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Emitter_EmitStepCompletedAsync_IncludesDuration()
{
// Arrange
@@ -577,7 +603,8 @@ public sealed class PackRunTimelineEventTests
Assert.Contains("durationMs", result.Event.Attributes!.Keys);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Emitter_EmitStepFailedAsync_IncludesError()
{
// Arrange
@@ -605,7 +632,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal("Connection timeout", result.Event.Attributes!["error"]);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Emitter_EmitBatchAsync_OrdersEventsDeterministically()
{
// Arrange
@@ -637,7 +665,8 @@ public sealed class PackRunTimelineEventTests
Assert.Equal(PackRunEventTypes.StepStarted, stored[2].EventType);
}
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task Emitter_EmitBatchAsync_HandlesDuplicates()
{
// Arrange
@@ -673,7 +702,8 @@ public sealed class PackRunTimelineEventTests
#region Null Sink Tests
[Fact]
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task NullSink_WriteAsync_ReturnsSuccess()
{
// Arrange