step 4
This commit is contained in:
@@ -94,12 +94,42 @@ void TestImmediateRequestsAreNotCoalesced()
|
||||
"immediate snapshots preserve order");
|
||||
}
|
||||
}
|
||||
|
||||
void TestWriteFailureReportsStructuredResult()
|
||||
{
|
||||
std::vector<PersistenceWriteResult> results;
|
||||
PersistenceWriter writer(
|
||||
std::chrono::milliseconds(1),
|
||||
[](const PersistenceSnapshot&, std::string& error) {
|
||||
error = "simulated failure";
|
||||
return false;
|
||||
});
|
||||
writer.SetResultCallback([&results](const PersistenceWriteResult& result) {
|
||||
results.push_back(result);
|
||||
});
|
||||
|
||||
PersistenceSnapshot snapshot = MakeRuntimeSnapshot("payload");
|
||||
snapshot.debounceAllowed = false;
|
||||
snapshot.reason = "failure-test";
|
||||
|
||||
std::string error;
|
||||
Expect(writer.EnqueueSnapshot(snapshot, error), "failing snapshot still enqueues");
|
||||
writer.StopAndFlush();
|
||||
|
||||
Expect(results.size() == 1, "writer reports one failure result");
|
||||
Expect(!results.empty() && !results[0].succeeded, "writer result records failure");
|
||||
Expect(!results.empty() && results[0].reason == "failure-test", "writer result preserves reason");
|
||||
Expect(!results.empty() && results[0].errorMessage == "simulated failure", "writer result preserves error message");
|
||||
Expect(!results.empty() && !results[0].newerRequestPending, "writer result reports no newer pending request");
|
||||
Expect(writer.GetMetrics().failedCount == 1, "writer metrics count failed writes");
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
TestDebouncedRequestsCoalesceToNewestSnapshot();
|
||||
TestImmediateRequestsAreNotCoalesced();
|
||||
TestWriteFailureReportsStructuredResult();
|
||||
|
||||
if (gFailures != 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user