fix(deployment): purge SystemArtifactDeploymentRecords in the terminal-record retention sweep (review 2026-10-21 08/G2)
This commit is contained in:
@@ -87,6 +87,32 @@ public class DeploymentServiceTests : TestKit
|
||||
PendingDeploymentTtl = TestPendingTtl
|
||||
});
|
||||
|
||||
// ── Terminal-record retention (review 2026-10-21 08/G2) ──
|
||||
|
||||
/// <summary>
|
||||
/// The retention sweep also purges system artifact deployment records — one per Deploy
|
||||
/// Artifacts run, never read back — with the same cutoff as terminal deployment records.
|
||||
/// NOTE: the sweep is rate-limited by a process-wide static, so this is the only test in
|
||||
/// the assembly that may drive <see cref="DeploymentService.TryPurgeTerminalDeploymentRecordsAsync"/>.
|
||||
/// </summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task TryPurgeTerminalDeploymentRecords_AlsoPurgesSystemArtifactRecords()
|
||||
{
|
||||
_repo.PurgeTerminalDeploymentRecordsAsync(Arg.Any<DateTimeOffset>(), Arg.Any<int>(), Arg.Any<CancellationToken>())
|
||||
.Returns(1);
|
||||
_repo.PurgeSystemArtifactDeploymentRecordsAsync(Arg.Any<DateTimeOffset>(), Arg.Any<int>(), Arg.Any<CancellationToken>())
|
||||
.Returns(3);
|
||||
|
||||
var purged = await _service.TryPurgeTerminalDeploymentRecordsAsync();
|
||||
|
||||
Assert.Equal(4, purged);
|
||||
var expectedCutoff = DateTimeOffset.UtcNow - new DeploymentManagerOptions().TerminalDeploymentRecordRetention;
|
||||
await _repo.Received(1).PurgeSystemArtifactDeploymentRecordsAsync(
|
||||
Arg.Is<DateTimeOffset>(c => (c - expectedCutoff).Duration() < TimeSpan.FromMinutes(1)),
|
||||
Arg.Any<int>(), Arg.Any<CancellationToken>());
|
||||
}
|
||||
|
||||
// ── Deployment flow ──
|
||||
|
||||
/// <summary>Verifies that deploy instance async instance not found returns failure.</summary>
|
||||
|
||||
Reference in New Issue
Block a user