Merge all changes

This commit is contained in:
StellaOps Bot
2026-01-08 08:54:27 +02:00
parent 589de352c2
commit 110591d6bf
381 changed files with 2237 additions and 1939 deletions

View File

@@ -69,16 +69,16 @@ public sealed class LayerCacheRoundTripTests : IAsyncLifetime
new("usage.cdx.json", usageStream, "application/json")
});
var stored = await _layerCache.PutAsync(request, CancellationToken.None);
var stored = await _layerCache.PutAsync(request, TestContext.Current.CancellationToken);
stored.LayerDigest.Should().Be(layerDigest);
stored.Artifacts.Should().ContainKey("inventory.cdx.json");
stored.TotalSizeBytes.Should().BeGreaterThan(0);
var cached = await _layerCache.TryGetAsync(layerDigest, CancellationToken.None);
var cached = await _layerCache.TryGetAsync(layerDigest, TestContext.Current.CancellationToken);
cached.Should().NotBeNull();
cached!.Metadata.Should().ContainKey("image");
await using (var artifact = await _layerCache.OpenArtifactAsync(layerDigest, "inventory.cdx.json", CancellationToken.None))
await using (var artifact = await _layerCache.OpenArtifactAsync(layerDigest, "inventory.cdx.json", TestContext.Current.CancellationToken))
{
artifact.Should().NotBeNull();
using var reader = new StreamReader(artifact!, Encoding.UTF8);
@@ -89,34 +89,34 @@ public sealed class LayerCacheRoundTripTests : IAsyncLifetime
// Store file CAS entry and validate export/import lifecycle.
var casHash = "sha256:" + new string('f', 64);
using var casStream = CreateStream("some-cas-content");
await _fileCas.PutAsync(new FileCasPutRequest(casHash, casStream), CancellationToken.None);
await _fileCas.PutAsync(new FileCasPutRequest(casHash, casStream), TestContext.Current.CancellationToken);
var exportPath = Path.Combine(_rootPath, "export");
var exportCount = await _fileCas.ExportAsync(exportPath, CancellationToken.None);
var exportCount = await _fileCas.ExportAsync(exportPath, TestContext.Current.CancellationToken);
exportCount.Should().Be(1);
await _fileCas.RemoveAsync(casHash, CancellationToken.None);
(await _fileCas.TryGetAsync(casHash, CancellationToken.None)).Should().BeNull();
await _fileCas.RemoveAsync(casHash, TestContext.Current.CancellationToken);
(await _fileCas.TryGetAsync(casHash, TestContext.Current.CancellationToken)).Should().BeNull();
var importCount = await _fileCas.ImportAsync(exportPath, CancellationToken.None);
var importCount = await _fileCas.ImportAsync(exportPath, TestContext.Current.CancellationToken);
importCount.Should().Be(1);
var imported = await _fileCas.TryGetAsync(casHash, CancellationToken.None);
var imported = await _fileCas.TryGetAsync(casHash, TestContext.Current.CancellationToken);
imported.Should().NotBeNull();
imported!.RelativePath.Should().EndWith("content.bin");
// TTL eviction
_timeProvider.Advance(TimeSpan.FromHours(2));
await _layerCache.EvictExpiredAsync(CancellationToken.None);
(await _layerCache.TryGetAsync(layerDigest, CancellationToken.None)).Should().BeNull();
await _layerCache.EvictExpiredAsync(TestContext.Current.CancellationToken);
(await _layerCache.TryGetAsync(layerDigest, TestContext.Current.CancellationToken)).Should().BeNull();
// Compaction removes CAS entry once over threshold.
// Force compaction by writing a large entry.
using var largeStream = CreateStream(new string('x', 400_000));
var largeHash = "sha256:" + new string('e', 64);
await _fileCas.PutAsync(new FileCasPutRequest(largeHash, largeStream), CancellationToken.None);
await _fileCas.PutAsync(new FileCasPutRequest(largeHash, largeStream), TestContext.Current.CancellationToken);
_timeProvider.Advance(TimeSpan.FromMinutes(1));
await _fileCas.CompactAsync(CancellationToken.None);
(await _fileCas.TryGetAsync(casHash, CancellationToken.None)).Should().BeNull();
await _fileCas.CompactAsync(TestContext.Current.CancellationToken);
(await _fileCas.TryGetAsync(casHash, TestContext.Current.CancellationToken)).Should().BeNull();
}
public ValueTask InitializeAsync() => ValueTask.CompletedTask;