Skip to content

Commit 474236e

Browse files
committed
Update buffer empty broadcast to be more accurate for tests
1 parent fa5e001 commit 474236e

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

stream_test.go

+11-5
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,15 @@ type testReadWriter struct {
9999
serverBuffer bytes.Buffer
100100
}
101101

102+
func (rw *testReadWriter) maybeBroadcastEmpty() {
103+
if rw.serverBuffer.Len() == 0 {
104+
select {
105+
case rw.readEmptyChan <- struct{}{}:
106+
default:
107+
}
108+
}
109+
}
110+
102111
func (rw *testReadWriter) Read(buf []byte) (int, error) {
103112
if rw.queuedReadError != nil {
104113
err := rw.queuedReadError
@@ -112,14 +121,10 @@ func (rw *testReadWriter) Read(buf []byte) (int, error) {
112121
if err == io.EOF {
113122
err = nil
114123
}
124+
rw.maybeBroadcastEmpty()
115125
return s, err
116126
}
117127

118-
select {
119-
case rw.readEmptyChan <- struct{}{}:
120-
default:
121-
}
122-
123128
// Read from server. We're either waiting for this whole test to
124129
// finish or for data to come in from the server buffer. We expect
125130
// only one read to be happening at once.
@@ -130,6 +135,7 @@ func (rw *testReadWriter) Read(buf []byte) (int, error) {
130135
if err == io.EOF {
131136
err = nil
132137
}
138+
rw.maybeBroadcastEmpty()
133139
return s, err
134140
case <-rw.exiting:
135141
return 0, io.EOF

0 commit comments

Comments
 (0)