up
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
SDK Publish & Sign / sdk-publish (push) Has been cancelled
sdk-generator-smoke / sdk-smoke (push) Has been cancelled
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
SDK Publish & Sign / sdk-publish (push) Has been cancelled
sdk-generator-smoke / sdk-smoke (push) Has been cancelled
This commit is contained in:
@@ -49,7 +49,8 @@ public sealed class SurfaceManifestStageExecutorTests
|
||||
metrics,
|
||||
NullLogger<SurfaceManifestStageExecutor>.Instance,
|
||||
hash,
|
||||
new NullRubyPackageInventoryStore());
|
||||
new NullRubyPackageInventoryStore(),
|
||||
new DeterminismContext(true, DateTimeOffset.Parse("2024-01-01T00:00:00Z"), 1337, true, 1));
|
||||
|
||||
var context = CreateContext();
|
||||
|
||||
@@ -86,7 +87,8 @@ public sealed class SurfaceManifestStageExecutorTests
|
||||
metrics,
|
||||
NullLogger<SurfaceManifestStageExecutor>.Instance,
|
||||
hash,
|
||||
new NullRubyPackageInventoryStore());
|
||||
new NullRubyPackageInventoryStore(),
|
||||
new DeterminismContext(false, DateTimeOffset.UnixEpoch, null, false, null));
|
||||
|
||||
var context = CreateContext();
|
||||
PopulateAnalysis(context);
|
||||
@@ -121,6 +123,48 @@ public sealed class SurfaceManifestStageExecutorTests
|
||||
Assert.Contains(payloadMetrics, m => Equals("layer.fragments", m["surface.kind"]));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ExecuteAsync_EmitsDeterminismPayload()
|
||||
{
|
||||
var metrics = new ScannerWorkerMetrics();
|
||||
var publisher = new TestSurfaceManifestPublisher("tenant-a");
|
||||
var cache = new RecordingSurfaceCache();
|
||||
var environment = new TestSurfaceEnvironment("tenant-a");
|
||||
var hash = CreateCryptoHash();
|
||||
var determinism = new DeterminismContext(
|
||||
fixedClock: true,
|
||||
fixedInstantUtc: DateTimeOffset.Parse("2024-01-01T00:00:00Z"),
|
||||
rngSeed: 42,
|
||||
filterLogs: true,
|
||||
concurrencyLimit: 1);
|
||||
|
||||
var executor = new SurfaceManifestStageExecutor(
|
||||
publisher,
|
||||
cache,
|
||||
environment,
|
||||
metrics,
|
||||
NullLogger<SurfaceManifestStageExecutor>.Instance,
|
||||
hash,
|
||||
new NullRubyPackageInventoryStore(),
|
||||
determinism);
|
||||
|
||||
var context = CreateContext();
|
||||
context.Lease.Metadata["determinism.feed"] = "feed-001";
|
||||
context.Lease.Metadata["determinism.policy"] = "rev-77";
|
||||
|
||||
await executor.ExecuteAsync(context, CancellationToken.None);
|
||||
|
||||
var determinismPayload = publisher.LastRequest!.Payloads.Single(p => p.Kind == "determinism.json");
|
||||
var json = JsonDocument.Parse(determinismPayload.Content.Span);
|
||||
|
||||
Assert.True(json.RootElement.GetProperty("fixedClock").GetBoolean());
|
||||
Assert.Equal(42, json.RootElement.GetProperty("rngSeed").GetInt32());
|
||||
Assert.Equal(1, json.RootElement.GetProperty("concurrencyLimit").GetInt32());
|
||||
Assert.Equal("feed-001", json.RootElement.GetProperty("pins").GetProperty("feed").GetString());
|
||||
Assert.Equal("rev-77", json.RootElement.GetProperty("pins").GetProperty("policy").GetString());
|
||||
Assert.True(json.RootElement.GetProperty("artifacts").EnumerateObject().Any());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ExecuteAsync_IncludesEntropyPayloads_WhenPresent()
|
||||
{
|
||||
@@ -137,7 +181,8 @@ public sealed class SurfaceManifestStageExecutorTests
|
||||
metrics,
|
||||
NullLogger<SurfaceManifestStageExecutor>.Instance,
|
||||
hash,
|
||||
new NullRubyPackageInventoryStore());
|
||||
new NullRubyPackageInventoryStore(),
|
||||
new DeterminismContext(false, DateTimeOffset.UnixEpoch, null, false, null));
|
||||
|
||||
var context = CreateContext();
|
||||
|
||||
@@ -298,7 +343,8 @@ public sealed class SurfaceManifestStageExecutorTests
|
||||
metrics,
|
||||
NullLogger<SurfaceManifestStageExecutor>.Instance,
|
||||
hash,
|
||||
new NullRubyPackageInventoryStore());
|
||||
new NullRubyPackageInventoryStore(),
|
||||
new DeterminismContext(false, DateTimeOffset.UnixEpoch, null, false, null));
|
||||
|
||||
var context = CreateContext();
|
||||
var observationBytes = Encoding.UTF8.GetBytes("{\"entrypoints\":[\"mod.ts\"]}");
|
||||
|
||||
Reference in New Issue
Block a user