Skip to content

Commit 818f1bc

Browse files
committed
Fix unit test by eliminating treading issue
1 parent b68b885 commit 818f1bc

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

test_readwritecloser.go

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,41 @@ package can
22

33
import (
44
"bytes"
5+
"io"
6+
"time"
57
)
68

79
type echoReadWriteCloser struct {
8-
buf bytes.Buffer
10+
buf bytes.Buffer
11+
closed bool
912
}
1013

1114
// NewEchoReadWriteCloser returns a ReadWriteCloser which echoes received bytes.
1215
func NewEchoReadWriteCloser() ReadWriteCloser {
1316
return NewReadWriteCloser(&echoReadWriteCloser{})
1417
}
1518

16-
func (rw *echoReadWriteCloser) Read(b []byte) (n int, err error) { return rw.buf.Read(b) }
17-
func (rw *echoReadWriteCloser) Write(b []byte) (n int, err error) { return rw.buf.Write(b) }
18-
func (rw *echoReadWriteCloser) Close() error { return nil }
19+
func (rw *echoReadWriteCloser) Read(b []byte) (n int, err error) {
20+
for {
21+
if rw.buf.Len() > 0 {
22+
return rw.buf.Read(b)
23+
}
24+
25+
if rw.closed == true {
26+
break
27+
}
28+
29+
<-time.After(time.Millisecond * 1)
30+
}
31+
32+
return 0, io.EOF
33+
}
34+
35+
func (rw *echoReadWriteCloser) Write(b []byte) (n int, err error) {
36+
return rw.buf.Write(b)
37+
}
38+
39+
func (rw *echoReadWriteCloser) Close() error {
40+
rw.closed = true
41+
return nil
42+
}

0 commit comments

Comments
 (0)