MembershipTableTestRunner
class
Namespace: Orleans.Clustering.TestKit
Sealed, unconditional, individually invocable membership table guarantees.
public sealed class MembershipTableTestRunnerRemarks
Use a fresh initialized fixture for each method. Failed assertions and infrastructure errors propagate to the caller.
Constructors
MembershipTableTestRunner(MembershipTableTestFixture, int, Action<string>, int)Creates a runner over initialized independent handles. Row count controls workload, never guarantees.
Methods
CleanupDefunctSiloEntries_RemovesOnlyStrictlyOldDeadRows(CancellationToken)G25: eligible Dead rows compact at the same version or in atomic +1 batches; retained canonical fields are preserved.Clusters_SharedBackendWithOverlappingSiloAddresses_AreIsolated(CancellationToken)G24: shared-backend overlapping identities are isolated by cluster, not service or address.ConcurrentCrossRowUpdates_SharedTableVersion_HaveExactlyOneWinner(CancellationToken)G20: two armed cross-row writes using one table candidate have exactly one winner.ConcurrentReadAll_ReturnsOnlyAtomicCommittedViews(CancellationToken)G21: bounded simultaneous full reads match only complete before/after committed views.ConcurrentReadRow_ReturnsOnlyAtomicCommittedViews(CancellationToken)G22: each changing, sentinel, or missing point read matches its own legal atomic view.DeleteMembershipTableEntries_DeletesOwnClusterAndPreservesOtherCluster(CancellationToken)G26: native verification confirms deletion before owner disposal, while the other cluster remains intact.DeleteMembershipTableEntries_DifferentClusterId_NeverDeletesConfiguredCluster(CancellationToken)G27: deleting a different populated cluster never deletes the configured cluster.Handles_IndependentlyConstructed_ShareCommittedBackingState(CancellationToken)G09: distinct constructed handles share one committed backing table.InitializeMembershipTable_RepeatedWithData_PreservesCommittedState(CancellationToken)G23: repeated initialization on existing and new handles preserves nonempty state exactly.InsertRow_CurrentTableVersion_CommitsExactlyOneVersion(CancellationToken)G01: insertion and its version are one exact +1 commit, preserving the sentinel.InsertRow_DuplicateIdentity_ReturnsFalseWithoutSideEffects(CancellationToken)G13: duplicate identity with a current valid candidate is rejected atomically.InsertRow_MutatingInputAndSuspectList_DoesNotMutateStoredState(CancellationToken)G17: inserted caller entry and nested suspect-list aliases cannot mutate storage.InsertRow_StaleTableToken_ReturnsFalseWithoutSideEffects(CancellationToken)G10: stale-table insertion has no side effects.Lifecycle_DeadRemainsTerminalAfterCompaction_SuccessorUsesNewGeneration(CancellationToken)G05: legal lifecycle, terminal ledger, and a distinct successor generation.ReadRow_AndReadAll_AgreeForPresentAndAbsentIdentities(CancellationToken)G15: point/full reads agree for distinct generations, other endpoints, and absent identities.Reads_MaySkipCommittedVersions_WithoutSkippingHistoryValidation(CancellationToken)G04: reads may skip two separately validated commits.Reads_MutatingReturnedEntryAndSuspectList_DoesNotMutateStoredState(CancellationToken)G19: caller mutations of point and full read results cannot mutate storage.Reads_RetainedObjectsRemainUnchangedAfterLaterWrites(CancellationToken)G16: the actual retained data, entries, and nested lists remain unchanged after later writes.Reads_SameVersion_PreservesRetainedCanonicalFields(CancellationToken)G03: equal versions retain canonical fields and non-Dead rows while liveness varies and Dead rows compact.UpdateIAmAlive_OwnerWrites_PreserveCanonicalFieldsAndTableVersion(CancellationToken)G06: owner liveness writes preserve canonical membership fields and the table version and ETag.UpdateRow_CurrentTokens_CommitsExactlyOneVersion(CancellationToken)G02: a current-token forward update replaces exactly its intended row.UpdateRow_MissingIdentityWithRealToken_ReturnsFalseWithoutSideEffects(CancellationToken)G14: a real row token cannot create a missing row through UpdateRow.UpdateRow_MutatingInputAndSuspectList_DoesNotMutateStoredState(CancellationToken)G18: updated caller entry and nested suspect-list aliases cannot mutate storage.UpdateRow_StaleSnapshotAfterSameRowCommit_ReturnsFalseWithoutSideEffects(CancellationToken)G12: a snapshot preceding a commit to the same row is rejected without partial effects.UpdateRow_StaleTableTokenWithCurrentRowToken_ReturnsFalseWithoutSideEffects(CancellationToken)G11: a stale table token is rejected even with freshly read target-row metadata.UpdateRow_TokensCapturedBeforeHeartbeat_CommitStatusChange(CancellationToken)G07: tokens captured before an owner heartbeat commit a canonical status change exactly once.UpdateRow_TokensCapturedBeforeHeartbeat_CommitVoteChange(CancellationToken)G08: tokens captured before an owner heartbeat commit a canonical suspect-vote change exactly once.
