diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2019-04-14 16:27:15 +0800 |
---|---|---|
committer | Jimmy Hu <jimmy.hu@dexon.org> | 2019-04-22 17:17:15 +0800 |
commit | 06eaea0734a00726daf2a9e082cfd5dab61eb79e (patch) | |
tree | 32ce4a917e115f564bf37953bf222a71b921523e | |
parent | d941dcc2dda8989d045063629f9b1bf582b63fd2 (diff) | |
download | dexon-consensus-06eaea0734a00726daf2a9e082cfd5dab61eb79e.tar.gz dexon-consensus-06eaea0734a00726daf2a9e082cfd5dab61eb79e.tar.zst dexon-consensus-06eaea0734a00726daf2a9e082cfd5dab61eb79e.zip |
core: fix flaky test
-rw-r--r-- | core/consensus_test.go | 25 |
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 { |