docs(review): close Driver.Sql-004/005/006/008/010 with resolutions and RED evidence

This commit is contained in:
Joseph Doherty
2026-08-10 08:09:51 -04:00
parent 9d4760fd2f
commit bb83099300
2 changed files with 29 additions and 23 deletions
@@ -381,21 +381,26 @@ public sealed class SqlDriverTests
using var done = new CancellationTokenSource();
var rewinds = 0;
var observer = Task.Run(() =>
{
var highWater = driver.GetHealth().LastSuccessfulRead ?? DateTime.MinValue;
while (!done.IsCancellationRequested)
var token = TestContext.Current.CancellationToken;
var observer = Task.Run(
() =>
{
var seen = driver.GetHealth().LastSuccessfulRead ?? DateTime.MinValue;
if (seen < highWater) Interlocked.Increment(ref rewinds);
else highWater = seen;
}
});
var highWater = driver.GetHealth().LastSuccessfulRead ?? DateTime.MinValue;
while (!done.IsCancellationRequested)
{
var seen = driver.GetHealth().LastSuccessfulRead ?? DateTime.MinValue;
if (seen < highWater) Interlocked.Increment(ref rewinds);
else highWater = seen;
}
},
token);
var writers = new[]
{
Task.Run(() => { for (var i = 0; i < iterations; i++) driver.ObservePollOutcome([advancing]); }),
Task.Run(() => { for (var i = 0; i < iterations; i++) driver.ObservePollOutcome([degrading]); }),
Task.Run(
() => { for (var i = 0; i < iterations; i++) driver.ObservePollOutcome([advancing]); }, token),
Task.Run(
() => { for (var i = 0; i < iterations; i++) driver.ObservePollOutcome([degrading]); }, token),
};
await Task.WhenAll(writers);
@@ -581,7 +586,7 @@ public sealed class SqlDriverTests
var health = driver.GetHealth();
// Untouched: HandlePollError left the exception to ReadAsync, so it neither re-degraded nor leaked…
health.LastError.ShouldBe(classified.LastError);
health.LastError.ShouldNotBeNull().ShouldBe(classified.LastError);
health.LastError.ShouldNotContain(SecretToken);
// …and it logged nothing (ReadAsync owns the single outage warning).
logger.Entries.Count(e => e.Level == LogLevel.Warning).ShouldBe(warningsAfterRead);
@@ -618,7 +623,8 @@ public sealed class SqlDriverTests
driver.HandlePollError(thrown);
var health = driver.GetHealth();
health.LastError.ShouldBe(classified.LastError); // the richer message survived…
health.LastError.ShouldNotBeNull()
.ShouldBe(classified.LastError); // the richer message survived…
health.LastError.ShouldNotContain("poll failed"); // …and was not overwritten by the poor one
logger.Entries.Count(e => e.Level == LogLevel.Warning).ShouldBe(warningsAfterRead);
}