aboutsummaryrefslogtreecommitdiffstats
path: root/core/nodeset-cache_test.go
diff options
context:
space:
mode:
authorMission Liao <mission.liao@dexon.org>2018-11-14 15:25:54 +0800
committerJimmy Hu <jimmy.hu@dexon.org>2018-11-14 15:25:54 +0800
commit3a04c0d3405960e3a6eabb6adc700fa2fd5aac21 (patch)
treee13d65047af0c5646867a7424683b96bfc2e843f /core/nodeset-cache_test.go
parente33261e6008dfba5b3401d0adc22a7da8649c9dc (diff)
downloadtangerine-consensus-3a04c0d3405960e3a6eabb6adc700fa2fd5aac21.tar
tangerine-consensus-3a04c0d3405960e3a6eabb6adc700fa2fd5aac21.tar.gz
tangerine-consensus-3a04c0d3405960e3a6eabb6adc700fa2fd5aac21.tar.bz2
tangerine-consensus-3a04c0d3405960e3a6eabb6adc700fa2fd5aac21.tar.lz
tangerine-consensus-3a04c0d3405960e3a6eabb6adc700fa2fd5aac21.tar.xz
tangerine-consensus-3a04c0d3405960e3a6eabb6adc700fa2fd5aac21.tar.zst
tangerine-consensus-3a04c0d3405960e3a6eabb6adc700fa2fd5aac21.zip
utils: add utils package (#327)
Diffstat (limited to 'core/nodeset-cache_test.go')
-rw-r--r--core/nodeset-cache_test.go125
1 files changed, 0 insertions, 125 deletions
diff --git a/core/nodeset-cache_test.go b/core/nodeset-cache_test.go
deleted file mode 100644
index 828ef49..0000000
--- a/core/nodeset-cache_test.go
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2018 The dexon-consensus Authors
-// This file is part of the dexon-consensus library.
-//
-// The dexon-consensus library is free software: you can redistribute it
-// and/or modify it under the terms of the GNU Lesser General Public License as
-// published by the Free Software Foundation, either version 3 of the License,
-// or (at your option) any later version.
-//
-// The dexon-consensus library is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
-// General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the dexon-consensus library. If not, see
-// <http://www.gnu.org/licenses/>.
-
-package core
-
-import (
- "testing"
- "time"
-
- "github.com/dexon-foundation/dexon-consensus/common"
- "github.com/dexon-foundation/dexon-consensus/core/crypto"
- "github.com/dexon-foundation/dexon-consensus/core/crypto/ecdsa"
- "github.com/dexon-foundation/dexon-consensus/core/test"
- "github.com/dexon-foundation/dexon-consensus/core/types"
- "github.com/stretchr/testify/suite"
-)
-
-type nsIntf struct {
- s *NodeSetCacheTestSuite
- crs common.Hash
- curKeys []crypto.PublicKey
-}
-
-func (g *nsIntf) Configuration(round uint64) (cfg *types.Config) {
- return &types.Config{
- NotarySetSize: 7,
- DKGSetSize: 7,
- NumChains: 4,
- }
-}
-func (g *nsIntf) CRS(round uint64) (b common.Hash) { return g.crs }
-func (g *nsIntf) NodeSet(round uint64) []crypto.PublicKey {
- // Randomly generating keys, and check them for verification.
- g.curKeys = []crypto.PublicKey{}
- for i := 0; i < 10; i++ {
- prvKey, err := ecdsa.NewPrivateKey()
- g.s.Require().NoError(err)
- g.curKeys = append(g.curKeys, prvKey.PublicKey())
- }
- return g.curKeys
-}
-
-type NodeSetCacheTestSuite struct {
- suite.Suite
-}
-
-func (s *NodeSetCacheTestSuite) TestGovernanceIntf() {
- // NodeSetCacheInterface should let Governance implement it.
- var gov Governance
- _, pubKeys, err := test.NewKeys(7)
- s.Require().NoError(err)
- gov, err = test.NewGovernance(pubKeys, 250*time.Millisecond, ConfigRoundShift)
- s.Require().NoError(err)
- _, ok := gov.(NodeSetCacheInterface)
- s.True(ok)
-}
-
-func (s *NodeSetCacheTestSuite) TestBasicUsage() {
- var (
- nsIntf = &nsIntf{
- s: s,
- crs: common.NewRandomHash(),
- }
- cache = NewNodeSetCache(nsIntf)
- req = s.Require()
- )
-
- chk := func(
- cache *NodeSetCache, round uint64, nodeSet map[types.NodeID]struct{}) {
-
- for nID := range nodeSet {
- // It should exists.
- exists, err := cache.Exists(round, nID)
- req.NoError(err)
- req.True(exists)
- // We could get keys.
- key, exists := cache.GetPublicKey(nID)
- req.NotNil(key)
- req.True(exists)
- }
- }
-
- // Try to get round 0.
- nodeSet0, err := cache.GetNodeSet(0)
- req.NoError(err)
- chk(cache, 0, nodeSet0.IDs)
- notarySet, err := cache.GetNotarySet(0, 0)
- req.NoError(err)
- chk(cache, 0, notarySet)
- dkgSet, err := cache.GetDKGSet(0)
- req.NoError(err)
- chk(cache, 0, dkgSet)
- // Try to get round 1.
- nodeSet1, err := cache.GetNodeSet(1)
- req.NoError(err)
- chk(cache, 0, nodeSet0.IDs)
- chk(cache, 1, nodeSet1.IDs)
- // Try to get round 6, round 0 should be purged.
- nodeSet6, err := cache.GetNodeSet(6)
- req.NoError(err)
- chk(cache, 1, nodeSet1.IDs)
- chk(cache, 6, nodeSet6.IDs)
- for nID := range nodeSet0.IDs {
- _, exists := cache.GetPublicKey(nID)
- req.False(exists)
- }
-}
-
-func TestNodeSetCache(t *testing.T) {
- suite.Run(t, new(NodeSetCacheTestSuite))
-}