# Block Service Test Database Date: 2026-03-27 Total tests: 1573 ## Domain Summary | Domain | Count | Description | |--------|-------|-------------| | other | 10 | Uncategorized | | testrunner | 179 | sw-test-runner: engine, parser, actions, reporting | | mode | 82 | Durability mode validation (best_effort, sync_all, sync_quorum) | | component | 14 | Component tests (real weed processes, localhost) | | replication | 73 | sync_all protocol, barriers, catch-up, rebuild, shipper | | operations | 143 | Expand, resize, snapshot, scrub, health score, profiles, presets | | wal | 81 | WAL writer, entries, admission control, pressure, hardening | | durability | 3 | Group commit, flusher, fsync batching | | access | 8 | NVMe/iSCSI adapter, naming (IQN/NQN) | | nvme | 252 | NVMe-oF target: protocol, controller, I/O, fabric, QA | | control | 683 | Master registry, failover, heartbeat, assignment, placement, API | | recovery | 1 | Crash recovery, WAL replay, defensive scan | | iscsi | 19 | iSCSI target: PDU, login, discovery, SCSI, session, stability | | fencing | 7 | Epoch, lease, role, write gate | | engine | 18 | BlockVol core: create, open, write, read, trim, close | ## Full Test List ### access | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestAdapterImplementsInterface` | adapter_test.go | 10 | | | | | 2 | `TestAdapterALUAProvider` | adapter_test.go | 72 | | | | | 3 | `TestRoleToALUA` | adapter_test.go | 108 | | | | | 4 | `TestUUIDToNAA` | adapter_test.go | 128 | | | | | 5 | `TestSanitizeFilename` | naming_test.go | 8 | | | | | 6 | `TestSanitizeIQN` | naming_test.go | 29 | | | | | 7 | `TestSanitizeIQN_Truncation` | naming_test.go | 48 | | | | | 8 | `TestSanitizeConsistency` | naming_test.go | 60 | | | | ### component | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestMain(m *testing.M) {` | component_test.go | 22 | | | | | 2 | `TestComponent_VolumeLifecycle` | component_test.go | 69 | | | | | 3 | `TestComponent_FailoverPromote` | component_test.go | 155 | | | | | 4 | `TestComponent_ManualPromote` | component_test.go | 227 | | | | | 5 | `TestComponent_FastReconnect` | component_test.go | 297 | | | | | 6 | `TestComponent_MultiReplica` | component_test.go | 357 | | | | | 7 | `TestComponent_ExpandThenFailover` | component_test.go | 437 | | | | | 8 | `TestComponent_NVMePublicationLifecycle` | component_test.go | 509 | | | | | 9 | `TestCP13_SyncAll_CreateVerifyMode` | cp13_protocol_test.go | 31 | | | | | 10 | `TestCP13_BestEffort_SurvivesReplicaDeath` | cp13_protocol_test.go | 94 | | | | | 11 | `TestCP13_SyncAll_FailoverPromotesReplica` | cp13_protocol_test.go | 159 | | | | | 12 | `TestCP13_SyncAll_ReplicaRestart_Rejoin` | cp13_protocol_test.go | 228 | | | | | 13 | `TestCP13_DurabilityModeDefault` | cp13_protocol_test.go | 312 | | | | | 14 | `TestCP13_ReplicaAddressCanonical` | cp13_protocol_test.go | 343 | | | | ### control | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestBlockQA_StopBeforeRun_NoPanic` | block_heartbeat_loop_test.go | 22 | | | | | 2 | `TestBlockQA_DoubleStop` | block_heartbeat_loop_test.go | 41 | | | | | 3 | `TestBlockQA_StopDuringCallback` | block_heartbeat_loop_test.go | 62 | | | | | 4 | `TestBlockQA_ZeroInterval_Clamped` | block_heartbeat_loop_test.go | 96 | | | | | 5 | `TestBlockQA_NegativeInterval_Clamped` | block_heartbeat_loop_test.go | 113 | | | | | 6 | `TestBlockQA_CallbackPanic_Survives` | block_heartbeat_loop_test.go | 132 | | | | | 7 | `TestBlockQA_SlowCallback_NoAccumulation` | block_heartbeat_loop_test.go | 161 | | | | | 8 | `TestBlockQA_CallbackSetAfterRun` | block_heartbeat_loop_test.go | 186 | | | | | 9 | `TestBlockQA_ConcurrentStop` | block_heartbeat_loop_test.go | 217 | | | | | 10 | `TestBlockCollectorPeriodicTick` | block_heartbeat_loop_test.go | 258 | | | | | 11 | `TestBlockCollectorStopNoLeak` | block_heartbeat_loop_test.go | 305 | | | | | 12 | `TestBlockCollectorNilCallback` | block_heartbeat_loop_test.go | 342 | | | | | 13 | `TestBlockAssign_Success` | block_heartbeat_loop_test.go | 371 | | | | | 14 | `TestBlockAssign_UnknownVolume` | block_heartbeat_loop_test.go | 394 | | | | | 15 | `TestBlockAssign_InvalidTransition` | block_heartbeat_loop_test.go | 413 | | | | | 16 | `TestBlockAssign_EmptyAssignments` | block_heartbeat_loop_test.go | 429 | | | | | 17 | `TestBlockAssign_NilSource` | block_heartbeat_loop_test.go | 445 | | | | | 18 | `TestBlockAssign_MixedBatch` | block_heartbeat_loop_test.go | 468 | | | | | 19 | `TestBlockAssign_RoleNoneIgnored` | block_heartbeat_loop_test.go | 500 | | | | | 20 | `TestInfoMessageRoundTrip` | block_heartbeat_proto_test.go | 8 | | | | | 21 | `TestShortInfoRoundTrip` | block_heartbeat_proto_test.go | 27 | | | | | 22 | `TestAssignmentRoundTrip` | block_heartbeat_proto_test.go | 41 | | | | | 23 | `TestInfoMessagesSliceRoundTrip` | block_heartbeat_proto_test.go | 55 | | | | | 24 | `TestAssignmentRoundTripWithReplicaAddrs` | block_heartbeat_proto_test.go | 72 | | | | | 25 | `TestInfoMessageRoundTripWithReplicaAddrs` | block_heartbeat_proto_test.go | 89 | | | | | 26 | `TestAssignmentFromProtoNilFields` | block_heartbeat_proto_test.go | 110 | | | | | 27 | `TestInfoMessageFromProtoNilFields` | block_heartbeat_proto_test.go | 124 | | | | | 28 | `TestLeaseTTLWithReplicaAddrs` | block_heartbeat_proto_test.go | 136 | | | | | 29 | `TestInfoMessage_ReplicaAddrsRoundTrip` | block_heartbeat_proto_test.go | 155 | | | | | 30 | `TestAssignmentsToProto` | block_heartbeat_proto_test.go | 171 | | | | | 31 | `TestNilProtoConversions` | block_heartbeat_proto_test.go | 188 | | | | | 32 | `TestInfoMessage_HealthScoreRoundTrip` | block_heartbeat_proto_test.go | 206 | | | | | 33 | `TestInfoMessage_ReplicaDegradedRoundTrip` | block_heartbeat_proto_test.go | 229 | | | | | 34 | `TestAssignment_MultiReplicaRoundTrip` | block_heartbeat_proto_test.go | 250 | | | | | 35 | `TestAssignment_PrecedenceRule` | block_heartbeat_proto_test.go | 280 | | | | | 36 | `TestAssignment_BackwardCompatScalar` | block_heartbeat_proto_test.go | 315 | | | | | 37 | `TestAssignmentsSlice_MultiReplicaRoundTrip` | block_heartbeat_proto_test.go | 339 | | | | | 38 | `TestInfoMessage_DurabilityModeRoundTrip` | block_heartbeat_proto_test.go | 373 | | | | | 39 | `TestInfoMessage_DurabilityModeEmpty_BackwardCompat` | block_heartbeat_proto_test.go | 393 | | | | | 40 | `TestInfoMessage_NvmeFieldsRoundTrip` | block_heartbeat_proto_test.go | 406 | | | | | 41 | `TestInfoMessage_NvmeFieldsEmpty_BackwardCompat` | block_heartbeat_proto_test.go | 429 | | | | | 42 | `TestInfoMessage_HealthFieldsZeroDefault` | block_heartbeat_proto_test.go | 445 | | | | | 43 | `TestBlockHeartbeat` | block_heartbeat_test.go | 10 | | | | | 44 | `TestIntegration_FailoverCSIPublish` | integration_block_test.go | 57 | | | | | 45 | `TestIntegration_RebuildOnRecovery` | integration_block_test.go | 136 | | | | | 46 | `TestIntegration_AssignmentDeliveryConfirmation` | integration_block_test.go | 237 | | | | | 47 | `TestIntegration_LeaseAwarePromotion` | integration_block_test.go | 333 | | | | | 48 | `TestIntegration_ReplicaFailureSingleCopy` | integration_block_test.go | 381 | | | | | 49 | `TestIntegration_TransientDisconnectNoSplitBrain` | integration_block_test.go | 441 | | | | | 50 | `TestIntegration_FullLifecycle` | integration_block_test.go | 507 | | | | | 51 | `TestIntegration_DoubleFailover` | integration_block_test.go | 624 | | | | | 52 | `TestIntegration_MultiVolumeFailoverRebuild` | integration_block_test.go | 700 | | | | | 53 | `TestQueue_EnqueuePeek` | master_block_assignment_queue_test.go | 14 | | | | | 54 | `TestQueue_PeekEmpty` | master_block_assignment_queue_test.go | 23 | | | | | 55 | `TestQueue_EnqueueBatch` | master_block_assignment_queue_test.go | 31 | | | | | 56 | `TestQueue_PeekDoesNotRemove` | master_block_assignment_queue_test.go | 42 | | | | | 57 | `TestQueue_PeekDoesNotAffectOtherServers` | master_block_assignment_queue_test.go | 52 | | | | | 58 | `TestQueue_ConcurrentEnqueuePeek` | master_block_assignment_queue_test.go | 65 | | | | | 59 | `TestQueue_Pending` | master_block_assignment_queue_test.go | 83 | | | | | 60 | `TestQueue_MultipleEnqueue` | master_block_assignment_queue_test.go | 95 | | | | | 61 | `TestQueue_ConfirmRemovesMatching` | master_block_assignment_queue_test.go | 105 | | | | | 62 | `TestQueue_ConfirmFromHeartbeat_PrunesConfirmed` | master_block_assignment_queue_test.go | 125 | | | | | 63 | `TestQueue_PeekPrunesStaleEpochs` | master_block_assignment_queue_test.go | 146 | | | | | 64 | `TestFailover_PrimaryDies_ReplicaPromoted` | master_block_failover_test.go | 74 | | | | | 65 | `TestFailover_ReplicaDies_NoAction` | master_block_failover_test.go | 89 | | | | | 66 | `TestFailover_NoReplica_NoPromotion` | master_block_failover_test.go | 102 | | | | | 67 | `TestFailover_EpochBumped` | master_block_failover_test.go | 127 | | | | | 68 | `TestFailover_RegistryUpdated` | master_block_failover_test.go | 139 | | | | | 69 | `TestFailover_AssignmentQueued` | master_block_failover_test.go | 157 | | | | | 70 | `TestFailover_MultipleVolumes` | master_block_failover_test.go | 183 | | | | | 71 | `TestFailover_LeaseNotExpired_DeferredPromotion` | master_block_failover_test.go | 200 | | | | | 72 | `TestFailover_LeaseExpired_ImmediatePromotion` | master_block_failover_test.go | 242 | | | | | 73 | `TestRebuild_PendingRecordedOnFailover` | master_block_failover_test.go | 260 | | | | | 74 | `TestRebuild_ReconnectTriggersDrain` | master_block_failover_test.go | 278 | | | | | 75 | `TestRebuild_StaleAndRebuildingAssignments` | master_block_failover_test.go | 296 | | | | | 76 | `TestRebuild_VolumeDeletedWhileDown` | master_block_failover_test.go | 317 | | | | | 77 | `TestRebuild_PendingClearedAfterDrain` | master_block_failover_test.go | 338 | | | | | 78 | `TestRebuild_NoPendingRebuilds_NoAction` | master_block_failover_test.go | 355 | | | | | 79 | `TestRebuild_MultipleVolumes` | master_block_failover_test.go | 367 | | | | | 80 | `TestRebuild_RegistryUpdatedWithNewReplica` | master_block_failover_test.go | 388 | | | | | 81 | `TestRebuild_AssignmentContainsRebuildAddr` | master_block_failover_test.go | 406 | | | | | 82 | `TestFailover_TransientDisconnect_NoPromotion` | master_block_failover_test.go | 454 | | | | | 83 | `TestFailover_NoPrimary_NoAction` | master_block_failover_test.go | 489 | | | | | 84 | `TestLifecycle_CreateFailoverRebuild` | master_block_failover_test.go | 515 | | | | | 85 | `TestRF3_PrimaryDies_BestReplicaPromoted` | master_block_failover_test.go | 622 | | | | | 86 | `TestRF3_OneReplicaDies_PrimaryUnchanged` | master_block_failover_test.go | 651 | | | | | 87 | `TestRF3_RecoverRebuildsDeadReplica` | master_block_failover_test.go | 685 | | | | | 88 | `TestRF3_OtherReplicasSurvivePromotion` | master_block_failover_test.go | 718 | | | | | 89 | `TestRF2_Unchanged_AfterCP82` | master_block_failover_test.go | 761 | | | | | 90 | `TestRF3_AllReplicasDead_NoPromotion` | master_block_failover_test.go | 788 | | | | | 91 | `TestRF3_LeaseDeferred_Promotion` | master_block_failover_test.go | 815 | | | | | 92 | `TestRF3_CancelDeferredOnReconnect` | master_block_failover_test.go | 865 | | | | | 93 | `TestT2_OrphanedPrimary_ReplicaReconnect_Promotes` | master_block_failover_test.go | 922 | | | | | 94 | `TestT2_PrimaryAlive_NoPromotion` | master_block_failover_test.go | 943 | | | | | 95 | `TestT2_MultipleOrphanedVolumes` | master_block_failover_test.go | 960 | | | | | 96 | `TestT2_RepeatedHeartbeats_NoDuplicatePromotion` | master_block_failover_test.go | 996 | | | | | 97 | `TestT2_OrphanedPrimary_LeaseNotExpired_DefersPromotion` | master_block_failover_test.go | 1021 | | | | | 98 | `TestT3_DeferredTimer_VolumeDeleted_NoPromotion` | master_block_failover_test.go | 1075 | | | | | 99 | `TestT3_DeferredTimer_EpochChanged_NoPromotion` | master_block_failover_test.go | 1108 | | | | | 100 | `TestT4_RebuildEmptyAddr_StillQueued` | master_block_failover_test.go | 1152 | | | | | 101 | `TestHealthState_Healthy_PrimaryWithReplicas` | master_block_observability_test.go | 19 | | | | | 102 | `TestHealthState_Unsafe_NotPrimary` | master_block_observability_test.go | 33 | | | | | 103 | `TestHealthState_Unsafe_StrictBelowRequired` | master_block_observability_test.go | 44 | | | | | 104 | `TestHealthState_Rebuilding` | master_block_observability_test.go | 57 | | | | | 105 | `TestHealthState_Degraded_BelowDesired` | master_block_observability_test.go | 71 | | | | | 106 | `TestHealthState_Degraded_FlagSet` | master_block_observability_test.go | 86 | | | | | 107 | `TestHealthState_WithLiveness_PrimaryDead` | master_block_observability_test.go | 99 | | | | | 108 | `TestHealthState_BestEffort_ZeroReplicas_NotUnsafe` | master_block_observability_test.go | 111 | | | | | 109 | `TestHealthState_RF1_NoReplicas_Healthy` | master_block_observability_test.go | 125 | | | | | 110 | `TestClusterHealthSummary` | master_block_observability_test.go | 139 | | | | | 111 | `TestBlockStatusHandler_IncludesHealthCounts` | master_block_observability_test.go | 180 | | | | | 112 | `TestEntryToVolumeInfo_IncludesHealthState` | master_block_observability_test.go | 220 | | | | | 113 | `TestEntryToVolumeInfo_PrimaryDead_Unsafe` | master_block_observability_test.go | 235 | | | | | 114 | `TestAlertRules_FileExists` | master_block_observability_test.go | 257 | | | | | 115 | `TestAlertRules_ReferencesRealMetrics` | master_block_observability_test.go | 275 | | | | | 116 | `TestDashboard_FileExists` | master_block_observability_test.go | 299 | | | | | 117 | `TestDashboard_QueriesReferenceRealMetrics` | master_block_observability_test.go | 324 | | | | | 118 | `TestEvaluateBlockPlacement_SingleCandidate_RF1` | master_block_plan_test.go | 19 | | | | | 119 | `TestEvaluateBlockPlacement_LeastLoaded` | master_block_plan_test.go | 38 | | | | | 120 | `TestEvaluateBlockPlacement_DeterministicTiebreak` | master_block_plan_test.go | 60 | | | | | 121 | `TestEvaluateBlockPlacement_RF2_PrimaryAndReplica` | master_block_plan_test.go | 79 | | | | | 122 | `TestEvaluateBlockPlacement_RF3_AllSelected` | master_block_plan_test.go | 97 | | | | | 123 | `TestEvaluateBlockPlacement_RF_ExceedsServers` | master_block_plan_test.go | 115 | | | | | 124 | `TestEvaluateBlockPlacement_SingleServer_BestEffort_RF2` | master_block_plan_test.go | 142 | | | | | 125 | `TestEvaluateBlockPlacement_SingleServer_SyncAll_RF2` | master_block_plan_test.go | 167 | | | | | 126 | `TestEvaluateBlockPlacement_NoServers` | master_block_plan_test.go | 188 | | | | | 127 | `TestEvaluateBlockPlacement_DiskTypeMismatch` | master_block_plan_test.go | 207 | | | | | 128 | `TestEvaluateBlockPlacement_InsufficientSpace` | master_block_plan_test.go | 229 | | | | | 129 | `TestEvaluateBlockPlacement_UnknownCapacity_Allowed` | master_block_plan_test.go | 246 | | | | | 130 | `TestBlockVolumePlanHandler_HappyPath` | master_block_plan_test.go | 288 | | | | | 131 | `TestBlockVolumePlanHandler_WithPreset` | master_block_plan_test.go | 321 | | | | | 132 | `TestBlockVolumePlanHandler_NoServers` | master_block_plan_test.go | 348 | | | | | 133 | `TestRegistry_RegisterLookup` | master_block_registry_test.go | 14 | | | | | 134 | `TestRegistry_Unregister` | master_block_registry_test.go | 42 | | | | | 135 | `TestRegistry_DuplicateRegister` | master_block_registry_test.go | 58 | | | | | 136 | `TestRegistry_ListByServer` | master_block_registry_test.go | 67 | | | | | 137 | `TestRegistry_UpdateFullHeartbeat` | master_block_registry_test.go | 87 | | | | | 138 | `TestRegistry_UpdateDeltaHeartbeat` | master_block_registry_test.go | 116 | | | | | 139 | `TestRegistry_PendingToActive` | master_block_registry_test.go | 142 | | | | | 140 | `TestRegistry_PickServer` | master_block_registry_test.go | 160 | | | | | 141 | `TestRegistry_PickServerEmpty` | master_block_registry_test.go | 176 | | | | | 142 | `TestRegistry_InflightLock` | master_block_registry_test.go | 184 | | | | | 143 | `TestRegistry_UnmarkDeadServer` | master_block_registry_test.go | 212 | | | | | 144 | `TestRegistry_FullHeartbeatUpdatesSizeBytes` | master_block_registry_test.go | 234 | | | | | 145 | `TestRegistry_ConcurrentAccess` | master_block_registry_test.go | 252 | | | | | 146 | `TestRegistry_SetReplica` | master_block_registry_test.go | 297 | | | | | 147 | `TestRegistry_ClearReplica` | master_block_registry_test.go | 327 | | | | | 148 | `TestRegistry_SetReplicaNotFound` | master_block_registry_test.go | 352 | | | | | 149 | `TestRegistry_SwapPrimaryReplica` | master_block_registry_test.go | 360 | | | | | 150 | `TestFullHeartbeat_UpdatesReplicaAddrs` | master_block_registry_test.go | 404 | | | | | 151 | `TestRegistry_AddReplica` | master_block_registry_test.go | 443 | | | | | 152 | `TestRegistry_AddReplica_TwoRF3` | master_block_registry_test.go | 476 | | | | | 153 | `TestRegistry_AddReplica_Upsert` | master_block_registry_test.go | 496 | | | | | 154 | `TestRegistry_RemoveReplica` | master_block_registry_test.go | 512 | | | | | 155 | `TestRegistry_PromoteBestReplica_PicksHighest` | master_block_registry_test.go | 540 | | | | | 156 | `TestRegistry_PromoteBestReplica_NoReplica` | master_block_registry_test.go | 586 | | | | | 157 | `TestRegistry_PromoteBestReplica_TiebreakByLSN` | master_block_registry_test.go | 596 | | | | | 158 | `TestRegistry_PromoteBestReplica_KeepsOthers` | master_block_registry_test.go | 633 | | | | | 159 | `TestRegistry_BackwardCompatAccessors` | master_block_registry_test.go | 664 | | | | | 160 | `TestRegistry_ReplicaFactorDefault` | master_block_registry_test.go | 696 | | | | | 161 | `TestRegistry_FullHeartbeat_UpdatesHealthScore` | master_block_registry_test.go | 714 | | | | | 162 | `TestRegistry_ReplicaHeartbeat_DoesNotDeleteVolume` | master_block_registry_test.go | 745 | | | | | 163 | `TestRegistry_ReplicaHeartbeat_StaleReplicaRemoved` | master_block_registry_test.go | 773 | | | | | 164 | `TestRegistry_ReplicaHeartbeat_ReconstructsAfterRestart` | master_block_registry_test.go | 803 | | | | | 165 | `TestRegistry_PromoteBestReplica_StaleHeartbeatIneligible` | master_block_registry_test.go | 847 | | | | | 166 | `TestRegistry_PromoteBestReplica_WALLagIneligible` | master_block_registry_test.go | 874 | | | | | 167 | `TestRegistry_PromoteBestReplica_RebuildingIneligible` | master_block_registry_test.go | 902 | | | | | 168 | `TestRegistry_PromoteBestReplica_EligibilityFiltersCorrectly` | master_block_registry_test.go | 930 | | | | | 169 | `TestRegistry_PromoteBestReplica_ConfigurableTolerance` | master_block_registry_test.go | 971 | | | | | 170 | `TestRegistry_PromoteBestReplica_DeadServerIneligible` | master_block_registry_test.go | 1012 | | | | | 171 | `TestRegistry_PromoteBestReplica_DeadSkipped_AlivePromoted` | master_block_registry_test.go | 1044 | | | | | 172 | `TestRegistry_EvaluatePromotion_Basic` | master_block_registry_test.go | 1075 | | | | | 173 | `TestRegistry_EvaluatePromotion_AllRejected` | master_block_registry_test.go | 1112 | | | | | 174 | `TestRegistry_EvaluatePromotion_NotFound` | master_block_registry_test.go | 1144 | | | | | 175 | `TestRegistry_PromoteBestReplica_NoHeartbeatIneligible` | master_block_registry_test.go | 1153 | | | | | 176 | `TestRegistry_PromoteBestReplica_UnsetRoleIneligible` | master_block_registry_test.go | 1185 | | | | | 177 | `TestRegistry_PromoteBestReplica_ClearsRebuildAddr` | master_block_registry_test.go | 1217 | | | | | 178 | `TestRegistry_LeaseGrants_PrimaryOnly` | master_block_registry_test.go | 1243 | | | | | 179 | `TestRegistry_LeaseGrants_PendingExcluded` | master_block_registry_test.go | 1297 | | | | | 180 | `TestRegistry_LeaseGrants_InactiveExcluded` | master_block_registry_test.go | 1332 | | | | | 181 | `TestRegistry_LeaseGrants_UnknownServer` | master_block_registry_test.go | 1352 | | | | | 182 | `TestRegistry_IsBlockCapable` | master_block_registry_test.go | 1364 | | | | | 183 | `TestRegistry_VolumesWithDeadPrimary_Basic` | master_block_registry_test.go | 1381 | | | | | 184 | `TestRegistry_VolumesWithDeadPrimary_PrimaryServer_NotIncluded` | master_block_registry_test.go | 1407 | | | | | 185 | `TestRegistry_EvaluatePromotion_PrimaryDead_StillShowsCandidate` | master_block_registry_test.go | 1425 | | | | | 186 | `TestRegistry_ManualPromote_AutoTarget` | master_block_registry_test.go | 1460 | | | | | 187 | `TestRegistry_ManualPromote_SpecificTarget` | master_block_registry_test.go | 1493 | | | | | 188 | `TestRegistry_ManualPromote_TargetNotFound` | master_block_registry_test.go | 1523 | | | | | 189 | `TestRegistry_ManualPromote_PrimaryAlive_Rejected` | master_block_registry_test.go | 1545 | | | | | 190 | `TestRegistry_ManualPromote_Force_StaleHeartbeat` | master_block_registry_test.go | 1573 | | | | | 191 | `TestRegistry_ManualPromote_Force_StillRejectsDeadServer` | master_block_registry_test.go | 1603 | | | | | 192 | `TestMasterRestart_HigherEpochWins` | master_block_registry_test.go | 1626 | | | | | 193 | `TestMasterRestart_LowerEpochBecomesReplica` | master_block_registry_test.go | 1660 | | | | | 194 | `TestMasterRestart_SameEpoch_HigherLSNWins` | master_block_registry_test.go | 1685 | | | | | 195 | `TestMasterRestart_SameEpoch_SameLSN_ExistingWins` | master_block_registry_test.go | 1707 | | | | | 196 | `TestMasterRestart_ReplicaHeartbeat_AddedCorrectly` | master_block_registry_test.go | 1729 | | | | | 197 | `TestMasterRestart_SameEpoch_RoleTrusted` | master_block_registry_test.go | 1751 | | | | | 198 | `TestMasterRestart_DuplicateReplicaHeartbeat_NoDuplicate` | master_block_registry_test.go | 1774 | | | | | 199 | `TestLookup_ReturnsCopy` | master_block_registry_test.go | 1807 | | | | | 200 | `TestLookup_ReplicaSliceCopy` | master_block_registry_test.go | 1838 | | | | | 201 | `TestListAll_ReturnsCopies` | master_block_registry_test.go | 1863 | | | | | 202 | `TestUpdateEntry_MutatesRegistry` | master_block_registry_test.go | 1878 | | | | | 203 | `TestUpdateEntry_NotFound` | master_block_registry_test.go | 1894 | | | | | 204 | `TestMaster_CreateBlockVolume` | master_grpc_server_block_test.go | 37 | | | | | 205 | `TestMaster_CreateIdempotent` | master_grpc_server_block_test.go | 69 | | | | | 206 | `TestMaster_CreateIdempotentSizeMismatch` | master_grpc_server_block_test.go | 94 | | | | | 207 | `TestMaster_CreateNoServers` | master_grpc_server_block_test.go | 125 | | | | | 208 | `TestMaster_CreateVSFailure_Retry` | master_grpc_server_block_test.go | 138 | | | | | 209 | `TestMaster_CreateVSFailure_Cleanup` | master_grpc_server_block_test.go | 171 | | | | | 210 | `TestMaster_CreateConcurrentSameName` | master_grpc_server_block_test.go | 193 | | | | | 211 | `TestMaster_DeleteBlockVolume` | master_grpc_server_block_test.go | 239 | | | | | 212 | `TestMaster_DeleteNotFound` | master_grpc_server_block_test.go | 263 | | | | | 213 | `TestMaster_CreateWithReplica` | master_grpc_server_block_test.go | 274 | | | | | 214 | `TestMaster_CreateSingleServer_NoReplica` | master_grpc_server_block_test.go | 328 | | | | | 215 | `TestMaster_CreateReplica_SecondFails_SingleCopy` | master_grpc_server_block_test.go | 364 | | | | | 216 | `TestMaster_CreateEnqueuesAssignments` | master_grpc_server_block_test.go | 402 | | | | | 217 | `TestMaster_CreateSingleCopy_NoReplicaAssignment` | master_grpc_server_block_test.go | 441 | | | | | 218 | `TestMaster_LookupReturnsReplicaServer` | master_grpc_server_block_test.go | 463 | | | | | 219 | `TestMaster_CreateBlockSnapshot` | master_grpc_server_block_test.go | 498 | | | | | 220 | `TestMaster_CreateBlockSnapshot_VolumeNotFound` | master_grpc_server_block_test.go | 524 | | | | | 221 | `TestMaster_DeleteBlockSnapshot` | master_grpc_server_block_test.go | 534 | | | | | 222 | `TestMaster_ListBlockSnapshots` | master_grpc_server_block_test.go | 553 | | | | | 223 | `TestMaster_ExpandBlockVolume` | master_grpc_server_block_test.go | 578 | | | | | 224 | `TestMaster_ExpandBlockVolume_VSFailure` | master_grpc_server_block_test.go | 609 | | | | | 225 | `TestMaster_LookupBlockVolume` | master_grpc_server_block_test.go | 634 | | | | | 226 | `TestMaster_CreateRF3_ThreeServers` | master_grpc_server_block_test.go | 691 | | | | | 227 | `TestMaster_CreateRF3_TwoServers` | master_grpc_server_block_test.go | 728 | | | | | 228 | `TestMaster_CreateRF2_Unchanged` | master_grpc_server_block_test.go | 759 | | | | | 229 | `TestMaster_DeleteRF3_DeletesAllReplicas` | master_grpc_server_block_test.go | 785 | | | | | 230 | `TestMaster_ExpandRF3_ExpandsAllReplicas` | master_grpc_server_block_test.go | 818 | | | | | 231 | `TestMaster_CreateRF3_AssignmentsIncludeReplicaAddrs` | master_grpc_server_block_test.go | 860 | | | | | 232 | `TestMaster_CreateResponse_IncludesReplicaServers` | master_grpc_server_block_test.go | 890 | | | | | 233 | `TestMaster_LookupResponse_IncludesReplicaFields` | master_grpc_server_block_test.go | 917 | | | | | 234 | `TestMaster_CreateIdempotent_IncludesReplicaServers` | master_grpc_server_block_test.go | 946 | | | | | 235 | `TestMaster_LookupResponse_ReplicaFactorDefault` | master_grpc_server_block_test.go | 971 | | | | | 236 | `TestMaster_ResponseConsistency_ReplicaServerVsReplicaServers` | master_grpc_server_block_test.go | 997 | | | | | 237 | `TestMaster_NvmeFieldsFlowThroughCreateAndLookup` | master_grpc_server_block_test.go | 1028 | | | | | 238 | `TestMaster_NoNvmeFieldsWhenDisabled` | master_grpc_server_block_test.go | 1084 | | | | | 239 | `TestMaster_PromotionCopiesNvmeFields` | master_grpc_server_block_test.go | 1114 | | | | | 240 | `TestMaster_ExpandCoordinated_Success` | master_grpc_server_block_test.go | 1219 | | | | | 241 | `TestMaster_ExpandCoordinated_PrepareFailure_Cancels` | master_grpc_server_block_test.go | 1268 | | | | | 242 | `TestMaster_ExpandCoordinated_Standalone_DirectCommit` | master_grpc_server_block_test.go | 1317 | | | | | 243 | `TestMaster_ExpandCoordinated_ConcurrentRejected` | master_grpc_server_block_test.go | 1345 | | | | | 244 | `TestMaster_ExpandCoordinated_Idempotent` | master_grpc_server_block_test.go | 1395 | | | | | 245 | `TestMaster_ExpandCoordinated_CommitFailure_MarksInconsistent` | master_grpc_server_block_test.go | 1419 | | | | | 246 | `TestMaster_ExpandCoordinated_HeartbeatSuppressedAfterPartialCommit` | master_grpc_server_block_test.go | 1497 | | | | | 247 | `TestMaster_ExpandCoordinated_FailoverDuringPrepare` | master_grpc_server_block_test.go | 1557 | | | | | 248 | `TestMaster_ExpandCoordinated_RestartRecovery` | master_grpc_server_block_test.go | 1610 | | | | | 249 | `TestMaster_ExpandCoordinated_B09_ReReadsEntryAfterLock` | master_grpc_server_block_test.go | 1662 | | | | | 250 | `TestMaster_ExpandCoordinated_B10_HeartbeatDoesNotDeleteDuringExpand` | master_grpc_server_block_test.go | 1747 | | | | | 251 | `TestBlockVolumeCreateHandler` | master_server_handlers_block_test.go | 48 | | | | | 252 | `TestBlockVolumeListHandler` | master_server_handlers_block_test.go | 76 | | | | | 253 | `TestBlockVolumeLookupHandler` | master_server_handlers_block_test.go | 110 | | | | | 254 | `TestBlockVolumeDeleteHandler` | master_server_handlers_block_test.go | 157 | | | | | 255 | `TestBlockAssignHandler` | master_server_handlers_block_test.go | 183 | | | | | 256 | `TestBlockServersHandler` | master_server_handlers_block_test.go | 230 | | | | | 257 | `TestListAll` | master_server_handlers_block_test.go | 254 | | | | | 258 | `TestServerSummaries` | master_server_handlers_block_test.go | 269 | | | | | 259 | `TestQABlockAssignmentProcessing` | qa_block_assign_test.go | 24 | | | | | 260 | `TestQABlockAssignmentProcessing` | qa_block_assign_test.go | 24 | | | | | 261 | `TestQA_CP11B1_DatabasePreset_Defaults` | qa_block_cp11b1_adversarial_test.go | 64 | | | | | 262 | `TestQA_CP11B1_DatabasePreset_Defaults` | qa_block_cp11b1_adversarial_test.go | 64 | | | | | 263 | `TestQA_CP11B1_OverridePrecedence_DurabilityWins` | qa_block_cp11b1_adversarial_test.go | 96 | | | | | 264 | `TestQA_CP11B1_OverridePrecedence_DurabilityWins` | qa_block_cp11b1_adversarial_test.go | 96 | | | | | 265 | `TestQA_CP11B1_InvalidPreset_Rejected` | qa_block_cp11b1_adversarial_test.go | 118 | | | | | 266 | `TestQA_CP11B1_InvalidPreset_Rejected` | qa_block_cp11b1_adversarial_test.go | 118 | | | | | 267 | `TestQA_CP11B1_SyncQuorum_RF2_Rejected` | qa_block_cp11b1_adversarial_test.go | 129 | | | | | 268 | `TestQA_CP11B1_SyncQuorum_RF2_Rejected` | qa_block_cp11b1_adversarial_test.go | 129 | | | | | 269 | `TestQA_CP11B1_NVMePref_NoNVMe_Warning` | qa_block_cp11b1_adversarial_test.go | 142 | | | | | 270 | `TestQA_CP11B1_NVMePref_NoNVMe_Warning` | qa_block_cp11b1_adversarial_test.go | 142 | | | | | 271 | `TestQA_CP11B1_NoPreset_BackwardCompat` | qa_block_cp11b1_adversarial_test.go | 161 | | | | | 272 | `TestQA_CP11B1_NoPreset_BackwardCompat` | qa_block_cp11b1_adversarial_test.go | 161 | | | | | 273 | `TestQA_CP11B1_ResolveHandler_HTTP` | qa_block_cp11b1_adversarial_test.go | 183 | | | | | 274 | `TestQA_CP11B1_ResolveHandler_HTTP` | qa_block_cp11b1_adversarial_test.go | 183 | | | | | 275 | `TestQA_CP11B1_CreateWithPreset_StoresPreset` | qa_block_cp11b1_adversarial_test.go | 216 | | | | | 276 | `TestQA_CP11B1_CreateWithPreset_StoresPreset` | qa_block_cp11b1_adversarial_test.go | 216 | | | | | 277 | `TestQA_CP11B1_RF_ExceedsServers_Warning` | qa_block_cp11b1_adversarial_test.go | 251 | | | | | 278 | `TestQA_CP11B1_RF_ExceedsServers_Warning` | qa_block_cp11b1_adversarial_test.go | 251 | | | | | 279 | `TestQA_CP11B1_StableOutputFields` | qa_block_cp11b1_adversarial_test.go | 270 | | | | | 280 | `TestQA_CP11B1_StableOutputFields` | qa_block_cp11b1_adversarial_test.go | 270 | | | | | 281 | `TestQA_CP11B1_CreateResolve_Parity` | qa_block_cp11b1_adversarial_test.go | 318 | | | | | 282 | `TestQA_CP11B1_CreateResolve_Parity` | qa_block_cp11b1_adversarial_test.go | 318 | | | | | 283 | `TestQA_CP11B1_NVMeFromHeartbeat_FreshCluster` | qa_block_cp11b1_adversarial_test.go | 367 | | | | | 284 | `TestQA_CP11B1_NVMeFromHeartbeat_FreshCluster` | qa_block_cp11b1_adversarial_test.go | 367 | | | | | 285 | `TestQA_CP11B1_NVMeLostAfterUnmark` | qa_block_cp11b1_adversarial_test.go | 392 | | | | | 286 | `TestQA_CP11B1_NVMeLostAfterUnmark` | qa_block_cp11b1_adversarial_test.go | 392 | | | | | 287 | `TestQA_CP11B1_MarkBlockCapable_PreservesNVMe` | qa_block_cp11b1_adversarial_test.go | 410 | | | | | 288 | `TestQA_CP11B1_MarkBlockCapable_PreservesNVMe` | qa_block_cp11b1_adversarial_test.go | 410 | | | | | 289 | `TestQA_CP11B1_InvalidDurabilityString_Rejected` | qa_block_cp11b1_adversarial_test.go | 425 | | | | | 290 | `TestQA_CP11B1_InvalidDurabilityString_Rejected` | qa_block_cp11b1_adversarial_test.go | 425 | | | | | 291 | `TestQA_CP11B1_OverrideDiskType` | qa_block_cp11b1_adversarial_test.go | 438 | | | | | 292 | `TestQA_CP11B1_OverrideDiskType` | qa_block_cp11b1_adversarial_test.go | 438 | | | | | 293 | `TestQA_CP11B1_AllOverridesAtOnce` | qa_block_cp11b1_adversarial_test.go | 458 | | | | | 294 | `TestQA_CP11B1_AllOverridesAtOnce` | qa_block_cp11b1_adversarial_test.go | 458 | | | | | 295 | `TestQA_CP11B1_PresetOverride_SyncAll_RF1_Warning` | qa_block_cp11b1_adversarial_test.go | 485 | | | | | 296 | `TestQA_CP11B1_PresetOverride_SyncAll_RF1_Warning` | qa_block_cp11b1_adversarial_test.go | 485 | | | | | 297 | `TestQA_CP11B1_ZeroServerCount_NoRFWarning` | qa_block_cp11b1_adversarial_test.go | 505 | | | | | 298 | `TestQA_CP11B1_ZeroServerCount_NoRFWarning` | qa_block_cp11b1_adversarial_test.go | 505 | | | | | 299 | `TestQA_CP11B1_ResolveEndpoint_InvalidPreset_Returns200WithErrors` | qa_block_cp11b1_adversarial_test.go | 520 | | | | | 300 | `TestQA_CP11B1_ResolveEndpoint_InvalidPreset_Returns200WithErrors` | qa_block_cp11b1_adversarial_test.go | 520 | | | | | 301 | `TestQA_CP11B1_CreateHandler_InvalidPreset_Returns400` | qa_block_cp11b1_adversarial_test.go | 543 | | | | | 302 | `TestQA_CP11B1_CreateHandler_InvalidPreset_Returns400` | qa_block_cp11b1_adversarial_test.go | 543 | | | | | 303 | `TestQA_CP11B1_ConcurrentResolve_NoPanic` | qa_block_cp11b1_adversarial_test.go | 559 | | | | | 304 | `TestQA_CP11B1_ConcurrentResolve_NoPanic` | qa_block_cp11b1_adversarial_test.go | 559 | | | | | 305 | `TestQA_CP11B2_ConcurrentPlanCalls` | qa_block_cp11b2_adversarial_test.go | 22 | | | | | 306 | `TestQA_CP11B2_ConcurrentPlanCalls` | qa_block_cp11b2_adversarial_test.go | 22 | | | | | 307 | `TestQA_CP11B2_NoBlockCapableServers` | qa_block_cp11b2_adversarial_test.go | 49 | | | | | 308 | `TestQA_CP11B2_NoBlockCapableServers` | qa_block_cp11b2_adversarial_test.go | 49 | | | | | 309 | `TestQA_CP11B2_RF_ExceedsAvailable` | qa_block_cp11b2_adversarial_test.go | 76 | | | | | 310 | `TestQA_CP11B2_RF_ExceedsAvailable` | qa_block_cp11b2_adversarial_test.go | 76 | | | | | 311 | `TestQA_CP11B2_PlanThenCreate_PolicyConsistency` | qa_block_cp11b2_adversarial_test.go | 108 | | | | | 312 | `TestQA_CP11B2_PlanThenCreate_PolicyConsistency` | qa_block_cp11b2_adversarial_test.go | 108 | | | | | 313 | `TestQA_CP11B2_PlanThenCreate_OrderedCandidateParity` | qa_block_cp11b2_adversarial_test.go | 148 | | | | | 314 | `TestQA_CP11B2_PlanThenCreate_OrderedCandidateParity` | qa_block_cp11b2_adversarial_test.go | 148 | | | | | 315 | `TestQA_CP11B2_PlanThenCreate_ReplicaOrderParity` | qa_block_cp11b2_adversarial_test.go | 197 | | | | | 316 | `TestQA_CP11B2_PlanThenCreate_ReplicaOrderParity` | qa_block_cp11b2_adversarial_test.go | 197 | | | | | 317 | `TestQA_CP11B2_Create_FallbackOnRPCFailure` | qa_block_cp11b2_adversarial_test.go | 251 | | | | | 318 | `TestQA_CP11B2_Create_FallbackOnRPCFailure` | qa_block_cp11b2_adversarial_test.go | 251 | | | | | 319 | `TestQA_CP11B2_PlanIsReadOnly` | qa_block_cp11b2_adversarial_test.go | 307 | | | | | 320 | `TestQA_CP11B2_PlanIsReadOnly` | qa_block_cp11b2_adversarial_test.go | 307 | | | | | 321 | `TestQA_CP11B2_RejectionReasonStability` | qa_block_cp11b2_adversarial_test.go | 337 | | | | | 322 | `TestQA_CP11B2_RejectionReasonStability` | qa_block_cp11b2_adversarial_test.go | 337 | | | | | 323 | `TestQA_CP11B2_DeterministicOrder_MultipleInvocations` | qa_block_cp11b2_adversarial_test.go | 368 | | | | | 324 | `TestQA_CP11B2_DeterministicOrder_MultipleInvocations` | qa_block_cp11b2_adversarial_test.go | 368 | | | | | 325 | `TestQA_CP11B2_RF0_BehavesAsRF1` | qa_block_cp11b2_adversarial_test.go | 409 | | | | | 326 | `TestQA_CP11B2_RF0_BehavesAsRF1` | qa_block_cp11b2_adversarial_test.go | 409 | | | | | 327 | `TestQA_CP11B2_RF1_NoReplicaNeeded` | qa_block_cp11b2_adversarial_test.go | 427 | | | | | 328 | `TestQA_CP11B2_RF1_NoReplicaNeeded` | qa_block_cp11b2_adversarial_test.go | 427 | | | | | 329 | `TestQA_CP11B2_AllRejected_DiskType` | qa_block_cp11b2_adversarial_test.go | 444 | | | | | 330 | `TestQA_CP11B2_AllRejected_DiskType` | qa_block_cp11b2_adversarial_test.go | 444 | | | | | 331 | `TestQA_CP11B2_AllRejected_Capacity` | qa_block_cp11b2_adversarial_test.go | 468 | | | | | 332 | `TestQA_CP11B2_AllRejected_Capacity` | qa_block_cp11b2_adversarial_test.go | 468 | | | | | 333 | `TestQA_CP11B2_MixedRejections` | qa_block_cp11b2_adversarial_test.go | 483 | | | | | 334 | `TestQA_CP11B2_MixedRejections` | qa_block_cp11b2_adversarial_test.go | 483 | | | | | 335 | `TestQA_CP11B2_SyncQuorum_RF3_FilteredTo2` | qa_block_cp11b2_adversarial_test.go | 510 | | | | | 336 | `TestQA_CP11B2_SyncQuorum_RF3_FilteredTo2` | qa_block_cp11b2_adversarial_test.go | 510 | | | | | 337 | `TestQA_CP11B2_UnknownDiskType_PassesFilter` | qa_block_cp11b2_adversarial_test.go | 532 | | | | | 338 | `TestQA_CP11B2_UnknownDiskType_PassesFilter` | qa_block_cp11b2_adversarial_test.go | 532 | | | | | 339 | `TestQA_CP11B2_LargeCandidateList` | qa_block_cp11b2_adversarial_test.go | 548 | | | | | 340 | `TestQA_CP11B2_LargeCandidateList` | qa_block_cp11b2_adversarial_test.go | 548 | | | | | 341 | `TestQA_CP11B2_FailedPrimary_TriedAsReplica` | qa_block_cp11b2_adversarial_test.go | 573 | | | | | 342 | `TestQA_CP11B2_FailedPrimary_TriedAsReplica` | qa_block_cp11b2_adversarial_test.go | 573 | | | | | 343 | `TestQA_CP11B2_PlanWithInvalidPreset` | qa_block_cp11b2_adversarial_test.go | 605 | | | | | 344 | `TestQA_CP11B2_PlanWithInvalidPreset` | qa_block_cp11b2_adversarial_test.go | 605 | | | | | 345 | `TestQA_T1_AllGatesFail_SingleReplica` | qa_block_cp11b3_adversarial_test.go | 26 | | | | | 346 | `TestQA_T1_AllGatesFail_SingleReplica` | qa_block_cp11b3_adversarial_test.go | 26 | | | | | 347 | `TestQA_T1_WALLag_ExactBoundary` | qa_block_cp11b3_adversarial_test.go | 56 | | | | | 348 | `TestQA_T1_WALLag_ExactBoundary` | qa_block_cp11b3_adversarial_test.go | 56 | | | | | 349 | `TestQA_T1_ZeroLeaseTTL_FallbackFreshness` | qa_block_cp11b3_adversarial_test.go | 93 | | | | | 350 | `TestQA_T1_ZeroLeaseTTL_FallbackFreshness` | qa_block_cp11b3_adversarial_test.go | 93 | | | | | 351 | `TestQA_T1_RF3_MixedGates_OnlyHealthyPromoted` | qa_block_cp11b3_adversarial_test.go | 118 | | | | | 352 | `TestQA_T1_RF3_MixedGates_OnlyHealthyPromoted` | qa_block_cp11b3_adversarial_test.go | 118 | | | | | 353 | `TestQA_T1_EvaluatePromotion_ReadOnly` | qa_block_cp11b3_adversarial_test.go | 155 | | | | | 354 | `TestQA_T1_EvaluatePromotion_ReadOnly` | qa_block_cp11b3_adversarial_test.go | 155 | | | | | 355 | `TestQA_T1_ConcurrentEvaluateAndPromote` | qa_block_cp11b3_adversarial_test.go | 190 | | | | | 356 | `TestQA_T1_ConcurrentEvaluateAndPromote` | qa_block_cp11b3_adversarial_test.go | 190 | | | | | 357 | `TestQA_T1_PromotionDuringExpand` | qa_block_cp11b3_adversarial_test.go | 233 | | | | | 358 | `TestQA_T1_PromotionDuringExpand` | qa_block_cp11b3_adversarial_test.go | 233 | | | | | 359 | `TestQA_T1_DoublePromotion_SecondFails` | qa_block_cp11b3_adversarial_test.go | 261 | | | | | 360 | `TestQA_T1_DoublePromotion_SecondFails` | qa_block_cp11b3_adversarial_test.go | 261 | | | | | 361 | `TestQA_T2_OrphanAndFailover_NoDoublePromotion` | qa_block_cp11b3_adversarial_test.go | 292 | | | | | 362 | `TestQA_T2_OrphanAndFailover_NoDoublePromotion` | qa_block_cp11b3_adversarial_test.go | 292 | | | | | 363 | `TestQA_T2_OrphanButReplicaNotPromotable` | qa_block_cp11b3_adversarial_test.go | 317 | | | | | 364 | `TestQA_T2_OrphanButReplicaNotPromotable` | qa_block_cp11b3_adversarial_test.go | 317 | | | | | 365 | `TestQA_T2_ConcurrentReevaluation_NoPanic` | qa_block_cp11b3_adversarial_test.go | 351 | | | | | 366 | `TestQA_T2_ConcurrentReevaluation_NoPanic` | qa_block_cp11b3_adversarial_test.go | 351 | | | | | 367 | `TestQA_T2_HeartbeatOrphanCheck_NoVolumes_NoOp` | qa_block_cp11b3_adversarial_test.go | 377 | | | | | 368 | `TestQA_T2_HeartbeatOrphanCheck_NoVolumes_NoOp` | qa_block_cp11b3_adversarial_test.go | 377 | | | | | 369 | `TestQA_T3_VolumeRecreated_TimerRejected` | qa_block_cp11b3_adversarial_test.go | 389 | | | | | 370 | `TestQA_T3_VolumeRecreated_TimerRejected` | qa_block_cp11b3_adversarial_test.go | 389 | | | | | 371 | `TestQA_T3_MultipleTimers_AllCancelled` | qa_block_cp11b3_adversarial_test.go | 430 | | | | | 372 | `TestQA_T3_MultipleTimers_AllCancelled` | qa_block_cp11b3_adversarial_test.go | 430 | | | | | 373 | `TestQA_T4_PromotionClearsStaleMetadata` | qa_block_cp11b3_adversarial_test.go | 483 | | | | | 374 | `TestQA_T4_PromotionClearsStaleMetadata` | qa_block_cp11b3_adversarial_test.go | 483 | | | | | 375 | `TestQA_T4_RebuildAddr_FromOldPrimary_NotUsed` | qa_block_cp11b3_adversarial_test.go | 522 | | | | | 376 | `TestQA_T4_RebuildAddr_FromOldPrimary_NotUsed` | qa_block_cp11b3_adversarial_test.go | 522 | | | | | 377 | `TestQA_T6_Preflight_NoReplicas` | qa_block_cp11b3_adversarial_test.go | 563 | | | | | 378 | `TestQA_T6_Preflight_NoReplicas` | qa_block_cp11b3_adversarial_test.go | 563 | | | | | 379 | `TestQA_T6_Preflight_MultipleRejections` | qa_block_cp11b3_adversarial_test.go | 580 | | | | | 380 | `TestQA_T6_Preflight_MultipleRejections` | qa_block_cp11b3_adversarial_test.go | 580 | | | | | 381 | `TestQA_T6_Preflight_NonExistent` | qa_block_cp11b3_adversarial_test.go | 621 | | | | | 382 | `TestQA_T6_Preflight_NonExistent` | qa_block_cp11b3_adversarial_test.go | 621 | | | | | 383 | `TestQA_T1_ZeroPrimaryLSN_AllReplicasEligible` | qa_block_cp11b3_adversarial_test.go | 637 | | | | | 384 | `TestQA_T1_ZeroPrimaryLSN_AllReplicasEligible` | qa_block_cp11b3_adversarial_test.go | 637 | | | | | 385 | `TestQA_T1_ReplicaWithPrimaryRole_Rejected` | qa_block_cp11b3_adversarial_test.go | 663 | | | | | 386 | `TestQA_T1_ReplicaWithPrimaryRole_Rejected` | qa_block_cp11b3_adversarial_test.go | 663 | | | | | 387 | `TestQA_T1_HeartbeatExactlyAtCutoff` | qa_block_cp11b3_adversarial_test.go | 686 | | | | | 388 | `TestQA_T1_HeartbeatExactlyAtCutoff` | qa_block_cp11b3_adversarial_test.go | 686 | | | | | 389 | `TestQA_T2_RF3_OrphanedPrimary_BestReplicaPromoted` | qa_block_cp11b3_adversarial_test.go | 713 | | | | | 390 | `TestQA_T2_RF3_OrphanedPrimary_BestReplicaPromoted` | qa_block_cp11b3_adversarial_test.go | 713 | | | | | 391 | `TestQA_T2_FailoverThenOrphan_SameVolume_NoDuplicate` | qa_block_cp11b3_adversarial_test.go | 743 | | | | | 392 | `TestQA_T2_FailoverThenOrphan_SameVolume_NoDuplicate` | qa_block_cp11b3_adversarial_test.go | 743 | | | | | 393 | `TestQA_T2_OrphanDeferredTimer_CancelledOnPrimaryReconnect` | qa_block_cp11b3_adversarial_test.go | 771 | | | | | 394 | `TestQA_T2_OrphanDeferredTimer_CancelledOnPrimaryReconnect` | qa_block_cp11b3_adversarial_test.go | 771 | | | | | 395 | `TestQA_T2_VolumeDeletedDuringReevaluation` | qa_block_cp11b3_adversarial_test.go | 823 | | | | | 396 | `TestQA_T2_VolumeDeletedDuringReevaluation` | qa_block_cp11b3_adversarial_test.go | 823 | | | | | 397 | `TestQA_T3_OrphanDeferredTimer_FiresAndPromotes` | qa_block_cp11b3_adversarial_test.go | 844 | | | | | 398 | `TestQA_T3_OrphanDeferredTimer_FiresAndPromotes` | qa_block_cp11b3_adversarial_test.go | 844 | | | | | 399 | `TestQA_T3_OrphanDeferredTimer_EpochChanged_NoPromotion` | qa_block_cp11b3_adversarial_test.go | 884 | | | | | 400 | `TestQA_T3_OrphanDeferredTimer_EpochChanged_NoPromotion` | qa_block_cp11b3_adversarial_test.go | 884 | | | | | 401 | `TestQA_T4_RebuildAddr_UpdatedByHeartbeat` | qa_block_cp11b3_adversarial_test.go | 921 | | | | | 402 | `TestQA_T4_RebuildAddr_UpdatedByHeartbeat` | qa_block_cp11b3_adversarial_test.go | 921 | | | | | 403 | `TestQA_T6_Preflight_FullResultFields` | qa_block_cp11b3_adversarial_test.go | 956 | | | | | 404 | `TestQA_T6_Preflight_FullResultFields` | qa_block_cp11b3_adversarial_test.go | 956 | | | | | 405 | `TestQA_T6_Preflight_StaleRole_Rejected` | qa_block_cp11b3_adversarial_test.go | 1003 | | | | | 406 | `TestQA_T6_Preflight_StaleRole_Rejected` | qa_block_cp11b3_adversarial_test.go | 1003 | | | | | 407 | `TestQA_T6_Preflight_DrainingRole_Rejected` | qa_block_cp11b3_adversarial_test.go | 1026 | | | | | 408 | `TestQA_T6_Preflight_DrainingRole_Rejected` | qa_block_cp11b3_adversarial_test.go | 1026 | | | | | 409 | `TestQA_ConcurrentFailoverAndOrphanReevaluation` | qa_block_cp11b3_adversarial_test.go | 1051 | | | | | 410 | `TestQA_ConcurrentFailoverAndOrphanReevaluation` | qa_block_cp11b3_adversarial_test.go | 1051 | | | | | 411 | `TestQA_ConcurrentVolumesWithDeadPrimaryAndUnmark` | qa_block_cp11b3_adversarial_test.go | 1072 | | | | | 412 | `TestQA_ConcurrentVolumesWithDeadPrimaryAndUnmark` | qa_block_cp11b3_adversarial_test.go | 1072 | | | | | 413 | `TestQA_T5_ManualPromote_ForceNoHeartbeat_Rejected` | qa_block_cp11b3_adversarial_test.go | 1104 | | | | | 414 | `TestQA_T5_ManualPromote_ForceNoHeartbeat_Rejected` | qa_block_cp11b3_adversarial_test.go | 1104 | | | | | 415 | `TestQA_T5_ManualPromote_ForceWrongRole_Rejected` | qa_block_cp11b3_adversarial_test.go | 1127 | | | | | 416 | `TestQA_T5_ManualPromote_ForceWrongRole_Rejected` | qa_block_cp11b3_adversarial_test.go | 1127 | | | | | 417 | `TestQA_T5_ManualPromote_ForceBypassesWALLag` | qa_block_cp11b3_adversarial_test.go | 1150 | | | | | 418 | `TestQA_T5_ManualPromote_ForceBypassesWALLag` | qa_block_cp11b3_adversarial_test.go | 1150 | | | | | 419 | `TestQA_T5_ManualPromote_PrimaryAlive_ForceOverrides` | qa_block_cp11b3_adversarial_test.go | 1185 | | | | | 420 | `TestQA_T5_ManualPromote_PrimaryAlive_ForceOverrides` | qa_block_cp11b3_adversarial_test.go | 1185 | | | | | 421 | `TestQA_T5_ManualPromote_ConcurrentWithAutoPromotion` | qa_block_cp11b3_adversarial_test.go | 1223 | | | | | 422 | `TestQA_T5_ManualPromote_ConcurrentWithAutoPromotion` | qa_block_cp11b3_adversarial_test.go | 1223 | | | | | 423 | `TestQA_T5_ManualPromote_ReturnsStructuredRejections` | qa_block_cp11b3_adversarial_test.go | 1264 | | | | | 424 | `TestQA_T5_ManualPromote_ReturnsStructuredRejections` | qa_block_cp11b3_adversarial_test.go | 1264 | | | | | 425 | `TestQA_T5_PromoteHandler_HTTP` | qa_block_cp11b3_adversarial_test.go | 1301 | | | | | 426 | `TestQA_T5_PromoteHandler_HTTP` | qa_block_cp11b3_adversarial_test.go | 1301 | | | | | 427 | `TestQA_T5_PromotionsTotal_CountsBothAutoAndManual` | qa_block_cp11b3_adversarial_test.go | 1361 | | | | | 428 | `TestQA_T5_PromotionsTotal_CountsBothAutoAndManual` | qa_block_cp11b3_adversarial_test.go | 1361 | | | | | 429 | `TestQA_T5_ManualPromote_ReturnsOldPrimary` | qa_block_cp11b3_adversarial_test.go | 1412 | | | | | 430 | `TestQA_T5_ManualPromote_ReturnsOldPrimary` | qa_block_cp11b3_adversarial_test.go | 1412 | | | | | 431 | `TestQA_T5_ManualPromote_DoubleExhaustsReplicas` | qa_block_cp11b3_adversarial_test.go | 1445 | | | | | 432 | `TestQA_T5_ManualPromote_DoubleExhaustsReplicas` | qa_block_cp11b3_adversarial_test.go | 1445 | | | | | 433 | `TestQA_T5_ManualPromote_TransfersNVMeFields` | qa_block_cp11b3_adversarial_test.go | 1480 | | | | | 434 | `TestQA_T5_ManualPromote_TransfersNVMeFields` | qa_block_cp11b3_adversarial_test.go | 1480 | | | | | 435 | `TestQA_T5_RF3_ForceSpecificTarget_LowerHealth` | qa_block_cp11b3_adversarial_test.go | 1508 | | | | | 436 | `TestQA_T5_RF3_ForceSpecificTarget_LowerHealth` | qa_block_cp11b3_adversarial_test.go | 1508 | | | | | 437 | `TestQA_T5_ManualPromote_DuringExpand` | qa_block_cp11b3_adversarial_test.go | 1545 | | | | | 438 | `TestQA_T5_ManualPromote_DuringExpand` | qa_block_cp11b3_adversarial_test.go | 1545 | | | | | 439 | `TestQA_T5_ManualPromote_NonExistentVolume` | qa_block_cp11b3_adversarial_test.go | 1577 | | | | | 440 | `TestQA_T5_ManualPromote_NonExistentVolume` | qa_block_cp11b3_adversarial_test.go | 1577 | | | | | 441 | `TestQA_Reg_FullHeartbeatCrossTalk` | qa_block_cp62_test.go | 26 | | | | | 442 | `TestQA_Reg_FullHeartbeatCrossTalk` | qa_block_cp62_test.go | 26 | | | | | 443 | `TestQA_Reg_FullHeartbeatEmptyServer` | qa_block_cp62_test.go | 46 | | | | | 444 | `TestQA_Reg_FullHeartbeatEmptyServer` | qa_block_cp62_test.go | 46 | | | | | 445 | `TestQA_Reg_ConcurrentHeartbeatAndRegister` | qa_block_cp62_test.go | 64 | | | | | 446 | `TestQA_Reg_ConcurrentHeartbeatAndRegister` | qa_block_cp62_test.go | 64 | | | | | 447 | `TestQA_Reg_DeltaHeartbeatUnknownPath` | qa_block_cp62_test.go | 107 | | | | | 448 | `TestQA_Reg_DeltaHeartbeatUnknownPath` | qa_block_cp62_test.go | 107 | | | | | 449 | `TestQA_Reg_PickServerTiebreaker` | qa_block_cp62_test.go | 125 | | | | | 450 | `TestQA_Reg_PickServerTiebreaker` | qa_block_cp62_test.go | 125 | | | | | 451 | `TestQA_Reg_ReregisterDifferentServer` | qa_block_cp62_test.go | 146 | | | | | 452 | `TestQA_Reg_ReregisterDifferentServer` | qa_block_cp62_test.go | 146 | | | | | 453 | `TestQA_Reg_InflightIndependence` | qa_block_cp62_test.go | 173 | | | | | 454 | `TestQA_Reg_InflightIndependence` | qa_block_cp62_test.go | 173 | | | | | 455 | `TestQA_Reg_BlockCapableServersAfterUnmark` | qa_block_cp62_test.go | 194 | | | | | 456 | `TestQA_Reg_BlockCapableServersAfterUnmark` | qa_block_cp62_test.go | 194 | | | | | 457 | `TestQA_Master_DeleteVSUnreachable` | qa_block_cp62_test.go | 219 | | | | | 458 | `TestQA_Master_DeleteVSUnreachable` | qa_block_cp62_test.go | 219 | | | | | 459 | `TestQA_Master_CreateSanitizedName` | qa_block_cp62_test.go | 249 | | | | | 460 | `TestQA_Master_CreateSanitizedName` | qa_block_cp62_test.go | 249 | | | | | 461 | `TestQA_Master_ConcurrentCreateDelete` | qa_block_cp62_test.go | 274 | | | | | 462 | `TestQA_Master_ConcurrentCreateDelete` | qa_block_cp62_test.go | 274 | | | | | 463 | `TestQA_Master_AllVSFailNoOrphan` | qa_block_cp62_test.go | 316 | | | | | 464 | `TestQA_Master_AllVSFailNoOrphan` | qa_block_cp62_test.go | 316 | | | | | 465 | `TestQA_Master_SlowAllocateBlocksSecond` | qa_block_cp62_test.go | 346 | | | | | 466 | `TestQA_Master_SlowAllocateBlocksSecond` | qa_block_cp62_test.go | 346 | | | | | 467 | `TestQA_Master_CreateZeroSize` | qa_block_cp62_test.go | 392 | | | | | 468 | `TestQA_Master_CreateZeroSize` | qa_block_cp62_test.go | 392 | | | | | 469 | `TestQA_Master_CreateEmptyName` | qa_block_cp62_test.go | 405 | | | | | 470 | `TestQA_Master_CreateEmptyName` | qa_block_cp62_test.go | 405 | | | | | 471 | `TestQA_Master_EmptyNameValidation` | qa_block_cp62_test.go | 417 | | | | | 472 | `TestQA_Master_EmptyNameValidation` | qa_block_cp62_test.go | 417 | | | | | 473 | `TestQA_VS_ConcurrentCreate` | qa_block_cp62_test.go | 436 | | | | | 474 | `TestQA_VS_ConcurrentCreate` | qa_block_cp62_test.go | 436 | | | | | 475 | `TestQA_VS_ConcurrentCreateDelete` | qa_block_cp62_test.go | 475 | | | | | 476 | `TestQA_VS_ConcurrentCreateDelete` | qa_block_cp62_test.go | 475 | | | | | 477 | `TestQA_VS_DeleteCleansSnapshots` | qa_block_cp62_test.go | 510 | | | | | 478 | `TestQA_VS_DeleteCleansSnapshots` | qa_block_cp62_test.go | 510 | | | | | 479 | `TestQA_VS_SanitizationCollision` | qa_block_cp62_test.go | 530 | | | | | 480 | `TestQA_VS_SanitizationCollision` | qa_block_cp62_test.go | 530 | | | | | 481 | `TestQA_VS_CreateIdempotentReaddTarget` | qa_block_cp62_test.go | 552 | | | | | 482 | `TestQA_VS_CreateIdempotentReaddTarget` | qa_block_cp62_test.go | 552 | | | | | 483 | `TestQA_VS_GrpcNilBlockService` | qa_block_cp62_test.go | 573 | | | | | 484 | `TestQA_VS_GrpcNilBlockService` | qa_block_cp62_test.go | 573 | | | | | 485 | `TestQA_Queue_ConfirmWrongEpoch` | qa_block_cp63_test.go | 92 | | | | | 486 | `TestQA_Queue_ConfirmWrongEpoch` | qa_block_cp63_test.go | 92 | | | | | 487 | `TestQA_Queue_HeartbeatPartialConfirm` | qa_block_cp63_test.go | 112 | | | | | 488 | `TestQA_Queue_HeartbeatPartialConfirm` | qa_block_cp63_test.go | 112 | | | | | 489 | `TestQA_Queue_HeartbeatWrongEpochNoConfirm` | qa_block_cp63_test.go | 131 | | | | | 490 | `TestQA_Queue_HeartbeatWrongEpochNoConfirm` | qa_block_cp63_test.go | 131 | | | | | 491 | `TestQA_Queue_SamePathSameEpochDifferentRoles` | qa_block_cp63_test.go | 144 | | | | | 492 | `TestQA_Queue_SamePathSameEpochDifferentRoles` | qa_block_cp63_test.go | 144 | | | | | 493 | `TestQA_Queue_ConfirmOnUnknownServer` | qa_block_cp63_test.go | 157 | | | | | 494 | `TestQA_Queue_ConfirmOnUnknownServer` | qa_block_cp63_test.go | 157 | | | | | 495 | `TestQA_Queue_PeekReturnsCopy` | qa_block_cp63_test.go | 164 | | | | | 496 | `TestQA_Queue_PeekReturnsCopy` | qa_block_cp63_test.go | 164 | | | | | 497 | `TestQA_Queue_ConcurrentEnqueueConfirmPeek` | qa_block_cp63_test.go | 179 | | | | | 498 | `TestQA_Queue_ConcurrentEnqueueConfirmPeek` | qa_block_cp63_test.go | 179 | | | | | 499 | `TestQA_Reg_DoubleSwap` | qa_block_cp63_test.go | 205 | | | | | 500 | `TestQA_Reg_DoubleSwap` | qa_block_cp63_test.go | 205 | | | | | 501 | `TestQA_Reg_SwapNoReplica` | qa_block_cp63_test.go | 244 | | | | | 502 | `TestQA_Reg_SwapNoReplica` | qa_block_cp63_test.go | 244 | | | | | 503 | `TestQA_Reg_SwapNotFound` | qa_block_cp63_test.go | 257 | | | | | 504 | `TestQA_Reg_SwapNotFound` | qa_block_cp63_test.go | 257 | | | | | 505 | `TestQA_Reg_ConcurrentSwapAndLookup` | qa_block_cp63_test.go | 265 | | | | | 506 | `TestQA_Reg_ConcurrentSwapAndLookup` | qa_block_cp63_test.go | 265 | | | | | 507 | `TestQA_Reg_SetReplicaTwice_ReplacesOld` | qa_block_cp63_test.go | 291 | | | | | 508 | `TestQA_Reg_SetReplicaTwice_ReplacesOld` | qa_block_cp63_test.go | 291 | | | | | 509 | `TestQA_Reg_FullHeartbeatDoesNotClobberReplicaServer` | qa_block_cp63_test.go | 322 | | | | | 510 | `TestQA_Reg_FullHeartbeatDoesNotClobberReplicaServer` | qa_block_cp63_test.go | 322 | | | | | 511 | `TestQA_Reg_ListByServerIncludesBothPrimaryAndReplica` | qa_block_cp63_test.go | 342 | | | | | 512 | `TestQA_Reg_ListByServerIncludesBothPrimaryAndReplica` | qa_block_cp63_test.go | 342 | | | | | 513 | `TestQA_Failover_DeferredCancelledOnReconnect` | qa_block_cp63_test.go | 363 | | | | | 514 | `TestQA_Failover_DeferredCancelledOnReconnect` | qa_block_cp63_test.go | 363 | | | | | 515 | `TestQA_Failover_DoubleDisconnect_NoPanic` | qa_block_cp63_test.go | 389 | | | | | 516 | `TestQA_Failover_DoubleDisconnect_NoPanic` | qa_block_cp63_test.go | 389 | | | | | 517 | `TestQA_Failover_PromoteIdempotent_NoReplicaAfterFirstSwap` | qa_block_cp63_test.go | 398 | | | | | 518 | `TestQA_Failover_PromoteIdempotent_NoReplicaAfterFirstSwap` | qa_block_cp63_test.go | 398 | | | | | 519 | `TestQA_Failover_MixedLeaseStates` | qa_block_cp63_test.go | 431 | | | | | 520 | `TestQA_Failover_MixedLeaseStates` | qa_block_cp63_test.go | 431 | | | | | 521 | `TestQA_Failover_NoRegistryNoPanic` | qa_block_cp63_test.go | 460 | | | | | 522 | `TestQA_Failover_NoRegistryNoPanic` | qa_block_cp63_test.go | 460 | | | | | 523 | `TestQA_Failover_VolumeDeletedDuringDeferredTimer` | qa_block_cp63_test.go | 466 | | | | | 524 | `TestQA_Failover_VolumeDeletedDuringDeferredTimer` | qa_block_cp63_test.go | 466 | | | | | 525 | `TestQA_Failover_ConcurrentFailoverDifferentServers` | qa_block_cp63_test.go | 485 | | | | | 526 | `TestQA_Failover_ConcurrentFailoverDifferentServers` | qa_block_cp63_test.go | 485 | | | | | 527 | `TestQA_Create_LeaseNonZero_ImmediateFailoverSafe` | qa_block_cp63_test.go | 512 | | | | | 528 | `TestQA_Create_LeaseNonZero_ImmediateFailoverSafe` | qa_block_cp63_test.go | 512 | | | | | 529 | `TestQA_Create_ReplicaDeleteOnVolDelete` | qa_block_cp63_test.go | 540 | | | | | 530 | `TestQA_Create_ReplicaDeleteOnVolDelete` | qa_block_cp63_test.go | 540 | | | | | 531 | `TestQA_Create_ReplicaDeleteFailure_PrimaryStillDeleted` | qa_block_cp63_test.go | 579 | | | | | 532 | `TestQA_Create_ReplicaDeleteFailure_PrimaryStillDeleted` | qa_block_cp63_test.go | 579 | | | | | 533 | `TestQA_Rebuild_DoubleReconnect_NoDuplicateAssignments` | qa_block_cp63_test.go | 616 | | | | | 534 | `TestQA_Rebuild_DoubleReconnect_NoDuplicateAssignments` | qa_block_cp63_test.go | 616 | | | | | 535 | `TestQA_Rebuild_RecoverNilFailoverState` | qa_block_cp63_test.go | 635 | | | | | 536 | `TestQA_Rebuild_RecoverNilFailoverState` | qa_block_cp63_test.go | 635 | | | | | 537 | `TestQA_Rebuild_FullCycle_CreateFailoverRecoverRebuild` | qa_block_cp63_test.go | 647 | | | | | 538 | `TestQA_Rebuild_FullCycle_CreateFailoverRecoverRebuild` | qa_block_cp63_test.go | 647 | | | | | 539 | `TestQA_FailoverEnqueuesNewPrimaryAssignment` | qa_block_cp63_test.go | 711 | | | | | 540 | `TestQA_FailoverEnqueuesNewPrimaryAssignment` | qa_block_cp63_test.go | 711 | | | | | 541 | `TestQA_HeartbeatConfirmsFailoverAssignment` | qa_block_cp63_test.go | 733 | | | | | 542 | `TestQA_HeartbeatConfirmsFailoverAssignment` | qa_block_cp63_test.go | 733 | | | | | 543 | `TestQA_SwapEpochMonotonicallyIncreasing` | qa_block_cp63_test.go | 754 | | | | | 544 | `TestQA_SwapEpochMonotonicallyIncreasing` | qa_block_cp63_test.go | 754 | | | | | 545 | `TestQA_CancelDeferredTimers_NoPendingRebuilds` | qa_block_cp63_test.go | 775 | | | | | 546 | `TestQA_CancelDeferredTimers_NoPendingRebuilds` | qa_block_cp63_test.go | 775 | | | | | 547 | `TestQA_Failover_ReplicaServerDies_PrimaryUntouched` | qa_block_cp63_test.go | 781 | | | | | 548 | `TestQA_Failover_ReplicaServerDies_PrimaryUntouched` | qa_block_cp63_test.go | 781 | | | | | 549 | `TestQA_Queue_EnqueueBatchEmpty` | qa_block_cp63_test.go | 797 | | | | | 550 | `TestQA_Queue_EnqueueBatchEmpty` | qa_block_cp63_test.go | 797 | | | | | 551 | `TestQA_CP82_PrimaryCrash_AfterAck_BeforeReplicaBarrier` | qa_block_cp82_adversarial_test.go | 159 | | | | | 552 | `TestQA_CP82_PrimaryCrash_AfterAck_BeforeReplicaBarrier` | qa_block_cp82_adversarial_test.go | 159 | | | | | 553 | `TestQA_CP82_ReplicaHeartbeatSpoof_DoesNotDeletePrimary` | qa_block_cp82_adversarial_test.go | 187 | | | | | 554 | `TestQA_CP82_ReplicaHeartbeatSpoof_DoesNotDeletePrimary` | qa_block_cp82_adversarial_test.go | 187 | | | | | 555 | `TestQA_CP82_PromotionRejects_StaleButHealthyReplica` | qa_block_cp82_adversarial_test.go | 229 | | | | | 556 | `TestQA_CP82_PromotionRejects_StaleButHealthyReplica` | qa_block_cp82_adversarial_test.go | 229 | | | | | 557 | `TestQA_CP82_PromotionRejects_RebuildingReplica` | qa_block_cp82_adversarial_test.go | 263 | | | | | 558 | `TestQA_CP82_PromotionRejects_RebuildingReplica` | qa_block_cp82_adversarial_test.go | 263 | | | | | 559 | `TestQA_CP82_PromotionToleranceBoundary_ExactLSN` | qa_block_cp82_adversarial_test.go | 317 | | | | | 560 | `TestQA_CP82_PromotionToleranceBoundary_ExactLSN` | qa_block_cp82_adversarial_test.go | 317 | | | | | 561 | `TestQA_CP82_MasterRestart_ReconstructReplicas_ThenFailover` | qa_block_cp82_adversarial_test.go | 372 | | | | | 562 | `TestQA_CP82_MasterRestart_ReconstructReplicas_ThenFailover` | qa_block_cp82_adversarial_test.go | 372 | | | | | 563 | `TestQA_CP82_RF3_OneReplicaFlaps_UnderWriteLoad` | qa_block_cp82_adversarial_test.go | 443 | | | | | 564 | `TestQA_CP82_RF3_OneReplicaFlaps_UnderWriteLoad` | qa_block_cp82_adversarial_test.go | 443 | | | | | 565 | `TestQA_CP82_AssignmentPrecedence_ReplicaAddrsVsScalar` | qa_block_cp82_adversarial_test.go | 539 | | | | | 566 | `TestQA_CP82_AssignmentPrecedence_ReplicaAddrsVsScalar` | qa_block_cp82_adversarial_test.go | 539 | | | | | 567 | `TestQA_CP82_ScrubConcurrentWrites_NoFalseCorruption` | qa_block_cp82_adversarial_test.go | 594 | | | | | 568 | `TestQA_CP82_ScrubConcurrentWrites_NoFalseCorruption` | qa_block_cp82_adversarial_test.go | 594 | | | | | 569 | `TestQA_CP82_ScrubDetectsCorruption_HealthDrops_PromotionAvoids` | qa_block_cp82_adversarial_test.go | 667 | | | | | 570 | `TestQA_CP82_ScrubDetectsCorruption_HealthDrops_PromotionAvoids` | qa_block_cp82_adversarial_test.go | 667 | | | | | 571 | `TestQA_CP82_ExpandRF3_PartialReplicaFailure` | qa_block_cp82_adversarial_test.go | 723 | | | | | 572 | `TestQA_CP82_ExpandRF3_PartialReplicaFailure` | qa_block_cp82_adversarial_test.go | 723 | | | | | 573 | `TestQA_CP82_ByServerIndexConsistency_AfterReplicaMove` | qa_block_cp82_adversarial_test.go | 800 | | | | | 574 | `TestQA_CP82_ByServerIndexConsistency_AfterReplicaMove` | qa_block_cp82_adversarial_test.go | 800 | | | | | 575 | `TestEdge_LSNLag_StaleReplicaSkipped` | qa_block_edge_cases_test.go | 25 | | | | | 576 | `TestEdge_LSNLag_StaleReplicaSkipped` | qa_block_edge_cases_test.go | 25 | | | | | 577 | `TestEdge_CascadeFailover_RF3_EpochChain` | qa_block_edge_cases_test.go | 73 | | | | | 578 | `TestEdge_CascadeFailover_RF3_EpochChain` | qa_block_edge_cases_test.go | 73 | | | | | 579 | `TestEdge_ConcurrentFailoverAndHeartbeat_NoPanic` | qa_block_edge_cases_test.go | 144 | | | | | 580 | `TestEdge_ConcurrentFailoverAndHeartbeat_NoPanic` | qa_block_edge_cases_test.go | 144 | | | | | 581 | `TestEdge_LSNWithinTolerance_HealthWins` | qa_block_edge_cases_test.go | 187 | | | | | 582 | `TestEdge_LSNWithinTolerance_HealthWins` | qa_block_edge_cases_test.go | 187 | | | | | 583 | `TestEdge_NetworkFlap_RapidMarkUnmark` | qa_block_edge_cases_test.go | 220 | | | | | 584 | `TestEdge_NetworkFlap_RapidMarkUnmark` | qa_block_edge_cases_test.go | 220 | | | | | 585 | `TestEdge_RF3_MixedGates_BestEligiblePromoted` | qa_block_edge_cases_test.go | 280 | | | | | 586 | `TestEdge_RF3_MixedGates_BestEligiblePromoted` | qa_block_edge_cases_test.go | 280 | | | | | 587 | `TestEdge_PromotionUpdatesPublication` | qa_block_edge_cases_test.go | 340 | | | | | 588 | `TestEdge_PromotionUpdatesPublication` | qa_block_edge_cases_test.go | 340 | | | | | 589 | `TestEdge_OrphanReevaluation_LSNLag_StillPromotes` | qa_block_edge_cases_test.go | 375 | | | | | 590 | `TestEdge_OrphanReevaluation_LSNLag_StillPromotes` | qa_block_edge_cases_test.go | 375 | | | | | 591 | `TestEdge_RebuildAddr_ClearedThenRepopulated` | qa_block_edge_cases_test.go | 415 | | | | | 592 | `TestEdge_RebuildAddr_ClearedThenRepopulated` | qa_block_edge_cases_test.go | 415 | | | | | 593 | `TestEdge_MultipleVolumes_SameServer_AllFailover` | qa_block_edge_cases_test.go | 444 | | | | | 594 | `TestEdge_MultipleVolumes_SameServer_AllFailover` | qa_block_edge_cases_test.go | 444 | | | | | 595 | `TestQABlockHeartbeatCollector` | qa_block_heartbeat_loop_test.go | 11 | | | | | 596 | `TestQABlockHeartbeatCollector` | qa_block_heartbeat_loop_test.go | 11 | | | | | 597 | `TestQA_NVMe_CreateSetsFields` | qa_block_nvme_publication_test.go | 28 | | | | | 598 | `TestQA_NVMe_CreateSetsFields` | qa_block_nvme_publication_test.go | 28 | | | | | 599 | `TestQA_NVMe_MissingFieldsDegradeToISCSI` | qa_block_nvme_publication_test.go | 61 | | | | | 600 | `TestQA_NVMe_MissingFieldsDegradeToISCSI` | qa_block_nvme_publication_test.go | 61 | | | | | 601 | `TestQA_NVMe_HeartbeatSetsNvmeFields` | qa_block_nvme_publication_test.go | 94 | | | | | 602 | `TestQA_NVMe_HeartbeatSetsNvmeFields` | qa_block_nvme_publication_test.go | 94 | | | | | 603 | `TestQA_NVMe_HeartbeatClearsStaleNvme` | qa_block_nvme_publication_test.go | 135 | | | | | 604 | `TestQA_NVMe_HeartbeatClearsStaleNvme` | qa_block_nvme_publication_test.go | 135 | | | | | 605 | `TestQA_NVMe_PartialFields_OnlyAddr` | qa_block_nvme_publication_test.go | 170 | | | | | 606 | `TestQA_NVMe_PartialFields_OnlyAddr` | qa_block_nvme_publication_test.go | 170 | | | | | 607 | `TestQA_NVMe_PartialFields_OnlyNQN` | qa_block_nvme_publication_test.go | 192 | | | | | 608 | `TestQA_NVMe_PartialFields_OnlyNQN` | qa_block_nvme_publication_test.go | 192 | | | | | 609 | `TestQA_NVMe_SwapPrimaryReplica_PreservesNvme` | qa_block_nvme_publication_test.go | 213 | | | | | 610 | `TestQA_NVMe_SwapPrimaryReplica_PreservesNvme` | qa_block_nvme_publication_test.go | 213 | | | | | 611 | `TestQA_NVMe_PromoteBestReplica_NvmeFieldsCopied` | qa_block_nvme_publication_test.go | 256 | | | | | 612 | `TestQA_NVMe_PromoteBestReplica_NvmeFieldsCopied` | qa_block_nvme_publication_test.go | 256 | | | | | 613 | `TestQA_NVMe_HeartbeatProto_RoundTrip` | qa_block_nvme_publication_test.go | 303 | | | | | 614 | `TestQA_NVMe_HeartbeatProto_RoundTrip` | qa_block_nvme_publication_test.go | 303 | | | | | 615 | `TestQA_NVMe_HeartbeatProto_EmptyFields` | qa_block_nvme_publication_test.go | 333 | | | | | 616 | `TestQA_NVMe_HeartbeatProto_EmptyFields` | qa_block_nvme_publication_test.go | 333 | | | | | 617 | `TestQA_NVMe_FullHeartbeat_MasterRestart` | qa_block_nvme_publication_test.go | 358 | | | | | 618 | `TestQA_NVMe_FullHeartbeat_MasterRestart` | qa_block_nvme_publication_test.go | 358 | | | | | 619 | `TestQA_NVMe_ListByServerIncludesNvmeFields` | qa_block_nvme_publication_test.go | 402 | | | | | 620 | `TestQA_NVMe_ListByServerIncludesNvmeFields` | qa_block_nvme_publication_test.go | 402 | | | | | 621 | `TestIntegration_NVMe_CreateReturnsNvmeAddr` | qa_block_nvme_publication_test.go | 484 | | | | | 622 | `TestIntegration_NVMe_CreateReturnsNvmeAddr` | qa_block_nvme_publication_test.go | 484 | | | | | 623 | `TestIntegration_NVMe_LookupReturnsNvmeAddr` | qa_block_nvme_publication_test.go | 519 | | | | | 624 | `TestIntegration_NVMe_LookupReturnsNvmeAddr` | qa_block_nvme_publication_test.go | 519 | | | | | 625 | `TestIntegration_NVMe_FailoverUpdatesNvmeAddr` | qa_block_nvme_publication_test.go | 559 | | | | | 626 | `TestIntegration_NVMe_FailoverUpdatesNvmeAddr` | qa_block_nvme_publication_test.go | 559 | | | | | 627 | `TestIntegration_NVMe_HeartbeatReconstructionAfterMasterRestart` | qa_block_nvme_publication_test.go | 626 | | | | | 628 | `TestIntegration_NVMe_HeartbeatReconstructionAfterMasterRestart` | qa_block_nvme_publication_test.go | 626 | | | | | 629 | `TestIntegration_NVMe_MixedCluster` | qa_block_nvme_publication_test.go | 676 | | | | | 630 | `TestIntegration_NVMe_MixedCluster` | qa_block_nvme_publication_test.go | 676 | | | | | 631 | `TestIntegration_NVMe_VolumeServerHeartbeatCollector` | qa_block_nvme_publication_test.go | 741 | | | | | 632 | `TestIntegration_NVMe_VolumeServerHeartbeatCollector` | qa_block_nvme_publication_test.go | 741 | | | | | 633 | `TestIntegration_NVMe_VolumeServerNoNvme` | qa_block_nvme_publication_test.go | 791 | | | | | 634 | `TestIntegration_NVMe_VolumeServerNoNvme` | qa_block_nvme_publication_test.go | 791 | | | | | 635 | `TestIntegration_NVMe_FullLifecycle_K8s` | qa_block_nvme_publication_test.go | 825 | | | | | 636 | `TestIntegration_NVMe_FullLifecycle_K8s` | qa_block_nvme_publication_test.go | 825 | | | | | 637 | `TestQA_NVMe_ToggleNvmeOnRunningVS` | qa_block_nvme_publication_test.go | 945 | | | | | 638 | `TestQA_NVMe_ToggleNvmeOnRunningVS` | qa_block_nvme_publication_test.go | 945 | | | | | 639 | `TestQA_NVMe_ToggleNvmeOnRunningVS_ReplicaSide` | qa_block_nvme_publication_test.go | 1028 | | | | | 640 | `TestQA_NVMe_ToggleNvmeOnRunningVS_ReplicaSide` | qa_block_nvme_publication_test.go | 1028 | | | | | 641 | `TestQA_NVMe_PromotionThenImmediateLookup` | qa_block_nvme_publication_test.go | 1128 | | | | | 642 | `TestQA_NVMe_PromotionThenImmediateLookup` | qa_block_nvme_publication_test.go | 1128 | | | | | 643 | `TestQA_RF3_CreateAndVerifyReplicas` | qa_block_rf3_test.go | 51 | | | | | 644 | `TestQA_RF3_CreateAndVerifyReplicas` | qa_block_rf3_test.go | 51 | | | | | 645 | `TestQA_RF3_PrimaryDies_BestReplicaPromoted` | qa_block_rf3_test.go | 125 | | | | | 646 | `TestQA_RF3_PrimaryDies_BestReplicaPromoted` | qa_block_rf3_test.go | 125 | | | | | 647 | `TestQA_RF3_OneReplicaDies_WritesUnaffected` | qa_block_rf3_test.go | 175 | | | | | 648 | `TestQA_RF3_OneReplicaDies_WritesUnaffected` | qa_block_rf3_test.go | 175 | | | | | 649 | `TestQA_RF3_Rebuild_DeadReplicaCatchesUp` | qa_block_rf3_test.go | 214 | | | | | 650 | `TestQA_RF3_Rebuild_DeadReplicaCatchesUp` | qa_block_rf3_test.go | 214 | | | | | 651 | `TestQA_RF3_HealthScore_FailoverPreference` | qa_block_rf3_test.go | 265 | | | | | 652 | `TestQA_RF3_HealthScore_FailoverPreference` | qa_block_rf3_test.go | 265 | | | | | 653 | `TestQA_RF3_BackwardCompat_RF2_Unchanged` | qa_block_rf3_test.go | 308 | | | | | 654 | `TestQA_RF3_BackwardCompat_RF2_Unchanged` | qa_block_rf3_test.go | 308 | | | | | 655 | `TestQA_RF3_FullLifecycle` | qa_block_rf3_test.go | 357 | | | | | 656 | `TestQA_RF3_FullLifecycle` | qa_block_rf3_test.go | 357 | | | | | 657 | `TestVS_AllocateBlockVolume` | volume_grpc_block_test.go | 23 | | | | | 658 | `TestVS_AllocateIdempotent` | volume_grpc_block_test.go | 49 | | | | | 659 | `TestVS_AllocateSizeMismatch` | volume_grpc_block_test.go | 67 | | | | | 660 | `TestVS_DeleteBlockVolume` | volume_grpc_block_test.go | 82 | | | | | 661 | `TestVS_DeleteNotFound` | volume_grpc_block_test.go | 103 | | | | | 662 | `TestVS_SnapshotBlockVol` | volume_grpc_block_test.go | 112 | | | | | 663 | `TestVS_SnapshotVolumeNotFound` | volume_grpc_block_test.go | 129 | | | | | 664 | `TestVS_DeleteBlockSnapshot` | volume_grpc_block_test.go | 138 | | | | | 665 | `TestVS_ListBlockSnapshots` | volume_grpc_block_test.go | 154 | | | | | 666 | `TestVS_ListSnapshotsVolumeNotFound` | volume_grpc_block_test.go | 173 | | | | | 667 | `TestVS_ExpandBlockVol` | volume_grpc_block_test.go | 182 | | | | | 668 | `TestVS_ExpandVolumeNotFound` | volume_grpc_block_test.go | 196 | | | | | 669 | `TestVS_PrepareExpand` | volume_grpc_block_test.go | 205 | | | | | 670 | `TestVS_CommitExpand` | volume_grpc_block_test.go | 214 | | | | | 671 | `TestVS_CancelExpand` | volume_grpc_block_test.go | 230 | | | | | 672 | `TestVS_PrepareExpand_AlreadyInFlight` | volume_grpc_block_test.go | 242 | | | | | 673 | `TestBlockServiceDisabledByDefault` | volume_server_block_test.go | 27 | | | | | 674 | `TestBlockServiceStartAndShutdown` | volume_server_block_test.go | 40 | | | | | 675 | `TestBlockService_ProcessAssignment_Primary` | volume_server_block_test.go | 91 | | | | | 676 | `TestBlockService_ProcessAssignment_Replica` | volume_server_block_test.go | 112 | | | | | 677 | `TestBlockService_ProcessAssignment_UnknownVolume` | volume_server_block_test.go | 130 | | | | | 678 | `TestBlockService_ProcessAssignment_LeaseRefresh` | volume_server_block_test.go | 138 | | | | | 679 | `TestBlockService_ProcessAssignment_WithReplicaAddrs` | volume_server_block_test.go | 156 | | | | | 680 | `TestBlockService_HeartbeatIncludesReplicaAddrs` | volume_server_block_test.go | 173 | | | | | 681 | `TestBlockService_ReplicationPorts_Deterministic` | volume_server_block_test.go | 190 | | | | | 682 | `TestBlockService_ReplicationPorts_StableAcrossRestarts` | volume_server_block_test.go | 202 | | | | | 683 | `TestBlockService_ProcessAssignment_InvalidTransition` | volume_server_block_test.go | 212 | | | | ### durability | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestBugGCPanicWaitersHung` | bug_gc_panic_test.go | 19 | | | | | 2 | `TestFlusher` | flusher_test.go | 13 | | | | | 3 | `TestGroupCommitter` | group_commit_test.go | 11 | | | | ### engine | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestQA` | blockvol_qa_test.go | 20 | | | | | 2 | `TestQASuperblockValidation` | blockvol_qa_test.go | 804 | | | | | 3 | `TestQAWALWriterEdgeCases` | blockvol_qa_test.go | 862 | | | | | 4 | `TestQAWALEntryEdgeCases` | blockvol_qa_test.go | 960 | | | | | 5 | `TestQAGroupCommitter` | blockvol_qa_test.go | 1020 | | | | | 6 | `TestQAFlusher` | blockvol_qa_test.go | 1291 | | | | | 7 | `TestQARecovery` | blockvol_qa_test.go | 1677 | | | | | 8 | `TestQALifecycle` | blockvol_qa_test.go | 2221 | | | | | 9 | `TestQACrashStress` | blockvol_qa_test.go | 2517 | | | | | 10 | `TestQARecoveryEdgeCases` | blockvol_qa_test.go | 2999 | | | | | 11 | `TestQAFlusherEdgeCases` | blockvol_qa_test.go | 3330 | | | | | 12 | `TestQALifecycleConcurrency` | blockvol_qa_test.go | 3536 | | | | | 13 | `TestQAParameterExtremes` | blockvol_qa_test.go | 3718 | | | | | 14 | `TestBlockVol` | blockvol_test.go | 18 | | | | | 15 | `TestBlockVolConfig` | config_test.go | 9 | | | | | 16 | `TestDirtyMap` | dirty_map_test.go | 8 | | | | | 17 | `TestLBAValidation` | lba_test.go | 8 | | | | | 18 | `TestSuperblock` | superblock_test.go | 10 | | | | ### fencing | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestLeaseGrant` | lease_grant_test.go | 10 | | | | | 2 | `TestQAPhase4ACP1` | qa_phase4a_cp1_test.go | 16 | | | | | 3 | `TestQAPhase4ACP2` | qa_phase4a_cp2_test.go | 18 | | | | | 4 | `TestQAPhase4ACP3` | qa_phase4a_cp3_test.go | 15 | | | | | 5 | `TestQAPhase4ACP4a` | qa_phase4a_cp4a_test.go | 15 | | | | | 6 | `TestQAPhase4ACP4b1` | qa_phase4a_cp4b1_test.go | 13 | | | | | 7 | `TestQAPhase4ACP4b4` | qa_phase4a_cp4b4_test.go | 15 | | | | ### iscsi | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestCHAP_LoginSuccess` | auth_test.go | 13 | | | | | 2 | `TestCHAP_LoginWrongPassword` | auth_test.go | 105 | | | | | 3 | `TestCHAP_DisabledAllowsLogin` | auth_test.go | 146 | | | | | 4 | `TestBugCollectDataOutNoTimeout` | bug_dataout_timeout_test.go | 23 | | | | | 5 | `TestBugPendingQueueUnbounded` | bug_pending_unbounded_test.go | 22 | | | | | 6 | `TestDataIO` | dataio_test.go | 8 | | | | | 7 | `TestDiscovery` | discovery_test.go | 8 | | | | | 8 | `TestLogin` | login_test.go | 27 | | | | | 9 | `TestPDU` | pdu_test.go | 11 | | | | | 10 | `TestQACHAP` | qa_chap_test.go | 12 | | | | | 11 | `TestQAPhase3Engine` | qa_phase3_engine_test.go | 15 | | | | | 12 | `TestQAPhase3RXTX` | qa_rxtx_test.go | 15 | | | | | 13 | `TestQAPhase3Stability` | qa_stability_test.go | 20 | | | | | 14 | `TestMapBlockVolError_Durability_HardwareError` | scsi_durability_test.go | 11 | | | | | 15 | `TestMapBlockVolError_NonDurability_MediumError` | scsi_durability_test.go | 32 | | | | | 16 | `TestMapBlockVolError_StringMatchNoLongerWorks` | scsi_durability_test.go | 50 | | | | | 17 | `TestSCSI` | scsi_test.go | 74 | | | | | 18 | `TestSession` | session_test.go | 52 | | | | | 19 | `TestTarget` | target_test.go | 13 | | | | ### mode | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestParseDurabilityMode_Valid` | durability_mode_test.go | 10 | | | | | 2 | `TestParseDurabilityMode_Invalid` | durability_mode_test.go | 31 | | | | | 3 | `TestDurabilityMode_StringRoundTrip` | durability_mode_test.go | 38 | | | | | 4 | `TestDurabilityMode_Validate_SyncQuorum_RF2_Rejected` | durability_mode_test.go | 51 | | | | | 5 | `TestDurabilityMode_Validate_SyncQuorum_RF3_OK` | durability_mode_test.go | 58 | | | | | 6 | `TestDurabilityMode_Validate_BestEffort_RF1_OK` | durability_mode_test.go | 64 | | | | | 7 | `TestDurabilityMode_RequiredReplicas_SyncAll_RF2` | durability_mode_test.go | 70 | | | | | 8 | `TestDurabilityMode_RequiredReplicas_SyncQuorum_RF3` | durability_mode_test.go | 77 | | | | | 9 | `TestDurabilityMode_IsStrict` | durability_mode_test.go | 84 | | | | | 10 | `TestDurabilityMode_CreateCloseOpenRoundTrip` | durability_mode_test.go | 96 | | | | | 11 | `TestDurabilityMode_Accessor_Default` | durability_mode_test.go | 122 | | | | | 12 | `TestDurabilityMode_InvalidOnDisk_OpenFails` | durability_mode_test.go | 136 | | | | | 13 | `TestQA_CP831_IdempotentCreate_ModeMismatch_Rejected` | qa_block_cp831_adversarial_test.go | 29 | | | | | 14 | `TestQA_CP831_IdempotentCreate_ModeMismatch_Rejected` | qa_block_cp831_adversarial_test.go | 29 | | | | | 15 | `TestQA_CP831_IdempotentCreate_RFMismatch_Rejected` | qa_block_cp831_adversarial_test.go | 63 | | | | | 16 | `TestQA_CP831_IdempotentCreate_RFMismatch_Rejected` | qa_block_cp831_adversarial_test.go | 63 | | | | | 17 | `TestQA_CP831_IdempotentCreate_AllMatch_Succeeds` | qa_block_cp831_adversarial_test.go | 97 | | | | | 18 | `TestQA_CP831_IdempotentCreate_AllMatch_Succeeds` | qa_block_cp831_adversarial_test.go | 97 | | | | | 19 | `TestQA_CP831_InvalidDurabilityMode_Rejected` | qa_block_cp831_adversarial_test.go | 131 | | | | | 20 | `TestQA_CP831_InvalidDurabilityMode_Rejected` | qa_block_cp831_adversarial_test.go | 131 | | | | | 21 | `TestQA_CP831_HeartbeatEmptyMode_DoesNotOverwriteStrict` | qa_block_cp831_adversarial_test.go | 158 | | | | | 22 | `TestQA_CP831_HeartbeatEmptyMode_DoesNotOverwriteStrict` | qa_block_cp831_adversarial_test.go | 158 | | | | | 23 | `TestQA_CP831_HeartbeatNonEmptyMode_DoesUpdate` | qa_block_cp831_adversarial_test.go | 200 | | | | | 24 | `TestQA_CP831_HeartbeatNonEmptyMode_DoesUpdate` | qa_block_cp831_adversarial_test.go | 200 | | | | | 25 | `TestQA_CP831_SyncAll_RF3_PartialReplica_OneOfTwo_Fails` | qa_block_cp831_adversarial_test.go | 240 | | | | | 26 | `TestQA_CP831_SyncAll_RF3_PartialReplica_OneOfTwo_Fails` | qa_block_cp831_adversarial_test.go | 240 | | | | | 27 | `TestQA_CP831_SyncQuorum_RF3_OneReplicaOK_Succeeds` | qa_block_cp831_adversarial_test.go | 298 | | | | | 28 | `TestQA_CP831_SyncQuorum_RF3_OneReplicaOK_Succeeds` | qa_block_cp831_adversarial_test.go | 298 | | | | | 29 | `TestQA_CP831_SyncQuorum_RF3_AllReplicasFail_Fails` | qa_block_cp831_adversarial_test.go | 343 | | | | | 30 | `TestQA_CP831_SyncQuorum_RF3_AllReplicasFail_Fails` | qa_block_cp831_adversarial_test.go | 343 | | | | | 31 | `TestQA_CP831_ConcurrentCreate_SameName_DifferentModes` | qa_block_cp831_adversarial_test.go | 393 | | | | | 32 | `TestQA_CP831_ConcurrentCreate_SameName_DifferentModes` | qa_block_cp831_adversarial_test.go | 393 | | | | | 33 | `TestQA_CP831_FailoverPreservesDurabilityMode` | qa_block_cp831_adversarial_test.go | 464 | | | | | 34 | `TestQA_CP831_FailoverPreservesDurabilityMode` | qa_block_cp831_adversarial_test.go | 464 | | | | | 35 | `TestQA_CP831_ExpandPreservesDurabilityMode` | qa_block_cp831_adversarial_test.go | 513 | | | | | 36 | `TestQA_CP831_ExpandPreservesDurabilityMode` | qa_block_cp831_adversarial_test.go | 513 | | | | | 37 | `TestQA_CP831_LookupReturnsDurabilityMode` | qa_block_cp831_adversarial_test.go | 550 | | | | | 38 | `TestQA_CP831_LookupReturnsDurabilityMode` | qa_block_cp831_adversarial_test.go | 550 | | | | | 39 | `TestQA_CP831_BestEffort_NoReplicaCreate_StillSucceeds` | qa_block_cp831_adversarial_test.go | 590 | | | | | 40 | `TestQA_CP831_BestEffort_NoReplicaCreate_StillSucceeds` | qa_block_cp831_adversarial_test.go | 590 | | | | | 41 | `TestQA_CP831_SyncAll_SingleServer_Fails` | qa_block_cp831_adversarial_test.go | 624 | | | | | 42 | `TestQA_CP831_SyncAll_SingleServer_Fails` | qa_block_cp831_adversarial_test.go | 624 | | | | | 43 | `TestQA_CP831_CleanupPartialCreate_DeletesFails_NoRegistryLeak` | qa_block_cp831_adversarial_test.go | 666 | | | | | 44 | `TestQA_CP831_CleanupPartialCreate_DeletesFails_NoRegistryLeak` | qa_block_cp831_adversarial_test.go | 666 | | | | | 45 | `TestQA_CP831_MasterRestart_AutoRegister_PreservesDurabilityMode` | qa_block_cp831_adversarial_test.go | 713 | | | | | 46 | `TestQA_CP831_MasterRestart_AutoRegister_PreservesDurabilityMode` | qa_block_cp831_adversarial_test.go | 713 | | | | | 47 | `TestQA_CP831_DurabilityMode_Superblock_Roundtrip_AllModes` | qa_block_cp831_adversarial_test.go | 759 | | | | | 48 | `TestQA_CP831_DurabilityMode_Superblock_Roundtrip_AllModes` | qa_block_cp831_adversarial_test.go | 759 | | | | | 49 | `TestQA_CP831_DurabilityMode_Validate_EdgeCases` | qa_block_cp831_adversarial_test.go | 803 | | | | | 50 | `TestQA_CP831_DurabilityMode_Validate_EdgeCases` | qa_block_cp831_adversarial_test.go | 803 | | | | | 51 | `TestQA_CP831_DurabilityMode_RequiredReplicas_Math` | qa_block_cp831_adversarial_test.go | 841 | | | | | 52 | `TestQA_CP831_DurabilityMode_RequiredReplicas_Math` | qa_block_cp831_adversarial_test.go | 841 | | | | | 53 | `TestQA_CP831_SentinelErrors_AreProperlyCategorized` | qa_block_cp831_adversarial_test.go | 880 | | | | | 54 | `TestQA_CP831_SentinelErrors_AreProperlyCategorized` | qa_block_cp831_adversarial_test.go | 880 | | | | | 55 | `TestDurability_BestEffort_BarrierFail_WriteSucceeds` | qa_block_durability_test.go | 62 | | | | | 56 | `TestDurability_BestEffort_BarrierFail_WriteSucceeds` | qa_block_durability_test.go | 62 | | | | | 57 | `TestDurability_SyncAll_BarrierFail_WriteErrors` | qa_block_durability_test.go | 87 | | | | | 58 | `TestDurability_SyncAll_BarrierFail_WriteErrors` | qa_block_durability_test.go | 87 | | | | | 59 | `TestDurability_SyncAll_AllSucceed_WriteOK` | qa_block_durability_test.go | 112 | | | | | 60 | `TestDurability_SyncAll_AllSucceed_WriteOK` | qa_block_durability_test.go | 112 | | | | | 61 | `TestDurability_SyncAll_ZeroGroupStandalone` | qa_block_durability_test.go | 135 | | | | | 62 | `TestDurability_SyncAll_ZeroGroupStandalone` | qa_block_durability_test.go | 135 | | | | | 63 | `TestDurability_SyncQuorum_RF3_OneFailOK` | qa_block_durability_test.go | 158 | | | | | 64 | `TestDurability_SyncQuorum_RF3_OneFailOK` | qa_block_durability_test.go | 158 | | | | | 65 | `TestDurability_SyncQuorum_RF3_TwoFail_Error` | qa_block_durability_test.go | 172 | | | | | 66 | `TestDurability_SyncQuorum_RF3_TwoFail_Error` | qa_block_durability_test.go | 172 | | | | | 67 | `TestDurability_SyncQuorum_RF2_Rejected` | qa_block_durability_test.go | 185 | | | | | 68 | `TestDurability_SyncQuorum_RF2_Rejected` | qa_block_durability_test.go | 185 | | | | | 69 | `TestDurability_SuperblockPersistence` | qa_block_durability_test.go | 204 | | | | | 70 | `TestDurability_SuperblockPersistence` | qa_block_durability_test.go | 204 | | | | | 71 | `TestDurability_V1Compat_DefaultBestEffort` | qa_block_durability_test.go | 232 | | | | | 72 | `TestDurability_V1Compat_DefaultBestEffort` | qa_block_durability_test.go | 232 | | | | | 73 | `TestDurability_SyncAll_DegradedRecovery` | qa_block_durability_test.go | 261 | | | | | 74 | `TestDurability_SyncAll_DegradedRecovery` | qa_block_durability_test.go | 261 | | | | | 75 | `TestDurability_Heartbeat_ReportsMode` | qa_block_durability_test.go | 290 | | | | | 76 | `TestDurability_Heartbeat_ReportsMode` | qa_block_durability_test.go | 290 | | | | | 77 | `TestDurability_MixedModes_SameServer` | qa_block_durability_test.go | 346 | | | | | 78 | `TestDurability_MixedModes_SameServer` | qa_block_durability_test.go | 346 | | | | | 79 | `TestDurability_SyncAll_PartialReplicaFails` | qa_block_durability_test.go | 386 | | | | | 80 | `TestDurability_SyncAll_PartialReplicaFails` | qa_block_durability_test.go | 386 | | | | | 81 | `TestDurability_BestEffort_PartialReplicaOK` | qa_block_durability_test.go | 439 | | | | | 82 | `TestDurability_BestEffort_PartialReplicaOK` | qa_block_durability_test.go | 439 | | | | ### nvme | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestNVMeActions_Registration` | nvme_bench_test.go | 18 | | | | | 2 | `TestNVMeActions_TierGating` | nvme_bench_test.go | 41 | | | | | 3 | `TestBenchActions_Registration` | nvme_bench_test.go | 63 | | | | | 4 | `TestFindNVMeDevice_Parse_LiveTCP` | nvme_bench_test.go | 109 | | | | | 5 | `TestFindNVMeDevice_Parse_NoMatch` | nvme_bench_test.go | 121 | | | | | 6 | `TestFindNVMeDevice_Parse_MultipleSubsystems` | nvme_bench_test.go | 133 | | | | | 7 | `TestFindNVMeDevice_Parse_PreferLiveTCP` | nvme_bench_test.go | 148 | | | | | 8 | `TestFindNVMeDevice_Parse_FallbackNonLive` | nvme_bench_test.go | 164 | | | | | 9 | `TestFindNVMeDevice_Parse_EmptyPaths` | nvme_bench_test.go | 176 | | | | | 10 | `TestFindNVMeDevice_Parse_EmptyName` | nvme_bench_test.go | 185 | | | | | 11 | `TestFindNVMeDevice_Parse_EmptySubsystems` | nvme_bench_test.go | 197 | | | | | 12 | `TestFindNVMeDevice_Parse_CaseInsensitive` | nvme_bench_test.go | 204 | | | | | 13 | `TestTargetSpec_NQN_WithNQNSuffix` | nvme_bench_test.go | 220 | | | | | 14 | `TestTargetSpec_NQN_FallbackToIQN` | nvme_bench_test.go | 228 | | | | | 15 | `TestTargetSpec_NQN_BothEmpty` | nvme_bench_test.go | 236 | | | | | 16 | `TestParseFioMetric_MixedAutoDetectPicksWrite` | nvme_bench_test.go | 249 | | | | | 17 | `TestParseFioMetric_AllLatencyMetrics` | nvme_bench_test.go | 260 | | | | | 18 | `TestParseFioMetric_BWBytes` | nvme_bench_test.go | 281 | | | | | 19 | `TestParseFioMetric_MissingPercentile` | nvme_bench_test.go | 291 | | | | | 20 | `TestParseFioMetric_NilPercentile` | nvme_bench_test.go | 307 | | | | | 21 | `TestComputeBenchResult_LatencyWarn` | nvme_bench_test.go | 327 | | | | | 22 | `TestComputeBenchResult_LatencyMuchWorse` | nvme_bench_test.go | 338 | | | | | 23 | `TestComputeBenchResult_ExactGate` | nvme_bench_test.go | 348 | | | | | 24 | `TestComputeBenchResult_JustBelowGate` | nvme_bench_test.go | 355 | | | | | 25 | `TestComputeBenchResult_ZeroCandidate` | nvme_bench_test.go | 362 | | | | | 26 | `TestComputeBenchResult_BothZero` | nvme_bench_test.go | 372 | | | | | 27 | `TestComputeBenchResult_LatencyZeroCandidate` | nvme_bench_test.go | 379 | | | | | 28 | `TestComputeBenchResult_DeltaSign_ThroughputUp` | nvme_bench_test.go | 389 | | | | | 29 | `TestComputeBenchResult_DeltaSign_ThroughputDown` | nvme_bench_test.go | 396 | | | | | 30 | `TestComputeBenchResult_DeltaSign_LatencyDown` | nvme_bench_test.go | 403 | | | | | 31 | `TestComputeBenchResult_DeltaSign_LatencyUp` | nvme_bench_test.go | 410 | | | | | 32 | `TestFormatBenchReport_EmptyResults` | nvme_bench_test.go | 421 | | | | | 33 | `TestFormatBenchReport_MixedPassFail` | nvme_bench_test.go | 428 | | | | | 34 | `TestBenchCompare_MissingParams` | nvme_bench_test.go | 451 | | | | | 35 | `TestBenchCompare_EmptyVarValues` | nvme_bench_test.go | 482 | | | | | 36 | `TestBenchCompare_InvalidGate` | nvme_bench_test.go | 501 | | | | | 37 | `TestBenchCompare_PassWithDirection` | nvme_bench_test.go | 520 | | | | | 38 | `TestBenchCompare_LatencyGatePass` | nvme_bench_test.go | 543 | | | | | 39 | `TestFioParse_Action` | nvme_bench_test.go | 571 | | | | | 40 | `TestFioParse_MissingVar` | nvme_bench_test.go | 591 | | | | | 41 | `TestFioParse_MissingParams` | nvme_bench_test.go | 608 | | | | | 42 | `TestFioParse_WithDirection` | nvme_bench_test.go | 633 | | | | | 43 | `TestEngine_NVMeBenchScenario` | nvme_bench_test.go | 674 | | | | | 44 | `TestEngine_BenchCompare_FailsGate` | nvme_bench_test.go | 747 | | | | | 45 | `TestEngine_BenchCompare_LatencyFails` | nvme_bench_test.go | 788 | | | | | 46 | `TestBenchCompare_WarnGate_InWarnBand` | nvme_bench_test.go | 833 | | | | | 47 | `TestBenchCompare_WarnGate_BelowWarnGate` | nvme_bench_test.go | 862 | | | | | 48 | `TestBenchCompare_WarnGate_AboveGate` | nvme_bench_test.go | 891 | | | | | 49 | `TestBenchCompare_WarnGate_InvalidValue` | nvme_bench_test.go | 915 | | | | | 50 | `TestBenchCompare_WarnGate_LatencyInWarnBand` | nvme_bench_test.go | 935 | | | | | 51 | `TestTargetSpec_NQN_Sanitized` | nvme_bench_test.go | 968 | | | | | 52 | `TestTargetSpec_IQN_Sanitized` | nvme_bench_test.go | 977 | | | | | 53 | `TestTargetSpec_NQN_LongNameTruncated` | nvme_bench_test.go | 986 | | | | | 54 | `TestParamDefault` | nvme_bench_test.go | 1002 | | | | | 55 | `TestQA_Wire_TruncatedHeaderEOF` | nvme_qa_test.go | 27 | | | | | 56 | `TestQA_Wire_ZeroLengthStream` | nvme_qa_test.go | 39 | | | | | 57 | `TestQA_Wire_HeaderLength_Exactly8` | nvme_qa_test.go | 51 | | | | | 58 | `TestQA_Wire_AllZeroHeader` | nvme_qa_test.go | 71 | | | | | 59 | `TestQA_Wire_GarbageAfterValidPDU` | nvme_qa_test.go | 82 | | | | | 60 | `TestQA_UnexpectedPDUType` | nvme_qa_test.go | 119 | | | | | 61 | `TestQA_CapsuleBeforeIC` | nvme_qa_test.go | 154 | | | | | 62 | `TestQA_IOWrite_OnAdminQueue` | nvme_qa_test.go | 182 | | | | | 63 | `TestQA_UnknownAdminOpcode` | nvme_qa_test.go | 201 | | | | | 64 | `TestQA_UnknownIOOpcode` | nvme_qa_test.go | 218 | | | | | 65 | `TestQA_ConnectEmptyPayload` | nvme_qa_test.go | 256 | | | | | 66 | `TestQA_ConnectNoPayload` | nvme_qa_test.go | 292 | | | | | 67 | `TestQA_UnknownFabricFCType` | nvme_qa_test.go | 327 | | | | | 68 | `TestQA_PropertyGetUnknownOffset` | nvme_qa_test.go | 345 | | | | | 69 | `TestQA_Disconnect_CleanShutdown` | nvme_qa_test.go | 364 | | | | | 70 | `TestQA_IO_WriteOversizedPayload` | nvme_qa_test.go | 414 | | | | | 71 | `TestQA_IO_WriteExactBoundary` | nvme_qa_test.go | 435 | | | | | 72 | `TestQA_IO_ReadExactBoundary` | nvme_qa_test.go | 470 | | | | | 73 | `TestQA_IO_MultiBlockWrite` | nvme_qa_test.go | 512 | | | | | 74 | `TestQA_IO_WriteZerosOutOfBounds` | nvme_qa_test.go | 573 | | | | | 75 | `TestQA_IO_FlushOnReplica` | nvme_qa_test.go | 592 | | | | | 76 | `TestQA_IO_WriteZerosOnReplica` | nvme_qa_test.go | 610 | | | | | 77 | `TestQA_IO_ReadOnReplicaSucceeds` | nvme_qa_test.go | 630 | | | | | 78 | `TestQA_IO_SyncCacheError` | nvme_qa_test.go | 659 | | | | | 79 | `TestQA_IO_TrimError` | nvme_qa_test.go | 680 | | | | | 80 | `TestQA_Admin_UnknownFeatureID` | nvme_qa_test.go | 704 | | | | | 81 | `TestQA_Admin_UnknownIdentifyCNS` | nvme_qa_test.go | 735 | | | | | 82 | `TestQA_Admin_UnknownLogPageLID` | nvme_qa_test.go | 753 | | | | | 83 | `TestQA_Admin_SetFeaturesZeroQueues` | nvme_qa_test.go | 771 | | | | | 84 | `TestQA_Admin_GetLogPage_ErrorLog` | nvme_qa_test.go | 795 | | | | | 85 | `TestQA_ANA_TransitionMidIO` | nvme_qa_test.go | 833 | | | | | 86 | `TestQA_ANA_NonOptimizedAllowsWrite` | nvme_qa_test.go | 875 | | | | | 87 | `TestQA_ANA_LogReflectsState` | nvme_qa_test.go | 890 | | | | | 88 | `TestQA_Server_ConnectAfterVolumeRemoved` | nvme_qa_test.go | 938 | | | | | 89 | `TestQA_Server_RapidConnectDisconnect` | nvme_qa_test.go | 966 | | | | | 90 | `TestQA_Server_ConcurrentIO` | nvme_qa_test.go | 1008 | | | | | 91 | `TestQA_SQHDWraparound` | nvme_qa_test.go | 1063 | | | | | 92 | `TestQA_LargeReadChunking` | nvme_qa_test.go | 1128 | | | | | 93 | `TestQA_ErrorInjectionMidStream` | nvme_qa_test.go | 1192 | | | | | 94 | `TestQA_PropertySet_DisableController` | nvme_qa_test.go | 1247 | | | | | 95 | `TestQA_IdentifyWithoutSubsystem` | nvme_qa_test.go | 1287 | | | | | 96 | `TestQA_IO_WithoutSubsystem` | nvme_qa_test.go | 1319 | | | | | 97 | `TestQA_FlowCtlOff_SQHD` | nvme_qa_test.go | 1372 | | | | | 98 | `TestQA_IO_4KBlockSize` | nvme_qa_test.go | 1437 | | | | | 99 | `TestQA_Identify_ControllerModelSerial` | nvme_qa_test.go | 1492 | | | | | 100 | `TestQA_MapBlockError_WriteHeuristic` | nvme_qa_test.go | 1551 | | | | | 101 | `TestQA_MapBlockError_WriteHeuristicCapital` | nvme_qa_test.go | 1560 | | | | | 102 | `TestQA_MapBlockError_ReadHeuristic` | nvme_qa_test.go | 1569 | | | | | 103 | `TestQA_MapBlockError_ReadHeuristicCapital` | nvme_qa_test.go | 1578 | | | | | 104 | `TestQA_MapBlockError_UnknownError` | nvme_qa_test.go | 1587 | | | | | 105 | `TestQA_MapBlockError_Nil` | nvme_qa_test.go | 1596 | | | | | 106 | `TestQA_PropertySet_8ByteValue` | nvme_qa_test.go | 1607 | | | | | 107 | `TestQA_KATO_Zero_NoTimer` | nvme_qa_test.go | 1643 | | | | | 108 | `TestQA_LogPage_ErrorLog_LargeNUMD` | nvme_qa_test.go | 1692 | | | | | 109 | `TestQA_LogPage_SMART_LargeNUMD` | nvme_qa_test.go | 1728 | | | | | 110 | `TestQA_LogPage_ANA_LargeNUMD` | nvme_qa_test.go | 1774 | | | | | 111 | `TestQA_SetFeatures_MultipleCallsSameSession` | nvme_qa_test.go | 1816 | | | | | 112 | `TestQA_SetFeatures_KATOOverwrite` | nvme_qa_test.go | 1876 | | | | | 113 | `TestQA_CNTLID_MonotonicallyIncreasing` | nvme_qa_test.go | 1918 | | | | | 114 | `TestQA_Wire_ConnectionDropMidReceive` | nvme_qa_test.go | 1937 | | | | | 115 | `TestQA_Wire_ConnectionDropMidPayload` | nvme_qa_test.go | 1975 | | | | | 116 | `TestQA_IO_WriteZeros_DEALLOC_TrimError` | nvme_qa_test.go | 2025 | | | | | 117 | `TestQA_IO_WriteZeros_NoDEALLOC_WriteError` | nvme_qa_test.go | 2044 | | | | | 118 | `TestQA_PropertyGet_CAP_8Byte` | nvme_qa_test.go | 2071 | | | | | 119 | `TestQA_PropertyGet_CC_4Byte` | nvme_qa_test.go | 2094 | | | | | 120 | `TestQA_Connect_QueueSizeConversion` | nvme_qa_test.go | 2116 | | | | | 121 | `TestQA_ANA_NonANAProvider_Healthy` | nvme_qa_test.go | 2182 | | | | | 122 | `TestQA_ANA_NonANAProvider_Unhealthy` | nvme_qa_test.go | 2211 | | | | | 123 | `TestQA_Capsule_Lba64Bit` | nvme_qa_test.go | 2269 | | | | | 124 | `TestQA_Capsule_LbaLengthZeroBased` | nvme_qa_test.go | 2278 | | | | | 125 | `TestQA_Admin_AsyncEvent_Stub` | nvme_qa_test.go | 2299 | | | | | 126 | `TestQA_H2CTermReq_ClosesSession` | nvme_qa_test.go | 2317 | | | | | 127 | `TestQA_Padding_MaxDataOffset255` | nvme_qa_test.go | 2355 | | | | | 128 | `TestQA_Padding_ExactlyPadBufBoundary` | nvme_qa_test.go | 2397 | | | | | 129 | `TestQA_Padding_OneBeyondPadBuf` | nvme_qa_test.go | 2436 | | | | | 130 | `TestQA_Padding_ZeroPad` | nvme_qa_test.go | 2474 | | | | | 131 | `TestQA_Padding_StreamEOFMidPad` | nvme_qa_test.go | 2516 | | | | | 132 | `TestQA_Padding_TwoConsecutivePDUs` | nvme_qa_test.go | 2547 | | | | | 133 | `TestQA_BufPool_StaleDataNotLeaked` | nvme_qa_test.go | 2619 | | | | | 134 | `TestQA_BufPool_ConcurrentGetPut` | nvme_qa_test.go | 2647 | | | | | 135 | `TestQA_BufPool_ZeroSize` | nvme_qa_test.go | 2668 | | | | | 136 | `TestQA_BufPool_PutWrongCap` | nvme_qa_test.go | 2682 | | | | | 137 | `TestQA_BufPool_WriteZerosPooled` | nvme_qa_test.go | 2689 | | | | | 138 | `TestQA_Batch_MultiChunkC2H_InterleavedVerify` | nvme_qa_test.go | 2748 | | | | | 139 | `TestQA_Batch_SingleBlockNoChunking` | nvme_qa_test.go | 2861 | | | | | 140 | `TestQA_Batch_WriteReadCycle_PooledBuffers` | nvme_qa_test.go | 2915 | | | | | 141 | `TestQA_MaxDataLen_VerySmallChunk` | nvme_qa_test.go | 2995 | | | | | 142 | `TestQA_MaxDataLen_ExactMultiple` | nvme_qa_test.go | 3067 | | | | | 143 | `TestQA_MaxDataLen_NonMultiple` | nvme_qa_test.go | 3125 | | | | | 144 | `TestQA_NQN_SpecialChars` | nvme_qa_test.go | 3191 | | | | | 145 | `TestQA_NQN_LongName` | nvme_qa_test.go | 3214 | | | | | 146 | `TestQA_TuneConn_RapidAcceptClose` | nvme_qa_test.go | 3248 | | | | | 147 | `TestQA_Batch_FlushBufWithoutWrite` | nvme_qa_test.go | 3283 | | | | | 148 | `TestQA_Batch_MultipleFlushBuf` | nvme_qa_test.go | 3296 | | | | | 149 | `TestQA_WAL_ConcurrentWritesUnderPressure` | nvme_qa_test.go | 3329 | | | | | 150 | `TestQA_WAL_ReadsDuringWritePressure` | nvme_qa_test.go | 3372 | | | | | 151 | `TestQA_WAL_WriteZerosUnderPressure` | nvme_qa_test.go | 3430 | | | | | 152 | `TestQA_WAL_PressureTransition` | nvme_qa_test.go | 3471 | | | | | 153 | `TestQA_WAL_ErrorEscalationPrevention` | nvme_qa_test.go | 3513 | | | | | 154 | `TestQA_WAL_ThrottleDoesNotBlockReads` | nvme_qa_test.go | 3577 | | | | | 155 | `TestQA_WAL_WrappedErrorProtocolPath` | nvme_qa_test.go | 3628 | | | | | 156 | `TestQA_WAL_FlushDuringPressure` | nvme_qa_test.go | 3655 | | | | | 157 | `TestQA_Batch_BackToBack_HeaderOnly` | nvme_qa_test.go | 3684 | | | | | 158 | `TestCommonHeader_MarshalRoundTrip` | nvme_test.go | 111 | | | | | 159 | `TestCapsuleCommand_MarshalRoundTrip` | nvme_test.go | 129 | | | | | 160 | `TestCapsuleResponse_MarshalRoundTrip` | nvme_test.go | 154 | | | | | 161 | `TestICRequest_MarshalRoundTrip` | nvme_test.go | 173 | | | | | 162 | `TestICResponse_MarshalRoundTrip` | nvme_test.go | 189 | | | | | 163 | `TestC2HDataHeader_MarshalRoundTrip` | nvme_test.go | 201 | | | | | 164 | `TestConnectData_MarshalRoundTrip` | nvme_test.go | 217 | | | | | 165 | `TestStatusWord_Encoding` | nvme_test.go | 237 | | | | | 166 | `TestStatusWord_IsError` | nvme_test.go | 275 | | | | | 167 | `TestWire_WriteReadRoundTrip_HeaderOnly` | nvme_test.go | 288 | | | | | 168 | `TestWire_WriteReadRoundTrip_WithData` | nvme_test.go | 321 | | | | | 169 | `TestWire_MultiPDU` | nvme_test.go | 372 | | | | | 170 | `TestWire_PayloadSize` | nvme_test.go | 404 | | | | | 171 | `TestWire_CapsuleCmdWithData` | nvme_test.go | 419 | | | | | 172 | `TestController_ICHandshake` | nvme_test.go | 568 | | | | | 173 | `TestController_AdminConnect` | nvme_test.go | 588 | | | | | 174 | `TestController_ConnectUnknownNQN` | nvme_test.go | 598 | | | | | 175 | `TestController_PropertyGetCAP` | nvme_test.go | 621 | | | | | 176 | `TestController_PropertySetCC_EN` | nvme_test.go | 648 | | | | | 177 | `TestIdentify_Controller` | nvme_test.go | 688 | | | | | 178 | `TestIdentify_Namespace_512B` | nvme_test.go | 764 | | | | | 179 | `TestIdentify_Namespace_4K` | nvme_test.go | 768 | | | | | 180 | `TestIdentify_ActiveNSList` | nvme_test.go | 833 | | | | | 181 | `TestIdentify_NSDescriptors` | nvme_test.go | 863 | | | | | 182 | `TestAdmin_SetFeatures_NumQueues` | nvme_test.go | 897 | | | | | 183 | `TestAdmin_GetLogPage_SMART` | nvme_test.go | 925 | | | | | 184 | `TestAdmin_GetLogPage_ANA` | nvme_test.go | 956 | | | | | 185 | `TestAdmin_KeepAlive` | nvme_test.go | 993 | | | | | 186 | `TestAdmin_GetFeatures` | nvme_test.go | 1011 | | | | | 187 | `TestIO_ReadWrite` | nvme_test.go | 1068 | | | | | 188 | `TestIO_HandleRead` | nvme_test.go | 1107 | | | | | 189 | `TestIO_HandleWrite` | nvme_test.go | 1173 | | | | | 190 | `TestIO_HandleFlush` | nvme_test.go | 1220 | | | | | 191 | `TestIO_HandleWriteZeros_Trim` | nvme_test.go | 1256 | | | | | 192 | `TestIO_ReadOutOfBounds` | nvme_test.go | 1306 | | | | | 193 | `TestIO_WriteR2TFlow` | nvme_test.go | 1349 | | | | | 194 | `TestIO_WriteUnhealthy` | nvme_test.go | 1429 | | | | | 195 | `TestIO_ReadError` | nvme_test.go | 1470 | | | | | 196 | `TestIO_WriteError` | nvme_test.go | 1510 | | | | | 197 | `TestErrorMapping_AllSentinels` | nvme_test.go | 1555 | | | | | 198 | `TestErrorMapping_DNR` | nvme_test.go | 1581 | | | | | 199 | `TestANAState_AllRoles` | nvme_test.go | 1598 | | | | | 200 | `TestNGUID_Generation` | nvme_test.go | 1622 | | | | | 201 | `TestServer_StartStop` | nvme_test.go | 1652 | | | | | 202 | `TestServer_DisabledNoOp` | nvme_test.go | 1672 | | | | | 203 | `TestServer_AddRemoveVolume` | nvme_test.go | 1682 | | | | | 204 | `TestServer_ConcurrentAccept` | nvme_test.go | 1699 | | | | | 205 | `TestController_KATOTimeout` | nvme_test.go | 1749 | | | | | 206 | `TestFullSequence_ICConnectIdentifyReadWrite` | nvme_test.go | 1802 | | | | | 207 | `TestServer_NQN` | nvme_test.go | 1913 | | | | | 208 | `TestIOQueue_CrossConnection` | nvme_test.go | 1930 | | | | | 209 | `TestIOQueue_InvalidCNTLID` | nvme_test.go | 2031 | | | | | 210 | `TestIOQueue_NQNMismatch` | nvme_test.go | 2062 | | | | | 211 | `TestAdminSession_UnregisteredOnShutdown` | nvme_test.go | 2112 | | | | | 212 | `TestReader_MalformedHeader_TooSmall` | nvme_test.go | 2151 | | | | | 213 | `TestReader_MalformedHeader_TooLarge` | nvme_test.go | 2167 | | | | | 214 | `TestReader_MalformedHeader_DataOffsetLessThanHeaderLength` | nvme_test.go | 2182 | | | | | 215 | `TestReader_MalformedHeader_DataOffsetGtDataLength` | nvme_test.go | 2198 | | | | | 216 | `TestReader_MalformedHeader_DataLengthLtHeaderLength` | nvme_test.go | 2214 | | | | | 217 | `TestReader_MalformedHeader_DataOffsetZero_ExtraDataLength` | nvme_test.go | 2230 | | | | | 218 | `TestIOQueue_HostNQNMismatch` | nvme_test.go | 2251 | | | | | 219 | `TestIO_WritePayloadSizeMismatch` | nvme_test.go | 2301 | | | | | 220 | `TestIO_WritePayloadTooLarge` | nvme_test.go | 2344 | | | | | 221 | `TestDisconnect_NoError` | nvme_test.go | 2391 | | | | | 222 | `TestReader_LargePadding` | nvme_test.go | 2425 | | | | | 223 | `TestTuneConn_NoError` | nvme_test.go | 2489 | | | | | 224 | `TestTuneConn_NonTCP` | nvme_test.go | 2515 | | | | | 225 | `TestWriterBatchedFlush` | nvme_test.go | 2523 | | | | | 226 | `TestSendWithData_UsesSharedEncode` | nvme_test.go | 2556 | | | | | 227 | `TestNewWriterSize` | nvme_test.go | 2610 | | | | | 228 | `TestBufPool_GetPut` | nvme_test.go | 2628 | | | | | 229 | `TestBufPool_WriteReuse` | nvme_test.go | 2654 | | | | | 230 | `TestMaxH2CDataLen_Config` | nvme_test.go | 2736 | | | | | 231 | `TestMaxH2CDataLen_Default` | nvme_test.go | 2774 | | | | | 232 | `TestC2HChunking_ConfigurableMaxDataLen` | nvme_test.go | 2807 | | | | | 233 | `TestDataOffset_LargePadding` | nvme_test.go | 2900 | | | | | 234 | `TestNQN_Sanitization` | nvme_test.go | 2951 | | | | | 235 | `TestIsRetryableWALPressure_Classification` | nvme_test.go | 2968 | | | | | 236 | `TestWriteWithRetry_TransientSuccess` | nvme_test.go | 3004 | | | | | 237 | `TestWriteWithRetry_PersistentFailure` | nvme_test.go | 3065 | | | | | 238 | `TestWriteWithRetry_NonWALError` | nvme_test.go | 3092 | | | | | 239 | `TestWriteWithRetry_ImmediateSuccess` | nvme_test.go | 3112 | | | | | 240 | `TestThrottleOnWALPressure_Deterministic` | nvme_test.go | 3131 | | | | | 241 | `TestWriteWithRetry_ConcurrentPressure` | nvme_test.go | 3204 | | | | | 242 | `TestWriteWithRetry_ConcurrentTransient` | nvme_test.go | 3241 | | | | | 243 | `TestWriteWithRetry_WrappedWALError` | nvme_test.go | 3286 | | | | | 244 | `TestMockDevice_WALPressureProvider` | nvme_test.go | 3307 | | | | | 245 | `TestIO_WriteWALPressure_ProtocolResponse` | nvme_test.go | 3324 | | | | | 246 | `TestWriteWithRetry_SharedTransientConcurrency` | nvme_test.go | 3385 | | | | | 247 | `TestTxLoop_R2TDoneClosedOnError` | nvme_test.go | 3446 | | | | | 248 | `TestTxLoop_R2TDoneClosedOnError_Integration` | nvme_test.go | 3471 | | | | | 249 | `TestShutdown_ReleasePendingCapsuleBuffers` | nvme_test.go | 3528 | | | | | 250 | `TestCompleteWaiters_NilR2TDone` | nvme_test.go | 3552 | | | | | 251 | `TestIsPathSafe` | protocol_test.go | 7 | | | | | 252 | `TestAuthTokenHeaderConstant` | protocol_test.go | 32 | | | | ### operations | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestExpand_Standalone_DirectCommit` | expand_test.go | 31 | | | | | 2 | `TestExpand_Standalone_Idempotent` | expand_test.go | 47 | | | | | 3 | `TestExpand_Standalone_ShrinkRejected` | expand_test.go | 59 | | | | | 4 | `TestExpand_Standalone_SurvivesReopen` | expand_test.go | 69 | | | | | 5 | `TestPrepareExpand_Success` | expand_test.go | 88 | | | | | 6 | `TestPrepareExpand_WriteBeyondOldSize_Rejected` | expand_test.go | 105 | | | | | 7 | `TestPrepareExpand_WriteWithinOldSize_OK` | expand_test.go | 121 | | | | | 8 | `TestCommitExpand_Success` | expand_test.go | 143 | | | | | 9 | `TestCommitExpand_WriteBeyondNewSize_OK` | expand_test.go | 163 | | | | | 10 | `TestCommitExpand_EpochMismatch_Rejected` | expand_test.go | 189 | | | | | 11 | `TestCancelExpand_ClearsPreparedState` | expand_test.go | 205 | | | | | 12 | `TestCancelExpand_WriteStillRejectedInNewRange` | expand_test.go | 225 | | | | | 13 | `TestPrepareExpand_AlreadyInFlight_Rejected` | expand_test.go | 244 | | | | | 14 | `TestRecovery_PreparedState_Cleared` | expand_test.go | 257 | | | | | 15 | `TestExpand_WithProfile_Single` | expand_test.go | 280 | | | | | 16 | `TestHealthScore_DefaultPerfect` | health_score_test.go | 8 | | | | | 17 | `TestHealthScore_ScrubErrorsLowerScore` | health_score_test.go | 15 | | | | | 18 | `TestHealthScore_CappedPenalty` | health_score_test.go | 27 | | | | | 19 | `TestHealthScore_StaleScrubPenalty` | health_score_test.go | 38 | | | | | 20 | `TestHealthScore_RecordScrubComplete` | health_score_test.go | 48 | | | | | 21 | `TestResolvePolicy_DatabaseDefaults` | preset_test.go | 8 | | | | | 22 | `TestResolvePolicy_GeneralDefaults` | preset_test.go | 42 | | | | | 23 | `TestResolvePolicy_ThroughputDefaults` | preset_test.go | 67 | | | | | 24 | `TestResolvePolicy_OverrideDurability` | preset_test.go | 86 | | | | | 25 | `TestResolvePolicy_OverrideRF` | preset_test.go | 101 | | | | | 26 | `TestResolvePolicy_NoPreset_SystemDefaults` | preset_test.go | 116 | | | | | 27 | `TestResolvePolicy_InvalidPreset` | preset_test.go | 138 | | | | | 28 | `TestResolvePolicy_IncompatibleCombo` | preset_test.go | 148 | | | | | 29 | `TestResolvePolicy_WALWarning` | preset_test.go | 160 | | | | | 30 | `TestQA_B09_ExpandAfterDoubleFailover_RF3` | qa_block_expand_adversarial_test.go | 82 | | | | | 31 | `TestQA_B09_ExpandAfterDoubleFailover_RF3` | qa_block_expand_adversarial_test.go | 82 | | | | | 32 | `TestQA_B09_ExpandSeesDeletedVolume_AfterLockAcquire` | qa_block_expand_adversarial_test.go | 139 | | | | | 33 | `TestQA_B09_ExpandSeesDeletedVolume_AfterLockAcquire` | qa_block_expand_adversarial_test.go | 139 | | | | | 34 | `TestQA_B09_ConcurrentExpandAndFailover` | qa_block_expand_adversarial_test.go | 183 | | | | | 35 | `TestQA_B09_ConcurrentExpandAndFailover` | qa_block_expand_adversarial_test.go | 183 | | | | | 36 | `TestQA_B09_ConcurrentExpandsSameVolume` | qa_block_expand_adversarial_test.go | 232 | | | | | 37 | `TestQA_B09_ConcurrentExpandsSameVolume` | qa_block_expand_adversarial_test.go | 232 | | | | | 38 | `TestQA_B10_RepeatedEmptyHeartbeats_DuringExpand` | qa_block_expand_adversarial_test.go | 280 | | | | | 39 | `TestQA_B10_RepeatedEmptyHeartbeats_DuringExpand` | qa_block_expand_adversarial_test.go | 280 | | | | | 40 | `TestQA_B10_ExpandFailed_HeartbeatStillProtected` | qa_block_expand_adversarial_test.go | 312 | | | | | 41 | `TestQA_B10_ExpandFailed_HeartbeatStillProtected` | qa_block_expand_adversarial_test.go | 312 | | | | | 42 | `TestQA_B10_HeartbeatSizeSuppress_DuringExpand` | qa_block_expand_adversarial_test.go | 355 | | | | | 43 | `TestQA_B10_HeartbeatSizeSuppress_DuringExpand` | qa_block_expand_adversarial_test.go | 355 | | | | | 44 | `TestQA_B10_ConcurrentHeartbeatsAndExpand` | qa_block_expand_adversarial_test.go | 409 | | | | | 45 | `TestQA_B10_ConcurrentHeartbeatsAndExpand` | qa_block_expand_adversarial_test.go | 409 | | | | | 46 | `TestQA_Expand_ConcurrentPrepare` | qa_expand_test.go | 36 | | | | | 47 | `TestQA_Expand_CommitWithoutPrepare` | qa_expand_test.go | 74 | | | | | 48 | `TestQA_Expand_CancelWithoutPrepare_ForceEpoch` | qa_expand_test.go | 90 | | | | | 49 | `TestQA_Expand_CancelWithWrongEpoch` | qa_expand_test.go | 105 | | | | | 50 | `TestQA_Expand_ForceCancel_IgnoresEpoch` | qa_expand_test.go | 126 | | | | | 51 | `TestQA_Expand_DoubleCommit` | qa_expand_test.go | 145 | | | | | 52 | `TestQA_Expand_PrepareAfterCommit` | qa_expand_test.go | 165 | | | | | 53 | `TestQA_Expand_PrepareAfterCancel` | qa_expand_test.go | 194 | | | | | 54 | `TestQA_Expand_PrepareShrink` | qa_expand_test.go | 216 | | | | | 55 | `TestQA_Expand_PrepareUnaligned` | qa_expand_test.go | 227 | | | | | 56 | `TestQA_Expand_DataIntegrityAcrossCommit` | qa_expand_test.go | 244 | | | | | 57 | `TestQA_Expand_RecoveryClearsAndDataSurvives` | qa_expand_test.go | 304 | | | | | 58 | `TestQA_Expand_CommittedSurvivesReopen` | qa_expand_test.go | 351 | | | | | 59 | `TestQA_Expand_ClosedVolume` | qa_expand_test.go | 394 | | | | | 60 | `TestQA_Expand_PrepareSameSize` | qa_expand_test.go | 414 | | | | | 61 | `TestQA_Expand_ConcurrentWriteDuringPrepare` | qa_expand_test.go | 431 | | | | | 62 | `TestQA_Expand_ExpandStateRaceWithCommit` | qa_expand_test.go | 478 | | | | | 63 | `TestQA_Expand_TrimDuringPrepared` | qa_expand_test.go | 519 | | | | | 64 | `TestQA_Expand_SuperblockValidatePreparedSize` | qa_expand_test.go | 553 | | | | | 65 | `TestQA_Expand_SuperblockValidateOrphanEpoch` | qa_expand_test.go | 572 | | | | | 66 | `TestQAResize` | qa_resize_test.go | 11 | | | | | 67 | `TestQA_Export_ConcurrentWriteDuringImport` | qa_snapshot_export_adversarial_test.go | 26 | | | | | 68 | `TestQA_Export_PartialImportFailure_ExtentState` | qa_snapshot_export_adversarial_test.go | 95 | | | | | 69 | `TestQA_Export_ImportWithActiveSnapshot_Rejected` | qa_snapshot_export_adversarial_test.go | 190 | | | | | 70 | `TestQA_Export_DoubleImportRejected` | qa_snapshot_export_adversarial_test.go | 244 | | | | | 71 | `TestQA_Export_ExportAfterClose` | qa_snapshot_export_adversarial_test.go | 289 | | | | | 72 | `TestQA_Export_ImportAfterClose` | qa_snapshot_export_adversarial_test.go | 306 | | | | | 73 | `TestQA_Export_ConcurrentExports_NoCollision` | qa_snapshot_export_adversarial_test.go | 329 | | | | | 74 | `TestQA_Export_FlagImportedSurvivesReopen` | qa_snapshot_export_adversarial_test.go | 385 | | | | | 75 | `TestQA_Export_ImportContextCancelMidStream` | qa_snapshot_export_adversarial_test.go | 439 | | | | | 76 | `TestQA_Export_NonChunkAlignedBlockCount` | qa_snapshot_export_adversarial_test.go | 515 | | | | | 77 | `TestQA_Export_ZeroDataVolume` | qa_snapshot_export_adversarial_test.go | 566 | | | | | 78 | `TestQA_Export_TempSnapIDUniqueness` | qa_snapshot_export_adversarial_test.go | 604 | | | | | 79 | `TestQA_SnapshotExport_TruncatedData` | qa_snapshot_export_test.go | 14 | | | | | 80 | `TestQA_SnapshotExport_WrongChecksum` | qa_snapshot_export_test.go | 38 | | | | | 81 | `TestQA_SnapshotExport_CorruptedManifest` | qa_snapshot_export_test.go | 62 | | | | | 82 | `TestQA_SnapshotExport_DataSizeMismatch` | qa_snapshot_export_test.go | 77 | | | | | 83 | `TestQA_SnapshotExport_RoundTripIntegrity` | qa_snapshot_export_test.go | 98 | | | | | 84 | `TestQA_SnapshotExport_ContextCancellation` | qa_snapshot_export_test.go | 158 | | | | | 85 | `TestQA_SnapshotExport_ManifestSerializationStable` | qa_snapshot_export_test.go | 173 | | | | | 86 | `TestQA_SnapshotExport_ExportDuringLiveIO` | qa_snapshot_export_test.go | 204 | | | | | 87 | `TestQA_SnapshotExport_NonexistentSnapshotReject` | qa_snapshot_export_test.go | 250 | | | | | 88 | `TestQASnapshot` | qa_snapshot_test.go | 13 | | | | | 89 | `TestQA_Profile_WritePath_SingleCorrect` | qa_storage_profile_test.go | 27 | | | | | 90 | `TestQA_Profile_ConcurrentWrites_Single` | qa_storage_profile_test.go | 104 | | | | | 91 | `TestQA_Profile_SurvivesCrashRecovery` | qa_storage_profile_test.go | 179 | | | | | 92 | `TestQA_Profile_CorruptByte_AllValues` | qa_storage_profile_test.go | 230 | | | | | 93 | `TestQA_Profile_StripedReject_NoFileLeaked` | qa_storage_profile_test.go | 275 | | | | | 94 | `TestQA_Profile_ConcurrentCreateSameFile` | qa_storage_profile_test.go | 299 | | | | | 95 | `TestQA_Profile_SuperblockByteOffset` | qa_storage_profile_test.go | 351 | | | | | 96 | `TestQA_Profile_MultiBlockWriteRead` | qa_storage_profile_test.go | 392 | | | | | 97 | `TestQA_Profile_ExpandPreservesProfile` | qa_storage_profile_test.go | 431 | | | | | 98 | `TestQA_Profile_SnapshotPreservesProfile` | qa_storage_profile_test.go | 508 | | | | | 99 | `TestResize_ExpandWorks` | resize_test.go | 12 | | | | | 100 | `TestResize_ShrinkRejected` | resize_test.go | 85 | | | | | 101 | `TestResize_WithSnapshotsRejected` | resize_test.go | 112 | | | | | 102 | `TestScrub_CleanVolume` | scrub_test.go | 26 | | | | | 103 | `TestScrub_DetectCorruption` | scrub_test.go | 54 | | | | | 104 | `TestScrub_SkipDirtyBlocks` | scrub_test.go | 95 | | | | | 105 | `TestScrub_SkipRecentlyWritten` | scrub_test.go | 122 | | | | | 106 | `TestScrub_StatsUpdated` | scrub_test.go | 154 | | | | | 107 | `TestScrub_TriggerNow` | scrub_test.go | 171 | | | | | 108 | `TestScrub_StopIdempotent` | scrub_test.go | 190 | | | | | 109 | `TestScrub_HealthScoreImpact` | scrub_test.go | 200 | | | | | 110 | `TestScrub_InPassWrite_NoFalsePositive` | scrub_test.go | 248 | | | | | 111 | `TestManifest_RoundTrip` | snapshot_export_test.go | 12 | | | | | 112 | `TestManifest_Validate_BadVersion` | snapshot_export_test.go | 52 | | | | | 113 | `TestManifest_Validate_BadProfile` | snapshot_export_test.go | 60 | | | | | 114 | `TestManifest_Validate_BadLayout` | snapshot_export_test.go | 68 | | | | | 115 | `TestManifest_Validate_MissingFields` | snapshot_export_test.go | 76 | | | | | 116 | `TestExportSnapshot_Basic` | snapshot_export_test.go | 97 | | | | | 117 | `TestExportSnapshot_ChecksumCorrect` | snapshot_export_test.go | 134 | | | | | 118 | `TestExportSnapshot_ExistingSnapshot` | snapshot_export_test.go | 159 | | | | | 119 | `TestExportSnapshot_ProfileReject` | snapshot_export_test.go | 194 | | | | | 120 | `TestImportSnapshot_Basic` | snapshot_export_test.go | 206 | | | | | 121 | `TestImportSnapshot_SizeMismatch` | snapshot_export_test.go | 242 | | | | | 122 | `TestImportSnapshot_NonEmptyReject` | snapshot_export_test.go | 258 | | | | | 123 | `TestImportSnapshot_AllowOverwrite` | snapshot_export_test.go | 278 | | | | | 124 | `TestImportSnapshot_ChecksumMismatch` | snapshot_export_test.go | 313 | | | | | 125 | `TestImportSnapshot_DoubleImportReject` | snapshot_export_test.go | 336 | | | | | 126 | `TestExportSnapshot_ClosedVolume` | snapshot_export_test.go | 373 | | | | | 127 | `TestImportSnapshot_ClosedVolume` | snapshot_export_test.go | 385 | | | | | 128 | `TestImportSnapshot_ActiveSnapshotsReject` | snapshot_export_test.go | 403 | | | | | 129 | `TestExportSnapshot_UniqueTempSnapIDs` | snapshot_export_test.go | 440 | | | | | 130 | `TestSnapshots` | snapshot_test.go | 12 | | | | | 131 | `TestStorageProfile_String` | storage_profile_test.go | 11 | | | | | 132 | `TestParseStorageProfile_Valid` | storage_profile_test.go | 28 | | | | | 133 | `TestParseStorageProfile_Invalid` | storage_profile_test.go | 51 | | | | | 134 | `TestStorageProfile_StringRoundTrip` | storage_profile_test.go | 58 | | | | | 135 | `TestSuperblock_ProfilePersistence` | storage_profile_test.go | 71 | | | | | 136 | `TestSuperblock_BackwardCompat_ProfileZero` | storage_profile_test.go | 95 | | | | | 137 | `TestSuperblock_InvalidProfileRejected` | storage_profile_test.go | 110 | | | | | 138 | `TestCreate_WithProfile` | storage_profile_test.go | 123 | | | | | 139 | `TestCreate_DefaultProfile` | storage_profile_test.go | 140 | | | | | 140 | `TestOpen_ProfileSurvivesReopen` | storage_profile_test.go | 154 | | | | | 141 | `TestCreate_StripedRejected` | storage_profile_test.go | 177 | | | | | 142 | `TestCreate_InvalidProfileRejected` | storage_profile_test.go | 194 | | | | | 143 | `TestOpen_InvalidProfileOnDisk` | storage_profile_test.go | 211 | | | | ### other | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestDevOpsActions_Registration` | devops_test.go | 10 | | | | | 2 | `TestDevOpsActions_Tier` | devops_test.go | 39 | | | | | 3 | `TestDevOpsActions_TierGating` | devops_test.go | 59 | | | | | 4 | `TestAllActions_Registration` | devops_test.go | 81 | | | | | 5 | `TestK8sActions_Registration` | devops_test.go | 123 | | | | | 6 | `TestK8sActions_TierGating` | devops_test.go | 156 | | | | | 7 | `TestIntegration` | integration_test.go | 116 | | | | | 8 | `TestParams` | params_test.go | 9 | | | | | 9 | `TestQAALUA` | qa_alua_test.go | 11 | | | | | 10 | `TestQA` | qa_test.go | 18 | | | | ### recovery | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestRecovery` | recovery_test.go | 10 | | | | ### replication | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestDistSync_BestEffort_NilGroup` | dist_group_commit_test.go | 36 | | | | | 2 | `TestDistSync_SyncAll_NilGroup_Succeeds` | dist_group_commit_test.go | 54 | | | | | 3 | `TestDistSync_SyncAll_AllDegraded_Fails` | dist_group_commit_test.go | 65 | | | | | 4 | `TestDistSync_SyncQuorum_AllDegraded_RF3_Fails` | dist_group_commit_test.go | 83 | | | | | 5 | `TestDistSync_BestEffort_BackwardCompat` | dist_group_commit_test.go | 100 | | | | | 6 | `TestDistSync_Metrics_IncrementOnFailure` | dist_group_commit_test.go | 115 | | | | | 7 | `TestDistSync_LocalFsyncFail_AlwaysErrors` | dist_group_commit_test.go | 131 | | | | | 8 | `TestCanonicalizeAddr_WildcardIPv4_UsesAdvertised` | net_util_test.go | 9 | | | | | 9 | `TestCanonicalizeAddr_WildcardIPv6_UsesAdvertised` | net_util_test.go | 17 | | | | | 10 | `TestCanonicalizeAddr_NilIP_UsesAdvertised` | net_util_test.go | 25 | | | | | 11 | `TestCanonicalizeAddr_AlreadyCanonical_Unchanged` | net_util_test.go | 33 | | | | | 12 | `TestCanonicalizeAddr_Loopback_Unchanged` | net_util_test.go | 41 | | | | | 13 | `TestCanonicalizeAddr_NoAdvertised_FallsBackToOutbound` | net_util_test.go | 49 | | | | | 14 | `TestPreferredOutboundIP_NotEmpty` | net_util_test.go | 61 | | | | | 15 | `TestHeartbeat_ReportsPerReplicaState` | rebuild_v1_test.go | 13 | | | | | 16 | `TestHeartbeat_ReportsNeedsRebuild` | rebuild_v1_test.go | 51 | | | | | 17 | `TestReplicaState_RebuildComplete_ReentersInSync` | rebuild_v1_test.go | 80 | | | | | 18 | `TestRebuild_AbortOnEpochChange` | rebuild_v1_test.go | 183 | | | | | 19 | `TestRebuild_PostRebuild_FlushedLSN_IsCheckpoint` | rebuild_v1_test.go | 231 | | | | | 20 | `TestRebuild_MissingTailRestartsOrFailsCleanly` | rebuild_v1_test.go | 338 | | | | | 21 | `TestShipperGroup_ShipAll_Single` | shipper_group_test.go | 8 | | | | | 22 | `TestShipperGroup_ShipAll_Two` | shipper_group_test.go | 19 | | | | | 23 | `TestShipperGroup_BarrierAll_AllSucceed` | shipper_group_test.go | 30 | | | | | 24 | `TestShipperGroup_BarrierAll_OneFail` | shipper_group_test.go | 42 | | | | | 25 | `TestShipperGroup_BarrierAll_AllFail` | shipper_group_test.go | 53 | | | | | 26 | `TestShipperGroup_AllDegraded_Empty` | shipper_group_test.go | 67 | | | | | 27 | `TestShipperGroup_AllDegraded_Mixed` | shipper_group_test.go | 74 | | | | | 28 | `TestShipperGroup_StopAll` | shipper_group_test.go | 88 | | | | | 29 | `TestShipperGroup_DegradedCount` | shipper_group_test.go | 98 | | | | | 30 | `TestAdversarial_ConcurrentBarrierDoesNotCorruptCatchupFailures` | sync_all_adversarial_test.go | 21 | | | | | 31 | `TestAdversarial_FreshShipperUsesBootstrapNotReconnect` | sync_all_adversarial_test.go | 72 | | | | | 32 | `TestAdversarial_ReconnectUsesHandshakeNotBootstrap` | sync_all_adversarial_test.go | 122 | | | | | 33 | `TestAdversarial_ReplicaRejectsDuplicateLSN` | sync_all_adversarial_test.go | 193 | | | | | 34 | `TestAdversarial_ReplicaRejectsGapLSN` | sync_all_adversarial_test.go | 247 | | | | | 35 | `TestAdversarial_NeedsRebuildBlocksAllPaths` | sync_all_adversarial_test.go | 290 | | | | | 36 | `TestAdversarial_CatchupDoesNotOverwriteNewerData` | sync_all_adversarial_test.go | 417 | | | | | 37 | `TestAdversarial_CatchupMultipleDisconnects` | sync_all_adversarial_test.go | 486 | | | | | 38 | `TestBug3_ReplicaAddr_MustBeIPPort_WildcardBind` | sync_all_bug_test.go | 30 | | | | | 39 | `TestBug2_SyncAll_SyncCache_AfterDegradedShipperRecovers` | sync_all_bug_test.go | 73 | | | | | 40 | `TestBug1_SyncAll_WriteDuringDegraded_SyncCacheMustFail` | sync_all_bug_test.go | 163 | | | | | 41 | `TestSyncAll_FullRoundTrip_WriteAndFlush` | sync_all_bug_test.go | 217 | | | | | 42 | `TestSyncAll_MultipleFlush_NoWritesBetween` | sync_all_bug_test.go | 264 | | | | | 43 | `TestReplicaProgress_BarrierUsesFlushedLSN` | sync_all_protocol_test.go | 29 | | | | | 44 | `TestReplicaProgress_FlushedLSNMonotonicWithinEpoch` | sync_all_protocol_test.go | 86 | | | | | 45 | `TestBarrier_RejectsReplicaNotInSync` | sync_all_protocol_test.go | 134 | | | | | 46 | `TestBarrier_EpochMismatchRejected` | sync_all_protocol_test.go | 169 | | | | | 47 | `TestReconnect_CatchupFromRetainedWal` | sync_all_protocol_test.go | 225 | | | | | 48 | `TestReconnect_GapBeyondRetainedWal_NeedsRebuild` | sync_all_protocol_test.go | 303 | | | | | 49 | `TestWalRetention_RequiredReplicaBlocksReclaim` | sync_all_protocol_test.go | 396 | | | | | 50 | `TestShip_DegradedDoesNotSilentlyCountAsHealthy` | sync_all_protocol_test.go | 464 | | | | | 51 | `TestReconnect_EpochChangeDuringCatchup_Aborts` | sync_all_protocol_test.go | 520 | | | | | 52 | `TestReconnect_CatchupTimeout_TransitionsDegraded` | sync_all_protocol_test.go | 592 | | | | | 53 | `TestBarrier_DuringCatchup_Rejected` | sync_all_protocol_test.go | 658 | | | | | 54 | `TestBarrier_ReplicaSlowFsync_Timeout` | sync_all_protocol_test.go | 734 | | | | | 55 | `TestWalRetention_TimeoutTriggersNeedsRebuild` | sync_all_protocol_test.go | 798 | | | | | 56 | `TestWalRetention_MaxBytesTriggersNeedsRebuild` | sync_all_protocol_test.go | 872 | | | | | 57 | `TestCatchupReplay_DataIntegrity_AllBlocksMatch` | sync_all_protocol_test.go | 957 | | | | | 58 | `TestCatchupReplay_DuplicateEntry_Idempotent` | sync_all_protocol_test.go | 1040 | | | | | 59 | `TestBestEffort_FlushSucceeds_ReplicaDown` | sync_all_protocol_test.go | 1124 | | | | | 60 | `TestReplicaState_InitialDisconnected` | sync_all_protocol_test.go | 1185 | | | | | 61 | `TestReplicaState_ShipDoesNotGrantInSync` | sync_all_protocol_test.go | 1192 | | | | | 62 | `TestReplicaState_BarrierBootstrapGrantsInSync` | sync_all_protocol_test.go | 1227 | | | | | 63 | `TestReplicaState_ShipFailureTransitionsToDegraded` | sync_all_protocol_test.go | 1266 | | | | | 64 | `TestReplicaState_BarrierDegradedReconnectFail_StaysDegraded` | sync_all_protocol_test.go | 1310 | | | | | 65 | `TestReplicaState_BarrierDegradedReconnectSuccess_RestoresInSync` | sync_all_protocol_test.go | 1324 | | | | | 66 | `TestShipperGroup_InSyncCount` | sync_all_protocol_test.go | 1359 | | | | | 67 | `TestBarrierResp_FlushedLSN_Roundtrip` | sync_all_protocol_test.go | 1392 | | | | | 68 | `TestBarrierResp_BackwardCompat_1Byte` | sync_all_protocol_test.go | 1407 | | | | | 69 | `TestReplica_FlushedLSN_OnlyAfterSync` | sync_all_protocol_test.go | 1419 | | | | | 70 | `TestReplica_FlushedLSN_NotOnReceive` | sync_all_protocol_test.go | 1473 | | | | | 71 | `TestShipper_ReplicaFlushedLSN_UpdatedOnBarrier` | sync_all_protocol_test.go | 1508 | | | | | 72 | `TestShipper_ReplicaFlushedLSN_Monotonic` | sync_all_protocol_test.go | 1558 | | | | | 73 | `TestShipperGroup_MinReplicaFlushedLSN` | sync_all_protocol_test.go | 1601 | | | | ### testrunner | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestAgent_Health` | agent_test.go | 42 | | | | | 2 | `TestAgent_Health_NoAuth` | agent_test.go | 68 | | | | | 3 | `TestAgent_Auth_Rejection` | agent_test.go | 83 | | | | | 4 | `TestAgent_Auth_ValidToken` | agent_test.go | 99 | | | | | 5 | `TestAgent_Phase_EchoAction` | agent_test.go | 117 | | | | | 6 | `TestAgent_Phase_FailStopsExecution` | agent_test.go | 158 | | | | | 7 | `TestAgent_Upload_PathSafety` | agent_test.go | 196 | | | | | 8 | `TestAgent_Upload_ValidPath` | agent_test.go | 223 | | | | | 9 | `TestAgent_Exec_DisabledByDefault` | agent_test.go | 262 | | | | | 10 | `TestAgent_Exec_Enabled` | agent_test.go | 277 | | | | | 11 | `TestAgent_Artifacts_PathSafety` | agent_test.go | 301 | | | | | 12 | `TestAgent_Artifacts_MissingDir` | agent_test.go | 331 | | | | | 13 | `TestAgent_Artifacts_NoAuth` | agent_test.go | 346 | | | | | 14 | `TestAgent_Artifacts_ValidDir` | agent_test.go | 361 | | | | | 15 | `TestAgent_Phase_VarSubstitution` | agent_test.go | 399 | | | | | 16 | `TestSaveAndLoadBaseline` | baseline_test.go | 10 | | | | | 17 | `TestSaveBaselineIdempotent` | baseline_test.go | 55 | | | | | 18 | `TestLoadLatestBaseline_Empty` | baseline_test.go | 77 | | | | | 19 | `TestLoadLatestBaseline_PicksLatest` | baseline_test.go | 85 | | | | | 20 | `TestParseFioMetric_WriteIOPS` | bench_test.go | 86 | | | | | 21 | `TestParseFioMetric_WriteBW` | bench_test.go | 96 | | | | | 22 | `TestParseFioMetric_WriteLatency` | bench_test.go | 107 | | | | | 23 | `TestParseFioMetric_WriteP99` | bench_test.go | 118 | | | | | 24 | `TestParseFioMetric_ReadIOPS` | bench_test.go | 129 | | | | | 25 | `TestParseFioMetric_ExplicitDirection` | bench_test.go | 139 | | | | | 26 | `TestParseFioMetric_AutoDetect` | bench_test.go | 159 | | | | | 27 | `TestParseFioMetric_UnknownMetric` | bench_test.go | 179 | | | | | 28 | `TestParseFioMetric_PlainNumber` | bench_test.go | 186 | | | | | 29 | `TestParseFioMetric_PlainInteger` | bench_test.go | 196 | | | | | 30 | `TestParseFioMetric_QuotedNumber` | bench_test.go | 206 | | | | | 31 | `TestParseFioMetric_NumberWithWhitespace` | bench_test.go | 216 | | | | | 32 | `TestParseFioMetric_InvalidInput` | bench_test.go | 226 | | | | | 33 | `TestParseFioMetric_InvalidJSON` | bench_test.go | 233 | | | | | 34 | `TestParseFioMetric_EmptyJobs` | bench_test.go | 240 | | | | | 35 | `TestComputeBenchResult_ThroughputPass` | bench_test.go | 247 | | | | | 36 | `TestComputeBenchResult_ThroughputFail` | bench_test.go | 257 | | | | | 37 | `TestComputeBenchResult_ThroughputWarn` | bench_test.go | 264 | | | | | 38 | `TestComputeBenchResult_LatencyPass` | bench_test.go | 275 | | | | | 39 | `TestComputeBenchResult_LatencyFail` | bench_test.go | 287 | | | | | 40 | `TestComputeBenchResult_ZeroBaseline` | bench_test.go | 295 | | | | | 41 | `TestFormatBenchReport` | bench_test.go | 302 | | | | | 42 | `TestParsePgbenchTPS` | bench_test.go | 340 | | | | | 43 | `TestTrimValues` | bench_test.go | 391 | | | | | 44 | `TestTargetSpecNQN` | bench_test.go | 404 | | | | | 45 | `TestExtractHost` | benchmark_test.go | 7 | | | | | 46 | `TestBenchmarkReportHeader_CrossMachineDetection` | benchmark_test.go | 29 | | | | | 47 | `TestPostcheckPgdataLocalDetection` | benchmark_test.go | 45 | | | | | 48 | `TestPreflightAddressCheck` | benchmark_test.go | 64 | | | | | 49 | `TestClusterManager_NilSpec_Noop` | cluster_manager_test.go | 58 | | | | | 50 | `TestClusterManager_Fallback_Fail` | cluster_manager_test.go | 70 | | | | | 51 | `TestClusterManager_Fallback_Skip` | cluster_manager_test.go | 90 | | | | | 52 | `TestClusterManager_SetVars` | cluster_manager_test.go | 110 | | | | | 53 | `TestClusterManager_Teardown_AutoManaged_Kills` | cluster_manager_test.go | 136 | | | | | 54 | `TestClusterManager_Teardown_AutoAttached_NoKill` | cluster_manager_test.go | 166 | | | | | 55 | `TestClusterManager_Teardown_DestroyAttached_Kills` | cluster_manager_test.go | 180 | | | | | 56 | `TestClusterManager_Teardown_Keep_NoAction` | cluster_manager_test.go | 194 | | | | | 57 | `TestClusterManager_MeetsRequirements` | cluster_manager_test.go | 211 | | | | | 58 | `TestConsole_ScenariosEndpoint` | console_test.go | 15 | | | | | 59 | `TestConsole_StatusEndpoint_NoRun` | console_test.go | 41 | | | | | 60 | `TestConsole_RunEndpoint_MissingScenario` | console_test.go | 59 | | | | | 61 | `TestConsole_RunEndpoint_InvalidScenario` | console_test.go | 75 | | | | | 62 | `TestConsole_RunAndPollStatus` | console_test.go | 91 | | | | | 63 | `TestConsole_ConflictOnDoubleRun` | console_test.go | 159 | | | | | 64 | `TestConsole_AgentsEndpoint` | console_test.go | 191 | | | | | 65 | `TestConsole_TiersEndpoint` | console_test.go | 210 | | | | | 66 | `TestConsole_ReportNotFound` | console_test.go | 239 | | | | | 67 | `TestConsole_IndexPage` | console_test.go | 254 | | | | | 68 | `TestCoordinator_RegisterAgent` | coordinator_test.go | 28 | | | | | 69 | `TestCoordinator_WaitForAgents_AlreadyRegistered` | coordinator_test.go | 44 | | | | | 70 | `TestCoordinator_WaitForAgents_Timeout` | coordinator_test.go | 54 | | | | | 71 | `TestCoordinator_WaitForAgents_NoExpected` | coordinator_test.go | 66 | | | | | 72 | `TestCoordinator_BuildNodeAgentMap` | coordinator_test.go | 74 | | | | | 73 | `TestCoordinator_ResolveActionAgent` | coordinator_test.go | 94 | | | | | 74 | `TestCoordinatorAgent_PhaseDispatch` | coordinator_test.go | 133 | | | | | 75 | `TestCoordinatorAgent_VarMerge` | coordinator_test.go | 222 | | | | | 76 | `TestCoordinatorAgent_FailureStopsNormalPhases` | coordinator_test.go | 288 | | | | | 77 | `TestCoordinatorAgent_RetryOnFailure` | coordinator_test.go | 341 | | | | | 78 | `TestCoordinatorAgent_VarsInResult` | coordinator_test.go | 390 | | | | | 79 | `TestCoordinatorAgent_DryRun` | coordinator_test.go | 446 | | | | | 80 | `TestCoordinator_RegisterTokenValidation` | coordinator_test.go | 474 | | | | | 81 | `TestCoordinator_RegisterNoToken` | coordinator_test.go | 531 | | | | | 82 | `TestAgent_PersistentReRegistration` | coordinator_test.go | 562 | | | | | 83 | `TestEngine_BasicFlow` | engine_test.go | 26 | | | | | 84 | `TestEngine_FailureStopsPhase` | engine_test.go | 74 | | | | | 85 | `TestEngine_IgnoreError` | engine_test.go | 116 | | | | | 86 | `TestEngine_AlwaysPhaseRunsAfterFailure` | engine_test.go | 155 | | | | | 87 | `TestEngine_VarSubstitution` | engine_test.go | 203 | | | | | 88 | `TestEngine_EnvVars` | engine_test.go | 242 | | | | | 89 | `TestEngine_Timeout` | engine_test.go | 278 | | | | | 90 | `TestEngine_UnknownAction` | engine_test.go | 323 | | | | | 91 | `TestEngine_ParallelPhase` | engine_test.go | 351 | | | | | 92 | `TestResolveVars` | engine_test.go | 398 | | | | | 93 | `TestEngine_VarsInResult` | engine_test.go | 423 | | | | | 94 | `TestEngine_Repeat3Pass` | engine_test.go | 466 | | | | | 95 | `TestEngine_RepeatFailStopsEarly` | engine_test.go | 516 | | | | | 96 | `TestEngine_RepeatAggregateMedian` | engine_test.go | 562 | | | | | 97 | `TestEngine_RepeatAggregateMean` | engine_test.go | 628 | | | | | 98 | `TestEngine_RepeatAggregateNone` | engine_test.go | 674 | | | | | 99 | `TestTrimOutliers` | engine_test.go | 721 | | | | | 100 | `TestParse_InlineParams` | engine_test.go | 749 | | | | | 101 | `TestResolveAction_PreservesInlineParams` | engine_test.go | 820 | | | | | 102 | `TestEngine_CleanupVars` | engine_test.go | 841 | | | | | 103 | `TestEngine_ActionTimeout_Enforced` | engine_test.go | 893 | | | | | 104 | `TestEngine_TempRoot_UniquePerRun` | engine_test.go | 947 | | | | | 105 | `TestEngine_TempRoot_PreservedIfSet` | engine_test.go | 1006 | | | | | 106 | `TestParse_AggregateValidation` | engine_test.go | 1036 | | | | | 107 | `TestEngine_EnvMerge_ExistingVarsWin` | engine_test.go | 1095 | | | | | 108 | `TestInclude_Basic` | include_test.go | 10 | | | | | 109 | `TestInclude_Params` | include_test.go | 47 | | | | | 110 | `TestInclude_NestedInclude` | include_test.go | 79 | | | | | 111 | `TestInclude_CircularDetected` | include_test.go | 123 | | | | | 112 | `TestInclude_MissingFile` | include_test.go | 150 | | | | | 113 | `TestInclude_MultiplePhases` | include_test.go | 168 | | | | | 114 | `TestInclude_ParamsSubstituteNodeAndSaveAs` | include_test.go | 212 | | | | | 115 | `TestLocalNode_Run_Echo` | local_node_test.go | 18 | | | | | 116 | `TestLocalNode_Run_ExitCode` | local_node_test.go | 36 | | | | | 117 | `TestLocalNode_Run_Timeout` | local_node_test.go | 51 | | | | | 118 | `TestLocalNode_RunRoot_NonRoot` | local_node_test.go | 63 | | | | | 119 | `TestLocalNode_Upload` | local_node_test.go | 77 | | | | | 120 | `TestLocalNode_Close` | local_node_test.go | 112 | | | | | 121 | `TestLocalNode_DetectRoot` | local_node_test.go | 117 | | | | | 122 | `TestParsePrometheusText` | metrics_test.go | 8 | | | | | 123 | `TestParsePrometheusText_Empty` | metrics_test.go | 32 | | | | | 124 | `TestComputeStats` | metrics_test.go | 39 | | | | | 125 | `TestComputeStats_Empty` | metrics_test.go | 63 | | | | | 126 | `TestComputeStats_Single` | metrics_test.go | 70 | | | | | 127 | `TestParsePerfLogLines` | metrics_test.go | 77 | | | | | 128 | `TestParsePerfLogLines_Empty` | metrics_test.go | 100 | | | | | 129 | `TestFormatStats` | metrics_test.go | 107 | | | | | 130 | `TestParse_ValidScenario` | parser_test.go | 8 | | | | | 131 | `TestParse_MissingName` | parser_test.go | 84 | | | | | 132 | `TestParse_InvalidNodeRef` | parser_test.go | 98 | | | | | 133 | `TestParse_PortConflict` | parser_test.go | 124 | | | | | 134 | `TestParse_InvalidTargetRef` | parser_test.go | 154 | | | | | 135 | `TestParse_MissingIQNSuffix` | parser_test.go | 180 | | | | | 136 | `TestParse_NoPhases` | parser_test.go | 205 | | | | | 137 | `TestParse_AgentTopology_Valid` | parser_test.go | 215 | | | | | 138 | `TestParse_AgentTopology_InvalidAgentRef` | parser_test.go | 253 | | | | | 139 | `TestParse_ParallelPhase_SaveAsConflict` | parser_test.go | 275 | | | | | 140 | `TestParse_SequentialPhase_SaveAsDuplicate_Allowed` | parser_test.go | 303 | | | | | 141 | `TestParse_ActionRetryAndTimeout` | parser_test.go | 330 | | | | | 142 | `TestExtractVarsFromString` | parser_test.go | 361 | | | | | 143 | `TestRegistry_TierGating` | registry_test.go | 9 | | | | | 144 | `TestRegistry_ListByTier` | registry_test.go | 54 | | | | | 145 | `TestRegistry_ActionTier` | registry_test.go | 75 | | | | | 146 | `TestRegistry_EmptyTiersAllowsAll` | registry_test.go | 91 | | | | | 147 | `TestCompareBaseline_P99Increase` | regression_test.go | 7 | | | | | 148 | `TestCompareBaseline_P99WithinLimit` | regression_test.go | 22 | | | | | 149 | `TestCompareBaseline_IOPSDecrease` | regression_test.go | 34 | | | | | 150 | `TestCompareBaseline_IOPSWithinLimit` | regression_test.go | 46 | | | | | 151 | `TestHardFail_DataMismatch` | regression_test.go | 58 | | | | | 152 | `TestHardFail_BarrierLagUnbounded` | regression_test.go | 68 | | | | | 153 | `TestHardFail_BarrierLagOK` | regression_test.go | 78 | | | | | 154 | `TestHardFail_BarrierErrorRate` | regression_test.go | 88 | | | | | 155 | `TestHardFail_HealthZero` | regression_test.go | 101 | | | | | 156 | `TestHardFail_HealthZeroDuringFault_OK` | regression_test.go | 111 | | | | | 157 | `TestHardFail_WALFullStall` | regression_test.go | 121 | | | | | 158 | `TestHardFail_AllPass` | regression_test.go | 131 | | | | | 159 | `TestFormatRegressionReport` | regression_test.go | 144 | | | | | 160 | `TestWriteHTMLReport_Basic` | reporter_html_test.go | 11 | | | | | 161 | `TestWriteHTMLReport_WithFailure` | reporter_html_test.go | 64 | | | | | 162 | `TestWriteHTMLReport_WithPerfAndMetrics` | reporter_html_test.go | 103 | | | | | 163 | `TestWriteHTMLReport_WithArtifacts` | reporter_html_test.go | 139 | | | | | 164 | `TestPrintSummary` | reporter_test.go | 14 | | | | | 165 | `TestPrintSummary_WithFailure` | reporter_test.go | 55 | | | | | 166 | `TestWriteJSON` | reporter_test.go | 84 | | | | | 167 | `TestWriteJUnitXML` | reporter_test.go | 116 | | | | | 168 | `TestPrintSummary_WithPerfTable` | reporter_test.go | 162 | | | | | 169 | `TestPrintSummary_WithMetricsTable` | reporter_test.go | 196 | | | | | 170 | `TestPrintSummary_WithPerfStatsLine` | reporter_test.go | 219 | | | | | 171 | `TestParsePerfStatsLine` | reporter_test.go | 242 | | | | | 172 | `TestParsePerfStatsLine_Invalid` | reporter_test.go | 259 | | | | | 173 | `TestFormatInt` | reporter_test.go | 266 | | | | | 174 | `TestWriteJSON_WithVars` | reporter_test.go | 284 | | | | | 175 | `TestBaselineCompare` | reporter_test.go | 322 | | | | | 176 | `TestCreateRunBundle_CreatesDirectoryAndFiles` | runbundle_test.go | 12 | | | | | 177 | `TestRunBundle_Finalize_WritesAllOutputs` | runbundle_test.go | 73 | | | | | 178 | `TestRunBundle_UniqueRunIDs` | runbundle_test.go | 122 | | | | | 179 | `TestRunBundle_CommandLineRecorded` | runbundle_test.go | 141 | | | | ### wal | # | Test Name | File | Line | Status | Sim | Notes | |---|-----------|------|------|--------|-----|-------| | 1 | `TestQA_ParseIOBackend_ValidInputs` | qa_iobackend_config_test.go | 19 | | | | | 2 | `TestQA_ParseIOBackend_InvalidInputs` | qa_iobackend_config_test.go | 52 | | | | | 3 | `TestQA_IOBackend_String` | qa_iobackend_config_test.go | 84 | | | | | 4 | `TestQA_ResolveIOBackend` | qa_iobackend_config_test.go | 105 | | | | | 5 | `TestQA_Config_Validate_IOBackend_AutoOK` | qa_iobackend_config_test.go | 122 | | | | | 6 | `TestQA_Config_Validate_IOBackend_StandardOK` | qa_iobackend_config_test.go | 130 | | | | | 7 | `TestQA_Config_Validate_IOBackend_IOURingRejected` | qa_iobackend_config_test.go | 138 | | | | | 8 | `TestQA_Config_Validate_IOBackend_OutOfRange` | qa_iobackend_config_test.go | 150 | | | | | 9 | `TestQA_Config_Validate_IOBackend_NegativeValue` | qa_iobackend_config_test.go | 162 | | | | | 10 | `TestQA_DefaultConfig_IOBackend_IsAuto` | qa_iobackend_config_test.go | 173 | | | | | 11 | `TestQA_ApplyDefaults_IOBackend_ZeroStaysAuto` | qa_iobackend_config_test.go | 182 | | | | | 12 | `TestQA_ApplyDefaults_IOBackend_ExplicitPreserved` | qa_iobackend_config_test.go | 191 | | | | | 13 | `TestQA_IOBackend_RoundTrip` | qa_iobackend_config_test.go | 201 | | | | | 14 | `TestQA_IOBackend_IotaValues` | qa_iobackend_config_test.go | 217 | | | | | 15 | `TestQA_Admission_PressureOscillation` | qa_wal_admission_test.go | 23 | | | | | 16 | `TestQA_Admission_StarvationUnderSoftPressure` | qa_wal_admission_test.go | 96 | | | | | 17 | `TestQA_Admission_HardToSoftTransitionNoDeadlock` | qa_wal_admission_test.go | 130 | | | | | 18 | `TestQA_Admission_SemaphoreFullWithHardPressureDrain` | qa_wal_admission_test.go | 166 | | | | | 19 | `TestQA_Admission_DoubleReleaseSafety` | qa_wal_admission_test.go | 210 | | | | | 20 | `TestQA_Admission_SoftDelayScalingBoundary` | qa_wal_admission_test.go | 244 | | | | | 21 | `TestQA_Admission_CloseRaceBothPaths` | qa_wal_admission_test.go | 286 | | | | | 22 | `TestQA_Admission_ZeroPressureThroughput` | qa_wal_admission_test.go | 341 | | | | | 23 | `TestQA_Admission_NotifyFnPanicPropagates` | qa_wal_admission_test.go | 370 | | | | | 24 | `TestQA_Admission_WALUsedFnReturnsAboveOne` | qa_wal_admission_test.go | 397 | | | | | 25 | `TestQA_Admission_WriteLBAIntegration` | qa_wal_admission_test.go | 417 | | | | | 26 | `TestQA_Admission_Metrics_ConcurrentCountersConsistent` | qa_wal_admission_test.go | 473 | | | | | 27 | `TestQA_Admission_Metrics_SemaphoreWaitPathRecords` | qa_wal_admission_test.go | 560 | | | | | 28 | `TestQA_Admission_Metrics_SemaphoreTimeoutRecords` | qa_wal_admission_test.go | 606 | | | | | 29 | `TestQA_Admission_Metrics_CloseDuringSemaphoreRecords` | qa_wal_admission_test.go | 642 | | | | | 30 | `TestQA_Admission_Metrics_Integration_WriteLBA` | qa_wal_admission_test.go | 681 | | | | | 31 | `TestQA_CP11A3_SoftMarkEqualsHardMark_NoPanic` | qa_wal_cp11a3_adversarial_test.go | 25 | | | | | 32 | `TestQA_CP11A3_SoftZoneExactBoundary_DelayIsZero` | qa_wal_cp11a3_adversarial_test.go | 64 | | | | | 33 | `TestQA_CP11A3_ConcurrentHardWaiters_TimeAccumulates` | qa_wal_cp11a3_adversarial_test.go | 102 | | | | | 34 | `TestQA_CP11A3_PressureStateAndAcquireRace` | qa_wal_cp11a3_adversarial_test.go | 156 | | | | | 35 | `TestQA_CP11A3_TimeInZoneMonotonicity` | qa_wal_cp11a3_adversarial_test.go | 219 | | | | | 36 | `TestQA_CP11A3_WALGuidance_ZeroInputs` | qa_wal_cp11a3_adversarial_test.go | 288 | | | | | 37 | `TestQA_CP11A3_WALGuidance_OverflowSafe` | qa_wal_cp11a3_adversarial_test.go | 324 | | | | | 38 | `TestQA_CP11A3_WALStatusSnapshot_PartialInit` | qa_wal_cp11a3_adversarial_test.go | 349 | | | | | 39 | `TestQA_CP11A3_ObserverPanic_DocumentedBehavior` | qa_wal_cp11a3_adversarial_test.go | 403 | | | | | 40 | `TestQA_CP11A3_ConcurrentWALStatusReads` | qa_wal_cp11a3_adversarial_test.go | 442 | | | | | 41 | `TestQA_WALHardening_SoftPressureVisibility` | qa_wal_hardening_test.go | 13 | | | | | 42 | `TestQA_WALHardening_HardPressureVisibility` | qa_wal_hardening_test.go | 51 | | | | | 43 | `TestQA_WALHardening_PressureStateTransitions` | qa_wal_hardening_test.go | 88 | | | | | 44 | `TestQA_WALHardening_NilSafe` | qa_wal_hardening_test.go | 124 | | | | | 45 | `TestQA_WALHardening_ObserverCallbackContract` | qa_wal_hardening_test.go | 144 | | | | | 46 | `TestQA_WALHardening_ExportSemantics` | qa_wal_hardening_test.go | 178 | | | | | 47 | `TestWALAdmission_AcquireRelease_Basic` | wal_admission_test.go | 11 | | | | | 48 | `TestWALAdmission_SoftWatermark_Throttles` | wal_admission_test.go | 48 | | | | | 49 | `TestWALAdmission_BelowSoft_NoThrottle` | wal_admission_test.go | 75 | | | | | 50 | `TestWALAdmission_HardWatermark_BlocksUntilDrain` | wal_admission_test.go | 97 | | | | | 51 | `TestWALAdmission_HardWatermark_Timeout` | wal_admission_test.go | 133 | | | | | 52 | `TestWALAdmission_ClosedDuringHardWait` | wal_admission_test.go | 153 | | | | | 53 | `TestWALAdmission_Concurrent_BoundedWriters` | wal_admission_test.go | 174 | | | | | 54 | `TestWALAdmission_FlusherNotified_OnSoftAndHard` | wal_admission_test.go | 221 | | | | | 55 | `TestWALAdmission_SingleBudget_HardThenSemaphore` | wal_admission_test.go | 268 | | | | | 56 | `TestWALAdmission_CloseDuringSemaphoreWait` | wal_admission_test.go | 319 | | | | | 57 | `TestWALAdmission_Metrics_NoPressure` | wal_admission_test.go | 358 | | | | | 58 | `TestWALAdmission_Metrics_SoftWatermark` | wal_admission_test.go | 389 | | | | | 59 | `TestWALAdmission_Metrics_HardWatermark` | wal_admission_test.go | 418 | | | | | 60 | `TestWALAdmission_Metrics_Timeout` | wal_admission_test.go | 457 | | | | | 61 | `TestWALAdmission_Metrics_NilMetrics` | wal_admission_test.go | 486 | | | | | 62 | `TestWALAdmission_Metrics_ClosedDuringHard` | wal_admission_test.go | 506 | | | | | 63 | `TestWALAdmission_PressureState_Normal` | wal_admission_test.go | 537 | | | | | 64 | `TestWALAdmission_PressureState_Soft` | wal_admission_test.go | 551 | | | | | 65 | `TestWALAdmission_PressureState_Hard` | wal_admission_test.go | 565 | | | | | 66 | `TestWALAdmission_SoftPressureWaitTracking` | wal_admission_test.go | 579 | | | | | 67 | `TestWALAdmission_HardPressureWaitTracking` | wal_admission_test.go | 605 | | | | | 68 | `TestWALAdmission_Metrics_WaitObserverCalled` | wal_admission_test.go | 636 | | | | | 69 | `TestWALAdmission_ThresholdAccessors` | wal_admission_test.go | 665 | | | | | 70 | `TestWALEntry` | wal_entry_test.go | 10 | | | | | 71 | `TestWALSizingGuidance_AdequateGeneral` | wal_guidance_test.go | 9 | | | | | 72 | `TestWALSizingGuidance_UndersizedDatabase` | wal_guidance_test.go | 16 | | | | | 73 | `TestWALSizingGuidance_UndersizedThroughput` | wal_guidance_test.go | 26 | | | | | 74 | `TestWALSizingGuidance_AbsoluteMinimum` | wal_guidance_test.go | 33 | | | | | 75 | `TestWALSizingGuidance_UnknownHint` | wal_guidance_test.go | 43 | | | | | 76 | `TestEvaluateWALConfig_HighConcurrencySmallWAL` | wal_guidance_test.go | 60 | | | | | 77 | `TestEvaluateWALConfig_SaneDefaults` | wal_guidance_test.go | 68 | | | | | 78 | `TestWALStatus_ReflectsVolumeState` | wal_guidance_test.go | 75 | | | | | 79 | `TestWALStatus_NilAdmission` | wal_guidance_test.go | 103 | | | | | 80 | `TestWALStatus_IncludesThresholds` | wal_guidance_test.go | 117 | | | | | 81 | `TestWALWriter` | wal_writer_test.go | 9 | | | |