aboutsummaryrefslogtreecommitdiffstats
path: root/core/dkg-tsig-protocol_test.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2018-12-14 20:56:24 +0800
committerGitHub <noreply@github.com>2018-12-14 20:56:24 +0800
commit5f32dc8d27564e1f3a105fd1dacf02130b08621a (patch)
treed2649afe0df27de2ec2eb84f4709a2c7699d3d22 /core/dkg-tsig-protocol_test.go
parent155e31175aeaa3685c57383e386c6e62c46318ef (diff)
downloaddexon-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.go42
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() {