Skip to content

Commit 07ca0e8

Browse files
committed
Qualify the complete eight-scenario comparison matrix
1 parent 4076193 commit 07ca0e8

2 files changed

Lines changed: 31 additions & 4 deletions

File tree

‎tests/KeyLoad.ComparisonTests/Features/BenchmarkComparisons/ComparisonTestReportAssertions.cs‎

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ internal static class ComparisonTestReportAssertions
99
private const string MeasuredStatus = "measured";
1010
private const string KeyLoadTargetName = "KeyLoad";
1111
private const string Neo4jTargetName = "Neo4j";
12+
private const string PostgresTargetName = "PostgreSQL + pgvector";
13+
private const string QdrantTargetName = "Qdrant";
14+
private const string RabbitTargetName = "RabbitMQ";
15+
private const string RedisTargetName = "Redis";
16+
private const int ExpectedTargetCount = 6;
17+
private const int ScenariosPerTarget = 8;
18+
private const int MeasuredCasesPerRepetition = 24;
1219

1320
internal static async Task<ComparisonReport> VerifyAsync(string output, ComparisonOptions options,
1421
CancellationToken cancellationToken)
@@ -25,10 +32,11 @@ internal static async Task<ComparisonReport> VerifyAsync(string output, Comparis
2532
private static async Task VerifyReportAsync(ComparisonReport report, ComparisonOptions options)
2633
{
2734
await Assert.That(report.SchemaVersion).IsEqualTo(3);
28-
await Assert.That(report.Targets.Length).IsEqualTo(6);
29-
await Assert.That(report.Cases.Length).IsEqualTo(36 * options.Repetitions);
35+
await Assert.That(report.Targets.Length).IsEqualTo(ExpectedTargetCount);
36+
await Assert.That(report.Cases.Length).IsEqualTo(ExpectedTargetCount * ScenariosPerTarget * options.Repetitions);
37+
await VerifyCaseMatrixAsync(report, options);
3038
await Assert.That(report.Cases).DoesNotContain(item => item.Status == FailedStatus);
31-
await Assert.That(report.Cases.Count(item => item.Status == MeasuredStatus)).IsEqualTo(20 * options.Repetitions);
39+
await Assert.That(report.Cases.Count(item => item.Status == MeasuredStatus)).IsEqualTo(MeasuredCasesPerRepetition * options.Repetitions);
3240
await VerifyMeasuredCasesAsync(report, options);
3341
await Assert.That(report.Targets).Contains(target => target.Name == KeyLoadTargetName
3442
&& target.Topology.Contains("RF3", StringComparison.Ordinal));
@@ -38,6 +46,22 @@ await Assert.That(report.Cases.Count(item => item.Scenario == Scenario.GraphTrav
3846
await VerifyExternalImagesAsync(report);
3947
}
4048

49+
private static async Task VerifyCaseMatrixAsync(ComparisonReport report, ComparisonOptions options)
50+
{
51+
string[] targets = [KeyLoadTargetName, PostgresTargetName, QdrantTargetName,
52+
RabbitTargetName, RedisTargetName, Neo4jTargetName];
53+
Scenario[] scenarios = [Scenario.PointRead, Scenario.DocumentWrite, Scenario.VectorExact,
54+
Scenario.QueueCycle, Scenario.GraphNeighbors, Scenario.GraphTraverse, Scenario.StreamAppend, Scenario.StreamRead];
55+
await Assert.That(report.Targets.Select(target => target.Name).ToHashSet().SetEquals(targets)).IsTrue();
56+
var expected = from target in targets
57+
from scenario in scenarios
58+
from repetition in Enumerable.Range(0, options.Repetitions)
59+
select (target, scenario, repetition);
60+
var actual = report.Cases.Select(item => (item.Target, item.Scenario, item.Repetition)).ToHashSet();
61+
await Assert.That(actual.Count).IsEqualTo(report.Cases.Length);
62+
await Assert.That(actual.SetEquals(expected)).IsTrue();
63+
}
64+
4165
private static async Task VerifyMeasuredCasesAsync(ComparisonReport report, ComparisonOptions options)
4266
{
4367
foreach (var item in report.Cases.Where(item => item.Status == MeasuredStatus))
@@ -65,6 +89,6 @@ private static async Task VerifyExternalImagesAsync(ComparisonReport report)
6589
private static async Task VerifyCsvAsync(string output, ComparisonOptions options, CancellationToken cancellationToken)
6690
{
6791
var lines = await File.ReadAllLinesAsync(Path.Combine(output, "samples.csv"), cancellationToken);
68-
await Assert.That(lines.Length).IsEqualTo(1 + 20 * options.Repetitions * options.Operations);
92+
await Assert.That(lines.Length).IsEqualTo(1 + MeasuredCasesPerRepetition * options.Repetitions * options.Operations);
6993
}
7094
}

‎zonetree-orleans-wal.plan.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,6 @@ The independently reviewed native EnsureAvailable checks bound array count by re
9595
Exact c10c48e40 run37079707413 builds/formats successfully; comparison3/4 reaches the next retained regression and fails on KeyLoad:Cancelled in KeyLoadStreamPublicRegression.CaptureCancellationAsync. KeyLoadClient.Send intentionally converts cancelled reads into Result/ErrorCode.Cancelled; KeyLoadClientResults.Success wraps that as ComparisonFailureException. The existing SDK regression already asserts this result contract. TASK-WAL-CI-METADATA preserving scope now includes the exact pre-cancelled read assertion: require the actual KeyLoad:Cancelled adapter code and an actually cancelled caller token; successful completion and all other exceptions/codes still fail. Keep following append/read, original seeded read and exact event identity/revision/payload assertions intact. This is a test-contract correction, no SDK/adapter/product API, topology, retry or deadline change; ADR N/A. Lead owns only the constant/assertion/helper hunk and the final complete GitHub source join; concurrent nodeCount/peer edits remain unstaged.
9696

9797
Completed c10c48e40 source gate: full solution build/formatter/governance and118 analyzer cases pass;1088/1088 normal and1088/1088 scalar units,136/136 real process recovery and63/63 RF3 SDK/MCP pass with0 skips. Comparison3/4 fails only the cancellation contract above; both measurement profiles skip after that failure. This is a failed whole workflow, not complete qualification. The exact preserving cancellation hunks pass independent source review and scoped formatting; dirty comparison build has9 unrelated isolated-feature diagnostics and0 owned cancellation diagnostics. Final revised-source full GitHub gate remains mandatory.
98+
## Closed comparison report matrix join
99+
100+
Exact407619362 run37080578096 reaches and passes the repaired cancellation/following-session flow, then fails retained report cardinality:72 expected versus96 actual. Native comparison-suite artifact11258229884 matches that SHA/run and contains96 distinct target/scenario/repetition tuples,48 measured and48 unsupported,0 failures,12 samples per measured case and577 CSV rows. Six delivered targets and eight defined scenarios produce48 cases per repetition; Supports declarations independently sum to24 measured cases (KeyLoad8,PostgreSQL8,Qdrant1,RabbitMQ1,Redis2,Neo4j4). TASK-WAL-CI-MATRIX, owned by lead under REQ/AC-BC-005 and WAL005, may change only ComparisonTestReportAssertions.cs: named six-target/eight-scenario/24-measured constants, matching total/measured/CSV exact counts, and a closed Cartesian tuple check rejecting duplicates, missing/unknown/out-of-range rows. GraphTraverse3 per repetition, provenance/schema/images/RF3, per-case successes/resources and queue uniqueness/phase assertions remain exact. No runner/adapter/dataset/topology mutation or test skip; this is an existing report-test contract correction, ADR N/A. Complete source CI remains mandatory after all currently known repairs.

0 commit comments

Comments
 (0)