Skip to content

Commit 336e62b

Browse files
authored
fix: deflake BackedWriter tests (#19802)
1 parent 6d39077 commit 336e62b

File tree

1 file changed

+18
-22
lines changed

1 file changed

+18
-22
lines changed

agent/immortalstreams/backedpipe/backed_writer_test.go

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -177,18 +177,12 @@ func TestBackedWriter_BlockOnWriteFailure(t *testing.T) {
177177
// Expected - write is blocked
178178
}
179179

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)
181184
require.False(t, bw.Connected())
182185

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-
192186
// Reconnect with working writer and verify write completes
193187
writer2 := newMockWriter()
194188
err = bw.Reconnect(0, writer2) // Replay from beginning
@@ -205,6 +199,7 @@ func TestBackedWriter_BlockOnWriteFailure(t *testing.T) {
205199

206200
func TestBackedWriter_ReplayOnReconnect(t *testing.T) {
207201
t.Parallel()
202+
ctx := testutil.Context(t, testutil.WaitShort)
208203

209204
errChan := make(chan backedpipe.ErrorEvent, 1)
210205
bw := backedpipe.NewBackedWriter(backedpipe.DefaultBufferSize, errChan)
@@ -243,6 +238,10 @@ func TestBackedWriter_ReplayOnReconnect(t *testing.T) {
243238
// Expected - write is blocked
244239
}
245240

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)
246245
require.False(t, bw.Connected())
247246

248247
// Reconnect with new writer and request replay from beginning
@@ -479,18 +478,12 @@ func TestBackedWriter_BlockOnPartialWrite(t *testing.T) {
479478
// Expected - write is blocked
480479
}
481480

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)
483485
require.False(t, bw.Connected())
484486

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-
494487
// Reconnect with working writer and verify write completes
495488
writer2 := newMockWriter()
496489
err := bw.Reconnect(0, writer2) // Replay from beginning
@@ -605,7 +598,10 @@ func TestBackedWriter_WriteBlocksAfterDisconnection(t *testing.T) {
605598
// Expected - write is blocked
606599
}
607600

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)
609605
require.False(t, bw.Connected())
610606

611607
// Reconnect and verify write completes
@@ -910,7 +906,7 @@ func TestBackedWriter_MultipleWritesDuringReconnect(t *testing.T) {
910906
<-writesReadyTimer.C
911907

912908
// Start reconnection with controlled replay
913-
replayStarted := make(chan struct{})
909+
replayStarted := make(chan struct{}, 1)
914910
replayCanComplete := make(chan struct{})
915911
writer2 := &mockWriter{
916912
writeFunc: func(p []byte) (int, error) {

0 commit comments

Comments
 (0)