diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2019-03-25 10:14:42 +0800 |
---|---|---|
committer | Jimmy Hu <jimmy.hu@dexon.org> | 2019-03-27 15:25:10 +0800 |
commit | b8ced165b1fb03394f8758e08148b0e5d06aa07b (patch) | |
tree | fa327764a4cf564bb4aa39c1570ffd7f292c7ba1 /core/test/network_test.go | |
parent | 6efe199cb38eb4cb9a9a64d98ff5f8c4fb997da7 (diff) | |
download | tangerine-consensus-b8ced165b1fb03394f8758e08148b0e5d06aa07b.tar.gz tangerine-consensus-b8ced165b1fb03394f8758e08148b0e5d06aa07b.tar.zst tangerine-consensus-b8ced165b1fb03394f8758e08148b0e5d06aa07b.zip |
core: Remove agreement result (#514)
* core: remove agreement result for round with randomness
* remove agr test in syncer
* fixup
* remove randomness field from agreement result
* modify test
Diffstat (limited to 'core/test/network_test.go')
-rw-r--r-- | core/test/network_test.go | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/core/test/network_test.go b/core/test/network_test.go index 993ae70..d0e9fb2 100644 --- a/core/test/network_test.go +++ b/core/test/network_test.go @@ -291,6 +291,81 @@ func (s *NetworkTestSuite) TestBroadcastToSet() { req.IsType(&types.Block{}, <-notaryNode.ReceiveChan()) } +type testVoteCensor struct{} + +func (vc *testVoteCensor) Censor(msg interface{}) bool { + if _, ok := msg.(*types.Vote); ok { + return true + } + return false +} + +func (s *NetworkTestSuite) TestCensor() { + var ( + req = s.Require() + peerCount = 5 + ) + _, pubKeys, err := NewKeys(peerCount) + req.NoError(err) + networks := s.setupNetworks(pubKeys) + receiveChans := make(map[types.NodeID]<-chan interface{}, peerCount) + for nID, node := range networks { + receiveChans[nID] = node.ReceiveChan() + } + + censor := &testVoteCensor{} + vote := &types.Vote{} + censorNodeID := types.NewNodeID(pubKeys[0]) + otherNodeID := types.NewNodeID(pubKeys[1]) + censorNode := networks[censorNodeID] + otherNode := networks[otherNodeID] + + // Censor incomming votes. + censorNode.SetCensor(censor, nil) + otherNode.BroadcastVote(vote) + time.Sleep(50 * time.Millisecond) + for nID, receiveChan := range receiveChans { + if nID == otherNodeID || nID == censorNodeID { + req.Equal(0, len(receiveChan)) + } else { + req.Equal(1, len(receiveChan)) + req.IsType(&types.Vote{}, <-receiveChan) + } + } + + // Censor outgoing votes. + censorNode.SetCensor(nil, censor) + censorNode.BroadcastVote(vote) + time.Sleep(50 * time.Millisecond) + for _, receiveChan := range receiveChans { + req.Equal(0, len(receiveChan)) + } + + // No censorship. + censorNode.SetCensor(nil, nil) + otherNode.BroadcastVote(vote) + time.Sleep(50 * time.Millisecond) + for nID, receiveChan := range receiveChans { + if nID == otherNodeID { + req.Equal(0, len(receiveChan)) + } else { + req.Equal(1, len(receiveChan)) + req.IsType(&types.Vote{}, <-receiveChan) + } + } + censorNode.BroadcastVote(vote) + time.Sleep(50 * time.Millisecond) + for nID, receiveChan := range receiveChans { + if nID == censorNodeID { + req.Equal(0, len(receiveChan)) + } else { + req.Equal(1, len(receiveChan)) + req.IsType(&types.Vote{}, <-receiveChan) + } + } + +} + func TestNetwork(t *testing.T) { suite.Run(t, new(NetworkTestSuite)) } |