fix: serialize database activity during playout
This commit is contained in:
@@ -17,6 +17,8 @@ public sealed class DatabaseHealthServiceTests
|
||||
Assert.Equal(DatabaseHealthState.NotConfigured, status.State);
|
||||
Assert.Equal(DataSourceKind.Oracle, status.Source);
|
||||
Assert.Equal(TimeSpan.Zero, status.Elapsed);
|
||||
Assert.Null(status.IsTransient);
|
||||
Assert.Null(status.ProviderErrorCode);
|
||||
Assert.Equal(0, executor.CallCount);
|
||||
}
|
||||
|
||||
@@ -37,6 +39,8 @@ public sealed class DatabaseHealthServiceTests
|
||||
|
||||
Assert.Equal(DatabaseHealthState.Healthy, status.State);
|
||||
Assert.Equal(source, status.Source);
|
||||
Assert.Null(status.IsTransient);
|
||||
Assert.Null(status.ProviderErrorCode);
|
||||
Assert.Equal(1, executor.CallCount);
|
||||
Assert.Equal(expectedQuery, executor.LastQuery);
|
||||
}
|
||||
@@ -48,7 +52,10 @@ public sealed class DatabaseHealthServiceTests
|
||||
var executor = new StubDataQueryExecutor
|
||||
{
|
||||
ExecuteAsyncHandler = (_, _, _, _) => Task.FromException<DataTable>(
|
||||
new DatabaseQueryException(DataSourceKind.MariaDb, isTransient: true))
|
||||
new DatabaseQueryException(
|
||||
DataSourceKind.MariaDb,
|
||||
isTransient: true,
|
||||
providerErrorCode: 1042))
|
||||
};
|
||||
var service = new DatabaseHealthService(executor, TestOptions.CreateConfigured());
|
||||
|
||||
@@ -56,6 +63,8 @@ public sealed class DatabaseHealthServiceTests
|
||||
|
||||
Assert.Equal(DatabaseHealthState.Unhealthy, status.State);
|
||||
Assert.Equal(DataSourceKind.MariaDb, status.Source);
|
||||
Assert.True(status.IsTransient);
|
||||
Assert.Equal(1042, status.ProviderErrorCode);
|
||||
Assert.DoesNotContain(host, status.UserMessage, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
@@ -73,6 +82,25 @@ public sealed class DatabaseHealthServiceTests
|
||||
|
||||
Assert.Equal(DatabaseHealthState.TimedOut, status.State);
|
||||
Assert.Equal(DataSourceKind.Oracle, status.Source);
|
||||
Assert.True(status.IsTransient);
|
||||
Assert.Null(status.ProviderErrorCode);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CheckAsync_NonOperationInfrastructureFailure_DoesNotInventDiagnostics()
|
||||
{
|
||||
var executor = new StubDataQueryExecutor
|
||||
{
|
||||
ExecuteAsyncHandler = (_, _, _, _) => Task.FromException<DataTable>(
|
||||
new DatabaseConfigurationException("safe configuration failure"))
|
||||
};
|
||||
var service = new DatabaseHealthService(executor, TestOptions.CreateConfigured());
|
||||
|
||||
var status = await service.CheckAsync(DataSourceKind.Oracle);
|
||||
|
||||
Assert.Equal(DatabaseHealthState.Unhealthy, status.State);
|
||||
Assert.Null(status.IsTransient);
|
||||
Assert.Null(status.ProviderErrorCode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user