Files
Omika/tests/Omika.Diagnostics.Tests/Fakes/ThrowingDiagnosticRepository.cs
T
2026-10-23 18:46:50 +02:00

206 lines
9.2 KiB
C#

using Omika.Diagnostics.Models;
using Omika.Diagnostics.Queries;
using Omika.Diagnostics.Repositories;
namespace Omika.Diagnostics.Tests.Fakes;
/// <summary>
/// Simule PostgreSQL DOWN (§52) : toutes les opérations lèvent, la sonde retourne
/// <c>false</c>. L'importeur doit survivre (résultat retryable), laisser le JSONL
/// intact et ne pas avancer le checkpoint.
/// </summary>
public sealed class ThrowingDiagnosticRepository : IDiagnosticEventRepository
{
public Task<int> InsertBatchAsync(
IReadOnlyList<DiagnosticEventRecord> events,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<DiagnosticQueryResult<DiagnosticEventRecord>> QueryAsync(
DiagnosticEventQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticEventRecord>> GetByTraceIdAsync(
Guid traceId,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticEventRecord>> GetByOperationIdAsync(
Guid operationId,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<bool> IsAvailableAsync(CancellationToken cancellationToken = default) =>
Task.FromResult(false);
public Task<int> DeleteOlderThanAsync(
DateTimeOffset cutoff,
int batchSize,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<long> DeleteErrorGroupAsync(
DiagnosticErrorGroupIdentity identity,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticGroupCount>> CountGroupedAsync(
DiagnosticGroupDimension dimension,
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticBucketCount>> CountByTimeBucketAsync(
DiagnosticTimeBucket bucket,
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticBucketClientCount>> CountByTimeBucketAndClientAsync(
DiagnosticTimeBucket bucket,
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticLicenseErrorCount>> CountLicensesByErrorsAsync(
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticGroupCount>> CountErrorsByClientAsync(
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<DiagnosticQueryResult<DiagnosticEventRecord>> SearchAsync(
DiagnosticSearchQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticErrorGroup>> GroupErrorsAsync(
DiagnosticErrorGroupQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<long> CountAsync(
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<long> CountErrorGroupsAsync(
DiagnosticErrorGroupQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<DiagnosticDurationStats?> GetDurationStatsAsync(
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticDurationByEventCode>> GetTopDurationByEventCodeAsync(
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticVersionSummary>> GetVersionSummariesAsync(
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<DiagnosticVersionTotals> GetVersionTotalsAsync(
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<DiagnosticSyncSummary> GetSyncSummaryAsync(
DiagnosticAggregateQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<DiagnosticErrorGroup?> GetErrorGroupAsync(
DiagnosticErrorGroupOccurrenceQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticEventRecord>> GetErrorGroupOccurrencesAsync(
DiagnosticErrorGroupOccurrenceQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticGroupCount>> CountErrorGroupByClientAsync(
DiagnosticErrorGroupOccurrenceQuery query,
int limit,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticLicenseErrorCount>> CountErrorGroupByLicenseAsync(
DiagnosticErrorGroupOccurrenceQuery query,
int limit,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<DiagnosticEventRecord?> GetByIdAsync(
long id,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticEventRecord>> GetCorrelatedAsync(
DiagnosticCorrelationQuery query,
CancellationToken cancellationToken = default)
{
query.Validate();
// Sans identifiant, le contrat exige « aucune requête » (§T3/17) : le résultat
// vide est retourné SANS toucher PostgreSQL, même si la base est down.
return query.HasAnyIdentifier
? throw new InvalidOperationException("PostgreSQL DOWN simulé")
: Task.FromResult<IReadOnlyList<DiagnosticEventRecord>>([]);
}
public Task<IReadOnlyList<string>> GetFilterOptionsAsync(
DiagnosticFilterDimension dimension,
DateTimeOffset fromUtc,
int limit,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DiagnosticRecentCorrelation>> GetRecentCorrelationsAsync(
DiagnosticCorrelationDimension dimension,
DateTimeOffset fromUtc,
int limit,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<long> CountActiveDevicesAsync(
DeviceFleetQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DeviceDistribution>> CountDevicesGroupedAsync(
DeviceFleetDimension dimension,
DeviceFleetQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<DeviceFleetQueryResult> GetDevicesAsync(
DeviceFleetQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<DeviceDistribution>> CountDevicesByLicenseAsync(
DeviceFleetQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<ScreenUsageRecord>> GetScreenUsageAsync(
UsageTelemetryQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
public Task<IReadOnlyList<FeatureUsageRecord>> GetFeatureUsageAsync(
UsageTelemetryQuery query,
CancellationToken cancellationToken = default) =>
throw new InvalidOperationException("PostgreSQL DOWN simulé");
}