@@ -177,18 +177,12 @@ func TestBackedWriter_BlockOnWriteFailure(t *testing.T) {
177
177
// Expected - write is blocked
178
178
}
179
179
180
- // Should be disconnected
180
+ // Wait for error event which implies writer was marked disconnected
181
+ receivedErrorEvent := testutil .RequireReceive (ctx , t , errChan )
182
+ require .Contains (t , receivedErrorEvent .Err .Error (), "write failed" )
183
+ require .Equal (t , "writer" , receivedErrorEvent .Component )
181
184
require .False (t , bw .Connected ())
182
185
183
- // Error should be sent to error channel
184
- select {
185
- case receivedErrorEvent := <- errChan :
186
- require .Contains (t , receivedErrorEvent .Err .Error (), "write failed" )
187
- require .Equal (t , "writer" , receivedErrorEvent .Component )
188
- default :
189
- t .Fatal ("Expected error to be sent to error channel" )
190
- }
191
-
192
186
// Reconnect with working writer and verify write completes
193
187
writer2 := newMockWriter ()
194
188
err = bw .Reconnect (0 , writer2 ) // Replay from beginning
@@ -205,6 +199,7 @@ func TestBackedWriter_BlockOnWriteFailure(t *testing.T) {
205
199
206
200
func TestBackedWriter_ReplayOnReconnect (t * testing.T ) {
207
201
t .Parallel ()
202
+ ctx := testutil .Context (t , testutil .WaitShort )
208
203
209
204
errChan := make (chan backedpipe.ErrorEvent , 1 )
210
205
bw := backedpipe .NewBackedWriter (backedpipe .DefaultBufferSize , errChan )
@@ -243,6 +238,10 @@ func TestBackedWriter_ReplayOnReconnect(t *testing.T) {
243
238
// Expected - write is blocked
244
239
}
245
240
241
+ // Wait for error event which implies writer was marked disconnected
242
+ receivedErrorEvent := testutil .RequireReceive (ctx , t , errChan )
243
+ require .Contains (t , receivedErrorEvent .Err .Error (), "connection lost" )
244
+ require .Equal (t , "writer" , receivedErrorEvent .Component )
246
245
require .False (t , bw .Connected ())
247
246
248
247
// Reconnect with new writer and request replay from beginning
@@ -479,18 +478,12 @@ func TestBackedWriter_BlockOnPartialWrite(t *testing.T) {
479
478
// Expected - write is blocked
480
479
}
481
480
482
- // Should be disconnected
481
+ // Wait for error event which implies writer was marked disconnected
482
+ receivedErrorEvent := testutil .RequireReceive (ctx , t , errChan )
483
+ require .Contains (t , receivedErrorEvent .Err .Error (), "short write" )
484
+ require .Equal (t , "writer" , receivedErrorEvent .Component )
483
485
require .False (t , bw .Connected ())
484
486
485
- // Error should be sent to error channel
486
- select {
487
- case receivedErrorEvent := <- errChan :
488
- require .Contains (t , receivedErrorEvent .Err .Error (), "short write" )
489
- require .Equal (t , "writer" , receivedErrorEvent .Component )
490
- default :
491
- t .Fatal ("Expected error to be sent to error channel" )
492
- }
493
-
494
487
// Reconnect with working writer and verify write completes
495
488
writer2 := newMockWriter ()
496
489
err := bw .Reconnect (0 , writer2 ) // Replay from beginning
@@ -605,7 +598,10 @@ func TestBackedWriter_WriteBlocksAfterDisconnection(t *testing.T) {
605
598
// Expected - write is blocked
606
599
}
607
600
608
- // Should be disconnected
601
+ // Wait for error event which implies writer was marked disconnected
602
+ receivedErrorEvent := testutil .RequireReceive (ctx , t , errChan )
603
+ require .Contains (t , receivedErrorEvent .Err .Error (), "connection lost" )
604
+ require .Equal (t , "writer" , receivedErrorEvent .Component )
609
605
require .False (t , bw .Connected ())
610
606
611
607
// Reconnect and verify write completes
@@ -910,7 +906,7 @@ func TestBackedWriter_MultipleWritesDuringReconnect(t *testing.T) {
910
906
<- writesReadyTimer .C
911
907
912
908
// Start reconnection with controlled replay
913
- replayStarted := make (chan struct {})
909
+ replayStarted := make (chan struct {}, 1 )
914
910
replayCanComplete := make (chan struct {})
915
911
writer2 := & mockWriter {
916
912
writeFunc : func (p []byte ) (int , error ) {
0 commit comments