@@ -75,7 +75,14 @@ func awaitNodeReplication(ctx context.Context, node *backend.DistMemory, key str
7575 return false
7676}
7777
78- // TestDistPhase1BasicQuorum is a scaffolding test verifying three-node quorum Set/Get over HTTP transport.
78+ // TestDistPhase1BasicQuorum verifies three-node quorum Set/Get over the
79+ // HTTP transport. Originally a scaffolding test that t.Skipf'd when
80+ // replication hadn't propagated to the third node ("hint replay not yet
81+ // observable" — true at the time the test was written). Hint replay is
82+ // now fully wired (TestHintedHandoffReplay, TestDistFailureRecovery),
83+ // so the test now asserts strictly: every owner must hold the value
84+ // within the 3 s deadline. A failure here means the HTTP-transport
85+ // replication path regressed.
7986func TestDistPhase1BasicQuorum (t * testing.T ) {
8087 t .Parallel ()
8188
@@ -112,19 +119,16 @@ func TestDistPhase1BasicQuorum(t *testing.T) {
112119
113120 assertValue (t , got .Value )
114121
115- if awaitNodeReplication (ctx , nodeC , "k1" , 3 * time .Second ) {
116- return
117- }
118-
119- it , ok := nodeC .Get (ctx , "k1" )
120- if ! ok {
121- t .Skipf ("hint replay not yet observable; will be validated after full wiring (missing item)" )
122-
123- return
124- }
122+ // Replication must reach C within deadline; the previous skip-on-miss
123+ // branches were placeholders for pre-hint-replay behavior. Locally
124+ // this completes in ~500 ms across 20 runs.
125+ if ! awaitNodeReplication (ctx , nodeC , "k1" , 3 * time .Second ) {
126+ it , present := nodeC .Get (ctx , "k1" )
127+ if ! present {
128+ t .Fatalf ("nodeC never received replicated value within 3s" )
129+ }
125130
126- if ! valueOK (it .Value ) {
127- t .Skipf ("value mismatch after wait" )
131+ t .Fatalf ("nodeC has wrong value after wait: %T %v" , it .Value , it .Value )
128132 }
129133}
130134
0 commit comments