|
72 | 72 | Run("SIGTRAN maintained peer lab runner provenance records source and host identity", SigtranMaintainedPeerLabRunnerProvenanceRecordsSourceAndHostIdentity); |
73 | 73 | Run("SIGTRAN maintained peer lab runner failure classifier categorizes blockers", SigtranMaintainedPeerLabRunnerFailureClassifierCategorizesBlockers); |
74 | 74 | Run("SIGTRAN maintained peer lab runner retry policy gates transient failures", SigtranMaintainedPeerLabRunnerRetryPolicyGatesTransientFailures); |
| 75 | +Run("SIGTRAN maintained peer lab runner evidence package manifest gates handoff", SigtranMaintainedPeerLabRunnerEvidencePackageManifestGatesHandoff); |
75 | 76 | Run("SIGTRAN trace comparison reports ordered mismatches", SigtranTraceComparisonReportsOrderedMismatches); |
76 | 77 | Run("SIGTRAN interoperability evidence promotion requires passing lab run", SigtranInteropEvidencePromotionRequiresPassingLabRun); |
77 | 78 | Run("SIGTRAN interoperability lab CI profile is opt-in", SigtranInteropLabCiProfileIsOptIn); |
@@ -1518,6 +1519,46 @@ static void SigtranMaintainedPeerLabRunnerRetryPolicyGatesTransientFailures() |
1518 | 1519 | AssertEqual(1, blocked.NonRetryableFailures.Count, "maintained peer lab runner non-retryable preflight count"); |
1519 | 1520 | } |
1520 | 1521 |
|
| 1522 | +static void SigtranMaintainedPeerLabRunnerEvidencePackageManifestGatesHandoff() |
| 1523 | +{ |
| 1524 | + SigtranMaintainedPeerLabRunManifest runManifest = SigtranMaintainedPeerLabRunManifests.CreateDefault("phase30-unit8"); |
| 1525 | + SigtranMaintainedPeerLabRunnerInputBundle inputs = SigtranMaintainedPeerLabRunnerInputs.CreateDefault(runManifest); |
| 1526 | + SigtranMaintainedPeerLabRunnerArtifactMaterializationPlan artifacts = SigtranMaintainedPeerLabRunnerArtifacts.CreateDefault(inputs.Workspace); |
| 1527 | + IReadOnlyList<string> allPrerequisites = SigtranMaintainedPeerLabPrerequisites.GetDefault() |
| 1528 | + .Select(static prerequisite => prerequisite.Id) |
| 1529 | + .ToArray(); |
| 1530 | + SigtranMaintainedPeerLabRunnerPreflightReport preflight = SigtranMaintainedPeerLabRunnerPreflight.Evaluate(inputs, artifacts, allPrerequisites); |
| 1531 | + SigtranMaintainedPeerLabRunnerCommandManifest commandManifest = SigtranMaintainedPeerLabRunnerCommandManifests.Create(inputs, artifacts, preflight); |
| 1532 | + SigtranMaintainedPeerLabRunnerExecutionLog log = SigtranMaintainedPeerLabRunnerExecutionLogs.CreatePassing(commandManifest, DateTimeOffset.UnixEpoch); |
| 1533 | + SigtranMaintainedPeerLabRunnerCommandOutcomeReport commandOutcomes = SigtranMaintainedPeerLabRunnerCommandOutcomes.FromLog(commandManifest, log); |
| 1534 | + SigtranMaintainedPeerLabRunnerEvidenceCollection collection = SigtranMaintainedPeerLabRunnerEvidenceCollections.Collect(artifacts, artifacts.GetRequiredOutputPaths()); |
| 1535 | + const string digest = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; |
| 1536 | + Dictionary<string, string> digestByPath = collection.Artifacts.ToDictionary(static artifact => artifact.Path, static _ => digest, StringComparer.Ordinal); |
| 1537 | + SigtranMaintainedPeerLabRunnerDigestReport digestReport = SigtranMaintainedPeerLabRunnerDigests.Create(runManifest.ArtifactPlan, collection, digestByPath); |
| 1538 | + SigtranMaintainedPeerLabRunnerArtifactVerificationReport artifactVerification = SigtranMaintainedPeerLabRunnerArtifactVerification.Verify(collection, digestReport); |
| 1539 | + SigtranMaintainedPeerLabRunnerProvenanceReport provenance = SigtranMaintainedPeerLabRunnerProvenance.CreateDefault(runManifest, "abcdef123456", "linux-runner-01", DateTimeOffset.UnixEpoch); |
| 1540 | + IReadOnlyList<string> expected = runManifest.TrafficVectors.SelectMany(static vector => vector.ExpectedMessages).ToArray(); |
| 1541 | + SigtranMaintainedPeerLabRunnerComparisonHandoff handoff = SigtranMaintainedPeerLabRunnerComparisonHandoffs.Create(inputs, digestReport, expected, DateTimeOffset.UnixEpoch); |
| 1542 | + SigtranMaintainedPeerLabRunnerFailureReport failures = SigtranMaintainedPeerLabRunnerFailures.Classify(preflight, commandOutcomes, artifactVerification, provenance, handoff); |
| 1543 | + |
| 1544 | + SigtranMaintainedPeerLabRunnerEvidencePackageManifest package = SigtranMaintainedPeerLabRunnerEvidencePackages.Create(artifactVerification, provenance, handoff, failures); |
| 1545 | + Assert(package.IsPackageReady, package.Describe()); |
| 1546 | + AssertEqual(9, package.Items.Count, "maintained peer lab runner evidence package item count"); |
| 1547 | + Assert(package.RenderMarkdown().Contains("Package ready: `True`", StringComparison.Ordinal), package.RenderMarkdown()); |
| 1548 | + |
| 1549 | + SigtranMaintainedPeerLabRunnerFailureReport blockedFailures = new( |
| 1550 | + runManifest.RunId, |
| 1551 | + [ |
| 1552 | + new( |
| 1553 | + SigtranMaintainedPeerLabRunnerFailureKind.CommandExecution, |
| 1554 | + "command:Capture", |
| 1555 | + "Capture command failed.") |
| 1556 | + ]); |
| 1557 | + SigtranMaintainedPeerLabRunnerEvidencePackageManifest blocked = SigtranMaintainedPeerLabRunnerEvidencePackages.Create(artifactVerification, provenance, handoff, blockedFailures); |
| 1558 | + Assert(!blocked.IsPackageReady, blocked.Describe()); |
| 1559 | + Assert(!blocked.HasNoBlockingFailures, blocked.Describe()); |
| 1560 | +} |
| 1561 | + |
1521 | 1562 | static void SigtranTraceComparisonReportsOrderedMismatches() |
1522 | 1563 | { |
1523 | 1564 | SigtranInteropLabTemplate template = SigtranInteropPeerProfiles.CreateExternalPeerM3uaAspToSgTemplate(); |
|
0 commit comments