aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-04-14 16:27:15 +0800
committerJimmy Hu <jimmy.hu@dexon.org>2019-04-22 17:17:15 +0800
commit06eaea0734a00726daf2a9e082cfd5dab61eb79e (patch)
tree32ce4a917e115f564bf37953bf222a71b921523e
parentd941dcc2dda8989d045063629f9b1bf582b63fd2 (diff)
downloaddexon-consensus-06eaea0734a00726daf2a9e082cfd5dab61eb79e.tar.gz
dexon-consensus-06eaea0734a00726daf2a9e082cfd5dab61eb79e.tar.zst
dexon-consensus-06eaea0734a00726daf2a9e082cfd5dab61eb79e.zip
core: fix flaky test
-rw-r--r--core/consensus_test.go25
1 files changed, 23 insertions, 2 deletions
diff --git a/core/consensus_test.go b/core/consensus_test.go
index f677d00..54be711 100644
--- a/core/consensus_test.go
+++ b/core/consensus_test.go
@@ -18,7 +18,9 @@
package core
import (
+ "context"
"encoding/json"
+ "sync"
"testing"
"time"
@@ -139,9 +141,16 @@ func (nc *networkConnection) newNetwork(nID types.NodeID) *network {
func (nc *networkConnection) setCon(nID types.NodeID, con *Consensus) {
ch := make(chan interface{}, 1000)
+ nc.s.wg.Add(1)
go func() {
+ defer nc.s.wg.Done()
for {
- msg := <-ch
+ var msg interface{}
+ select {
+ case msg = <-ch:
+ case <-nc.s.ctx.Done():
+ return
+ }
var err error
// Testify package does not support concurrent call.
// Use panic() to detact error.
@@ -167,7 +176,19 @@ func (nc *networkConnection) setCon(nID types.NodeID, con *Consensus) {
type ConsensusTestSuite struct {
suite.Suite
- conn *networkConnection
+ ctx context.Context
+ ctxCancel context.CancelFunc
+ conn *networkConnection
+ wg sync.WaitGroup
+}
+
+func (s *ConsensusTestSuite) SetupTest() {
+ s.ctx, s.ctxCancel = context.WithCancel(context.Background())
+}
+
+func (s *ConsensusTestSuite) TearDownTest() {
+ s.ctxCancel()
+ s.wg.Wait()
}
func (s *ConsensusTestSuite) newNetworkConnection() *networkConnection {