aboutsummaryrefslogtreecommitdiffstats
path: root/core/dkg-tsig-protocol_test.go
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2018-10-18 14:48:05 +0800
committerGitHub <noreply@github.com>2018-10-18 14:48:05 +0800
commit8303e9d054957195717f41804a456e2720b0c4bb (patch)
tree8ad2b0ead5391ec6de2c0a39d75b679db87af6b0 /core/dkg-tsig-protocol_test.go
parenteae2d201e927c774f2f409f09fa132e4678f540c (diff)
downloaddexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar
dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.gz
dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.bz2
dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.lz
dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.xz
dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.tar.zst
dexon-consensus-8303e9d054957195717f41804a456e2720b0c4bb.zip
core: sync compaction chain (#222)
Diffstat (limited to 'core/dkg-tsig-protocol_test.go')
-rw-r--r--core/dkg-tsig-protocol_test.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/core/dkg-tsig-protocol_test.go b/core/dkg-tsig-protocol_test.go
index d03d811..e533a2f 100644
--- a/core/dkg-tsig-protocol_test.go
+++ b/core/dkg-tsig-protocol_test.go
@@ -635,6 +635,67 @@ func (s *DKGTSIGProtocolTestSuite) TestProposeFinalize() {
Round: 1,
}, final)
}
+
+func (s *DKGTSIGProtocolTestSuite) TestTSigVerifierCache() {
+ k := 3
+ n := 10
+ gov, err := test.NewGovernance(n, 100)
+ s.Require().NoError(err)
+ for i := 0; i < 10; i++ {
+ round := uint64(i + 1)
+ receivers, protocols := s.newProtocols(k, n, round)
+
+ for _, receiver := range receivers {
+ gov.AddDKGMasterPublicKey(round, receiver.mpk)
+ }
+
+ for _, protocol := range protocols {
+ protocol.proposeFinalize()
+ }
+
+ for _, recv := range receivers {
+ s.Require().Len(recv.final, 1)
+ gov.AddDKGFinalize(recv.final[0].Round, recv.final[0])
+ }
+ s.Require().True(gov.IsDKGFinal(round))
+ }
+
+ cache := NewTSigVerifierCache(gov, 3)
+ for i := 0; i < 5; i++ {
+ round := uint64(i + 1)
+ ok, err := cache.Update(round)
+ s.Require().NoError(err)
+ s.True(ok)
+ }
+ s.Len(cache.verifier, 3)
+
+ for i := 0; i < 2; i++ {
+ round := uint64(i + 1)
+ _, exist := cache.Get(round)
+ s.False(exist)
+ }
+
+ for i := 3; i < 5; i++ {
+ round := uint64(i + 1)
+ _, exist := cache.Get(round)
+ s.True(exist)
+ }
+
+ ok, err := cache.Update(uint64(1))
+ s.Require().Equal(ErrRoundAlreadyPurged, err)
+
+ cache = NewTSigVerifierCache(gov, 1)
+ ok, err = cache.Update(uint64(3))
+ s.Require().NoError(err)
+ s.Require().True(ok)
+ s.Equal(uint64(3), cache.minRound)
+
+ ok, err = cache.Update(uint64(5))
+ s.Require().NoError(err)
+ s.Require().True(ok)
+ s.Equal(uint64(5), cache.minRound)
+}
+
func TestDKGTSIGProtocol(t *testing.T) {
suite.Run(t, new(DKGTSIGProtocolTestSuite))
}