diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-10-18 14:48:05 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-18 14:48:05 +0800 |
commit | 8303e9d054957195717f41804a456e2720b0c4bb (patch) | |
tree | 8ad2b0ead5391ec6de2c0a39d75b679db87af6b0 /core/dkg-tsig-protocol_test.go | |
parent | eae2d201e927c774f2f409f09fa132e4678f540c (diff) | |
download | dexon-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.go | 61 |
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)) } |