save progress
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
|
||||
using System.Diagnostics;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using StellaOps.Determinism.Abstractions;
|
||||
using StellaOps.Scanner.Storage.Models;
|
||||
using StellaOps.Scanner.Storage.Repositories;
|
||||
|
||||
@@ -20,6 +21,8 @@ public sealed class ScanMetricsCollector : IDisposable
|
||||
{
|
||||
private readonly IScanMetricsRepository _repository;
|
||||
private readonly ILogger<ScanMetricsCollector> _logger;
|
||||
private readonly TimeProvider _timeProvider;
|
||||
private readonly IGuidProvider _guidProvider;
|
||||
|
||||
private readonly Guid _scanId;
|
||||
private readonly Guid _tenantId;
|
||||
@@ -58,7 +61,9 @@ public sealed class ScanMetricsCollector : IDisposable
|
||||
Guid tenantId,
|
||||
string artifactDigest,
|
||||
string artifactType,
|
||||
string scannerVersion)
|
||||
string scannerVersion,
|
||||
TimeProvider? timeProvider = null,
|
||||
IGuidProvider? guidProvider = null)
|
||||
{
|
||||
_repository = repository ?? throw new ArgumentNullException(nameof(repository));
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
@@ -67,7 +72,9 @@ public sealed class ScanMetricsCollector : IDisposable
|
||||
_artifactDigest = artifactDigest ?? throw new ArgumentNullException(nameof(artifactDigest));
|
||||
_artifactType = artifactType ?? throw new ArgumentNullException(nameof(artifactType));
|
||||
_scannerVersion = scannerVersion ?? throw new ArgumentNullException(nameof(scannerVersion));
|
||||
_metricsId = Guid.NewGuid();
|
||||
_timeProvider = timeProvider ?? TimeProvider.System;
|
||||
_guidProvider = guidProvider ?? SystemGuidProvider.Instance;
|
||||
_metricsId = _guidProvider.NewGuid();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -80,7 +87,7 @@ public sealed class ScanMetricsCollector : IDisposable
|
||||
/// </summary>
|
||||
public void Start()
|
||||
{
|
||||
_startedAt = DateTimeOffset.UtcNow;
|
||||
_startedAt = _timeProvider.GetUtcNow();
|
||||
_totalStopwatch.Start();
|
||||
_logger.LogDebug("Started metrics collection for scan {ScanId}", _scanId);
|
||||
}
|
||||
@@ -98,7 +105,7 @@ public sealed class ScanMetricsCollector : IDisposable
|
||||
return NoOpDisposable.Instance;
|
||||
}
|
||||
|
||||
var tracker = new PhaseTracker(this, phaseName, DateTimeOffset.UtcNow);
|
||||
var tracker = new PhaseTracker(this, phaseName, _timeProvider.GetUtcNow());
|
||||
_phases[phaseName] = tracker;
|
||||
_logger.LogDebug("Started phase {PhaseName} for scan {ScanId}", phaseName, _scanId);
|
||||
return tracker;
|
||||
@@ -138,7 +145,7 @@ public sealed class ScanMetricsCollector : IDisposable
|
||||
|
||||
_phases.Remove(phaseName);
|
||||
|
||||
var finishedAt = DateTimeOffset.UtcNow;
|
||||
var finishedAt = _timeProvider.GetUtcNow();
|
||||
var phase = new ExecutionPhase
|
||||
{
|
||||
MetricsId = _metricsId,
|
||||
@@ -214,7 +221,7 @@ public sealed class ScanMetricsCollector : IDisposable
|
||||
public async Task CompleteAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
_totalStopwatch.Stop();
|
||||
var finishedAt = DateTimeOffset.UtcNow;
|
||||
var finishedAt = _timeProvider.GetUtcNow();
|
||||
|
||||
// Calculate phase timings
|
||||
var phases = BuildPhaseTimings();
|
||||
|
||||
Reference in New Issue
Block a user