Skip to content

Commit c1fccfd

Browse files
authored
Merge pull request #204 from kaleido-io/fftls-race-fixes
[fftls] Fix Race Conditions in Unit Tests
2 parents 6840b3f + d38195d commit c1fccfd

1 file changed

Lines changed: 19 additions & 4 deletions

File tree

pkg/fftls/fftls_test.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"strings"
3232
"testing"
3333
"time"
34+
"io"
3435

3536
"github.com/hyperledger/firefly-common/pkg/config"
3637
"github.com/stretchr/testify/assert"
@@ -100,28 +101,42 @@ func buildTLSListener(t *testing.T, conf config.Section, tlsType TLSType) (strin
100101
server, err := tls.Listen("tcp4", "127.0.0.1:0", tlsConfig)
101102
assert.NoError(t, err)
102103

104+
done := make(chan struct{})
105+
103106
go func() {
104107
for {
105108
tlsConn, err := server.Accept()
106109
if err != nil {
107-
t.Logf("Server ending: %s", err)
110+
select {
111+
case <-done:
112+
return // cleanup in progress, don't log
113+
default:
114+
t.Logf("Server ending: %s", err)
115+
}
108116
return
109117
}
110118
// Just read until EOF, echoing back
111119
for {
112120
oneByte := make([]byte, 1)
113121
_, err = tlsConn.Read(oneByte)
114122
if err != nil {
115-
t.Logf("read failed: %s", err)
123+
select {
124+
case <-done:
125+
// cleanup in progress, don't log
126+
default:
127+
if err != io.EOF {
128+
t.Logf("read failed: %s", err)
129+
}
130+
}
116131
break
117132
}
118-
_, err = tlsConn.Write(oneByte)
119-
assert.NoError(t, err)
133+
_, _ = tlsConn.Write(oneByte) // ignore write errors during shutdown
120134
}
121135
tlsConn.Close()
122136
}
123137
}()
124138
return server.Addr().String(), func() {
139+
close(done)
125140
err := server.Close()
126141
assert.NoError(t, err)
127142
}

0 commit comments

Comments
 (0)