Table of Contents

Class MonitoringConformanceSuite

Namespace
Millrace.Storage.Verification
Assembly
Millrace.Storage.Verification.dll

The monitoring read-model conformance suite (ARCHITECTURE.md §4.1, §11.12, §11.14).

public abstract class MonitoringConformanceSuite
Inheritance
MonitoringConformanceSuite
Inherited Members

Remarks

These facts exist because the dashboard is rendered three times over one contract: any drift between providers becomes a UI bug that only reproduces on one database. The awkward cases — cursor stability while rows change underneath, the tenant filter's two distinct "null" meanings, and limit clamping — are exactly where independent implementations diverge, so they are asserted rather than assumed.

Fields

Epoch

The instant every suite's fake clock starts at.

Methods

A_definition_that_has_never_fired_reports_no_last_outcome()
A_failed_attempt_is_recorded_with_its_error_and_worker()
A_fenced_release_records_an_interruption()
A_job_that_succeeds_first_time_records_no_attempt_history()
A_running_occurrence_outranks_an_earlier_success()
An_expired_lease_records_an_interruption_rather_than_a_failure()
An_undecodable_cursor_is_rejected_rather_than_restarting(string)
Attempt_history_is_newest_first_and_capped_without_distorting_the_counters()
CreateHarnessAsync(TimeProvider)

Creates a fresh, empty store bound to time.

Created_range_is_lower_inclusive_and_upper_exclusive()
Empty_result_has_no_items_and_no_cursor()
Empty_state_list_means_any_state()
Instance_queries_page_and_filter_like_job_queries()
Instance_version_filter_requires_a_definition_id()
Interruptions_separate_infrastructure_churn_from_recorded_failures()
Job_details_carries_the_payload_the_summary_omits()
Job_details_returns_null_for_an_unknown_id()
Last_page_reports_a_null_cursor()
Limit_is_clamped_never_rejected()
NewTime()

A fake clock starting at Epoch.

Paging_is_stable_when_rows_change_state_underneath()
Paging_walks_every_row_exactly_once()
Query_orders_newest_first()
Queue_and_created_range_filters_combine_with_and()
Recurring_definitions_are_ordered_soonest_first()
Recurring_filters_by_queue_and_tenant_and_clamps_the_limit()
Recurring_paging_walks_every_definition_exactly_once()
Recurring_rejects_an_undecodable_cursor(string)
Recurring_summary_carries_schedule_fields_and_no_outcome()
Recurring_ties_on_fire_time_break_by_id()
State_filter_selects_only_those_states()
Statistics_count_recurring_definitions_and_overdue_ones()
Statistics_report_every_state_including_zeroes()
Statistics_respect_the_tenant_filter()
Tenant_filter_distinguishes_any_from_untenanted()
The_last_outcome_is_the_state_of_the_most_recently_created_fired_job()
The_link_to_a_definition_survives_the_definition_being_removed()