diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-12-14 20:56:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-14 20:56:24 +0800 |
commit | 5f32dc8d27564e1f3a105fd1dacf02130b08621a (patch) | |
tree | d2649afe0df27de2ec2eb84f4709a2c7699d3d22 /core/dkg-tsig-protocol_test.go | |
parent | 155e31175aeaa3685c57383e386c6e62c46318ef (diff) | |
download | dexon-consensus-5f32dc8d27564e1f3a105fd1dacf02130b08621a.tar dexon-consensus-5f32dc8d27564e1f3a105fd1dacf02130b08621a.tar.gz dexon-consensus-5f32dc8d27564e1f3a105fd1dacf02130b08621a.tar.bz2 dexon-consensus-5f32dc8d27564e1f3a105fd1dacf02130b08621a.tar.lz dexon-consensus-5f32dc8d27564e1f3a105fd1dacf02130b08621a.tar.xz dexon-consensus-5f32dc8d27564e1f3a105fd1dacf02130b08621a.tar.zst dexon-consensus-5f32dc8d27564e1f3a105fd1dacf02130b08621a.zip |
core: Fix a bug of DKGNackComplaints (#370)
* core: Fix a bug if DKGNackComplaint is added after required time.
* Duplicated NackComplaint should be only count once.
Diffstat (limited to 'core/dkg-tsig-protocol_test.go')
-rw-r--r-- | core/dkg-tsig-protocol_test.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/core/dkg-tsig-protocol_test.go b/core/dkg-tsig-protocol_test.go index 4594ccd..2dad0e8 100644 --- a/core/dkg-tsig-protocol_test.go +++ b/core/dkg-tsig-protocol_test.go @@ -353,6 +353,48 @@ func (s *DKGTSIGProtocolTestSuite) TestComplaint() { s.Len(receiver.complaints, 0) } +// TestDuplicateComplaint tests if the duplicated complaint is process properly. +func (s *DKGTSIGProtocolTestSuite) TestDuplicateComplaint() { + k := 3 + n := 10 + round := uint64(1) + _, pubKeys, err := test.NewKeys(5) + s.Require().NoError(err) + gov, err := test.NewGovernance(test.NewState( + pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift) + s.Require().NoError(err) + + receivers, _ := s.newProtocols(k, n, round) + + byzantineID := s.nIDs[0] + victomID := s.nIDs[1] + + for _, receiver := range receivers { + gov.AddDKGMasterPublicKey(round, receiver.mpk) + } + + // Test for nack complaints. + complaints := make([]*typesDKG.Complaint, k+1) + for i := range complaints { + complaints[i] = &typesDKG.Complaint{ + ProposerID: byzantineID, + Round: round, + PrivateShare: typesDKG.PrivateShare{ + ProposerID: victomID, + Round: round, + }, + } + s.Require().True(complaints[i].IsNack()) + } + + gpk, err := NewDKGGroupPublicKey(round, + gov.DKGMasterPublicKeys(round), complaints, + k, + ) + s.Require().NoError(err) + s.Require().Len(gpk.qualifyIDs, n) +} + // TestAntiComplaint tests if a nack complaint is received, // create an anti complaint. func (s *DKGTSIGProtocolTestSuite) TestAntiComplaint() { |