aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/dexcon-simulation-with-scheduler/main.go10
-rw-r--r--core/compaction-chain_test.go4
-rw-r--r--core/configuration-chain_test.go3
-rw-r--r--core/consensus_test.go15
-rw-r--r--core/dkg-tsig-protocol_test.go24
-rw-r--r--core/lattice_test.go6
-rw-r--r--core/test/governance.go9
-rw-r--r--core/test/governance_test.go10
-rw-r--r--core/test/network_test.go3
-rw-r--r--core/test/state-change-request.go58
-rw-r--r--core/test/state.go25
-rw-r--r--core/test/state_test.go15
-rw-r--r--integration_test/consensus_test.go12
-rw-r--r--integration_test/stats_test.go5
-rw-r--r--integration_test/with_scheduler_test.go9
-rw-r--r--simulation/node.go7
16 files changed, 153 insertions, 62 deletions
diff --git a/cmd/dexcon-simulation-with-scheduler/main.go b/cmd/dexcon-simulation-with-scheduler/main.go
index bf0708b..1ce9c99 100644
--- a/cmd/dexcon-simulation-with-scheduler/main.go
+++ b/cmd/dexcon-simulation-with-scheduler/main.go
@@ -29,6 +29,7 @@ import (
"runtime/pprof"
"time"
+ "github.com/dexon-foundation/dexon-consensus/common"
"github.com/dexon-foundation/dexon-consensus/core"
"github.com/dexon-foundation/dexon-consensus/core/test"
integration "github.com/dexon-foundation/dexon-consensus/integration_test"
@@ -82,9 +83,12 @@ func main() {
}
// Setup governance instance.
gov, err := test.NewGovernance(
- pubKeys,
- time.Duration(cfg.Networking.Mean)*time.Millisecond,
- core.ConfigRoundShift)
+ test.NewState(
+ pubKeys,
+ time.Duration(cfg.Networking.Mean)*time.Millisecond,
+ &common.NullLogger{},
+ true,
+ ), core.ConfigRoundShift)
if err != nil {
log.Fatal("could not setup governance: ", err)
}
diff --git a/core/compaction-chain_test.go b/core/compaction-chain_test.go
index 2e2d518..e944e4d 100644
--- a/core/compaction-chain_test.go
+++ b/core/compaction-chain_test.go
@@ -59,8 +59,8 @@ func (s *CompactionChainTestSuite) newCompactionChain() (
*compactionChain, *mockTSigVerifier) {
_, pubKeys, err := test.NewKeys(4)
s.Require().NoError(err)
- gov, err := test.NewGovernance(
- pubKeys, 100*time.Millisecond, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100*time.Millisecond, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
cc := newCompactionChain(gov)
cc.init(&types.Block{})
diff --git a/core/configuration-chain_test.go b/core/configuration-chain_test.go
index 281be06..3a7f729 100644
--- a/core/configuration-chain_test.go
+++ b/core/configuration-chain_test.go
@@ -173,7 +173,8 @@ func (s *ConfigurationChainTestSuite) runDKG(
}
for _, nID := range s.nIDs {
- gov, err := test.NewGovernance(pks, 50*time.Millisecond, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pks, 50*time.Millisecond, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
cache := utils.NewNodeSetCache(gov)
cfgChains[nID] = newConfigurationChain(
diff --git a/core/consensus_test.go b/core/consensus_test.go
index 7d9c653..5819cc2 100644
--- a/core/consensus_test.go
+++ b/core/consensus_test.go
@@ -220,7 +220,8 @@ func (s *ConsensusTestSuite) TestSimpleDeliverBlock() {
)
prvKeys, pubKeys, err := test.NewKeys(4)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, time.Second, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, time.Second, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
minInterval := gov.Configuration(0).MinBlockInterval
// Setup core.Consensus and test.App.
@@ -442,7 +443,8 @@ func (s *ConsensusTestSuite) TestPrepareBlock() {
)
prvKeys, pubKeys, err := test.NewKeys(4)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, time.Second, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, time.Second, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
dMoment := time.Now().UTC()
// Setup core.Consensus and test.App.
@@ -485,7 +487,8 @@ func (s *ConsensusTestSuite) TestPrepareGenesisBlock() {
conn := s.newNetworkConnection()
prvKeys, pubKeys, err := test.NewKeys(4)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, time.Second, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, time.Second, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
prvKey := prvKeys[0]
_, con := s.prepareConsensus(time.Now().UTC(), gov, prvKey, conn)
@@ -508,7 +511,8 @@ func (s *ConsensusTestSuite) TestDKGCRS() {
conn := s.newNetworkConnection()
prvKeys, pubKeys, err := test.NewKeys(n)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, lambda, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, lambda, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
gov.State().RequestChange(test.StateChangeRoundInterval, 200*lambda)
cons := map[types.NodeID]*Consensus{}
@@ -549,7 +553,8 @@ func (s *ConsensusTestSuite) TestSyncBA() {
conn := s.newNetworkConnection()
prvKeys, pubKeys, err := test.NewKeys(4)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, lambdaBA, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, lambdaBA, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
prvKey := prvKeys[0]
_, con := s.prepareConsensus(time.Now().UTC(), gov, prvKey, conn)
diff --git a/core/dkg-tsig-protocol_test.go b/core/dkg-tsig-protocol_test.go
index 282dc0f..4594ccd 100644
--- a/core/dkg-tsig-protocol_test.go
+++ b/core/dkg-tsig-protocol_test.go
@@ -142,7 +142,8 @@ func (s *DKGTSIGProtocolTestSuite) TestDKGTSIGProtocol() {
round := uint64(1)
_, pubKeys, err := test.NewKeys(5)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, 100, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
receivers, protocols := s.newProtocols(k, n, round)
@@ -247,7 +248,8 @@ func (s *DKGTSIGProtocolTestSuite) TestNackComplaint() {
round := uint64(1)
_, pubKeys, err := test.NewKeys(5)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, 100, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
receivers, protocols := s.newProtocols(k, n, round)
@@ -293,7 +295,8 @@ func (s *DKGTSIGProtocolTestSuite) TestComplaint() {
round := uint64(1)
_, pubKeys, err := test.NewKeys(5)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, 100, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
receivers, protocols := s.newProtocols(k, n, round)
@@ -358,7 +361,8 @@ func (s *DKGTSIGProtocolTestSuite) TestAntiComplaint() {
round := uint64(1)
_, pubKeys, err := test.NewKeys(5)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, 100, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
receivers, protocols := s.newProtocols(k, n, round)
@@ -415,7 +419,8 @@ func (s *DKGTSIGProtocolTestSuite) TestEncorceNackComplaint() {
round := uint64(1)
_, pubKeys, err := test.NewKeys(5)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, 100, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
receivers, protocols := s.newProtocols(k, n, round)
@@ -469,7 +474,8 @@ func (s *DKGTSIGProtocolTestSuite) TestQualifyIDs() {
round := uint64(1)
_, pubKeys, err := test.NewKeys(5)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, 100, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
receivers, _ := s.newProtocols(k, n, round)
@@ -534,7 +540,8 @@ func (s *DKGTSIGProtocolTestSuite) TestPartialSignature() {
round := uint64(1)
_, pubKeys, err := test.NewKeys(5)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, 100, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
receivers, protocols := s.newProtocols(k, n, round)
@@ -656,7 +663,8 @@ func (s *DKGTSIGProtocolTestSuite) TestTSigVerifierCache() {
n := 10
_, pubKeys, err := test.NewKeys(n)
s.Require().NoError(err)
- gov, err := test.NewGovernance(pubKeys, 100, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, 100, &common.NullLogger{}, true), ConfigRoundShift)
s.Require().NoError(err)
gov.CatchUpWithRound(10)
for i := 0; i < 10; i++ {
diff --git a/core/lattice_test.go b/core/lattice_test.go
index 42b8e06..eecaf74 100644
--- a/core/lattice_test.go
+++ b/core/lattice_test.go
@@ -102,9 +102,11 @@ func (s *LatticeTestSuite) newTestLatticeMgr(
db, err := blockdb.NewMemBackedBlockDB()
req.NoError(err)
// Setup governance.
+ logger := &common.NullLogger{}
_, pubKeys, err := test.NewKeys(int(cfg.NotarySetSize))
req.NoError(err)
- gov, err := test.NewGovernance(pubKeys, cfg.LambdaBA, ConfigRoundShift)
+ gov, err := test.NewGovernance(test.NewState(
+ pubKeys, cfg.LambdaBA, logger, true), ConfigRoundShift)
req.NoError(err)
// Setup application.
app := test.NewApp(gov.State())
@@ -128,7 +130,7 @@ func (s *LatticeTestSuite) newTestLatticeMgr(
app,
app,
db,
- &common.NullLogger{})}
+ logger)}
}
func (s *LatticeTestSuite) TestBasicUsage() {
diff --git a/core/test/governance.go b/core/test/governance.go
index 14c8177..9bb042e 100644
--- a/core/test/governance.go
+++ b/core/test/governance.go
@@ -24,7 +24,6 @@ import (
"reflect"
"sort"
"sync"
- "time"
"github.com/dexon-foundation/dexon-consensus/common"
"github.com/dexon-foundation/dexon-consensus/core/crypto"
@@ -48,16 +47,12 @@ type Governance struct {
}
// NewGovernance constructs a Governance instance.
-func NewGovernance(genesisNodes []crypto.PublicKey, lambda time.Duration,
- roundShift uint64) (g *Governance, err error) {
+func NewGovernance(state *State, roundShift uint64) (g *Governance, err error) {
// Setup a State instance.
- // TODO(mission): it's not a good idea to embed initialization of one
- // public class in another, I did this to make the range of
- // modification smaller.
g = &Governance{
roundShift: roundShift,
pendingConfigChanges: make(map[uint64]map[StateChangeType]interface{}),
- stateModule: NewState(genesisNodes, lambda, true),
+ stateModule: state,
}
return
}
diff --git a/core/test/governance_test.go b/core/test/governance_test.go
index 01993f9..30f1469 100644
--- a/core/test/governance_test.go
+++ b/core/test/governance_test.go
@@ -21,6 +21,7 @@ import (
"testing"
"time"
+ "github.com/dexon-foundation/dexon-consensus/common"
"github.com/stretchr/testify/suite"
)
@@ -33,10 +34,12 @@ func (s *GovernanceTestSuite) TestEqual() {
// Setup a base governance.
_, genesisNodes, err := NewKeys(20)
req.NoError(err)
- g1, err := NewGovernance(genesisNodes, 100*time.Millisecond, 2)
+ g1, err := NewGovernance(NewState(
+ genesisNodes, 100*time.Millisecond, &common.NullLogger{}, true), 2)
req.NoError(err)
// Create a governance with different lambda.
- g2, err := NewGovernance(genesisNodes, 50*time.Millisecond, 2)
+ g2, err := NewGovernance(NewState(
+ genesisNodes, 50*time.Millisecond, &common.NullLogger{}, true), 2)
req.NoError(err)
req.False(g1.Equal(g2, true))
// Create configs for 3 rounds for g1.
@@ -68,7 +71,8 @@ func (s *GovernanceTestSuite) TestRegisterChange() {
req := s.Require()
_, genesisNodes, err := NewKeys(20)
req.NoError(err)
- g, err := NewGovernance(genesisNodes, 100*time.Millisecond, 2)
+ g, err := NewGovernance(NewState(
+ genesisNodes, 100*time.Millisecond, &common.NullLogger{}, true), 2)
req.NoError(err)
// Unable to register change for genesis round.
req.Error(g.RegisterConfigChange(0, StateChangeNumChains, uint32(32)))
diff --git a/core/test/network_test.go b/core/test/network_test.go
index 1f9ec6f..e05dec5 100644
--- a/core/test/network_test.go
+++ b/core/test/network_test.go
@@ -253,7 +253,8 @@ func (s *NetworkTestSuite) TestBroadcastToSet() {
)
_, pubKeys, err := NewKeys(peerCount)
req.NoError(err)
- gov, err := NewGovernance(pubKeys, time.Second, 2)
+ gov, err := NewGovernance(NewState(
+ pubKeys, time.Second, &common.NullLogger{}, true), 2)
req.NoError(err)
req.NoError(gov.State().RequestChange(StateChangeDKGSetSize, uint32(1)))
req.NoError(gov.State().RequestChange(StateChangeNotarySetSize, uint32(1)))
diff --git a/core/test/state-change-request.go b/core/test/state-change-request.go
index 0f49db0..84d4d3f 100644
--- a/core/test/state-change-request.go
+++ b/core/test/state-change-request.go
@@ -18,10 +18,13 @@
package test
import (
+ "fmt"
+ "math"
"time"
"github.com/dexon-foundation/dexon-consensus/common"
"github.com/dexon-foundation/dexon-consensus/core/crypto"
+ "github.com/dexon-foundation/dexon-consensus/core/types"
typesDKG "github.com/dexon-foundation/dexon-consensus/core/types/dkg"
"github.com/dexon-foundation/dexon/rlp"
)
@@ -43,7 +46,6 @@ const (
StateChangeLambdaDKG
StateChangeRoundInterval
StateChangeMinBlockInterval
- StateChangeMaxBlockInterval
StateChangeK
StateChangePhiRatio
StateChangeNotarySetSize
@@ -133,3 +135,57 @@ func (req *StateChangeRequest) Equal(other *StateChangeRequest) error {
}
return ErrStatePendingChangesNotEqual
}
+
+// String dump the state change request into string form.
+func (req *StateChangeRequest) String() (ret string) {
+ ret = "stateChangeRequest"
+ switch req.Type {
+ case StateChangeNothing:
+ ret += "{Type:Nothing}"
+ case StateAddCRS:
+ crsReq := req.Payload.(*crsAdditionRequest)
+ ret += fmt.Sprintf("{Type:AddCRS Round:%v CRS:%s",
+ crsReq.Round,
+ crsReq.CRS.String()[:6])
+ case StateAddDKGComplaint:
+ ret += fmt.Sprintf(
+ "{Type:AddDKGComplaint %s", req.Payload.(*typesDKG.Complaint))
+ case StateAddDKGMasterPublicKey:
+ ret += fmt.Sprintf(
+ "{Type:AddDKGMasterPublicKey %s",
+ req.Payload.(*typesDKG.MasterPublicKey))
+ case StateAddDKGFinal:
+ ret += fmt.Sprintf(
+ "{Type:AddDKGFinal %s", req.Payload.(*typesDKG.Finalize))
+ case StateChangeNumChains:
+ ret += fmt.Sprintf("{Type:ChangeNumChains %v", req.Payload.(uint32))
+ case StateChangeLambdaBA:
+ ret += fmt.Sprintf(
+ "{Type:ChangeLambdaBA %v", time.Duration(req.Payload.(uint64)))
+ case StateChangeLambdaDKG:
+ ret += fmt.Sprintf(
+ "{Type:ChangeLambdaDKG %v", time.Duration(req.Payload.(uint64)))
+ case StateChangeRoundInterval:
+ ret += fmt.Sprintf(
+ "{Type:ChangeRoundInterval %v", time.Duration(req.Payload.(uint64)))
+ case StateChangeMinBlockInterval:
+ ret += fmt.Sprintf(
+ "{Type:ChangeMinBlockInterval %v",
+ time.Duration(req.Payload.(uint64)))
+ case StateChangeK:
+ ret += fmt.Sprintf("Type:ChangeK %v", req.Payload.(uint64))
+ case StateChangePhiRatio:
+ ret += fmt.Sprintf(
+ "{Type:ChangePhiRatio %v", math.Float32frombits(req.Payload.(uint32)))
+ case StateChangeNotarySetSize:
+ ret += fmt.Sprintf("{Type:ChangeNotarySetSize %v", req.Payload.(uint32))
+ case StateChangeDKGSetSize:
+ ret += fmt.Sprintf("{Type:ChangeDKGSetSize %v", req.Payload.(uint32))
+ case StateAddNode:
+ ret += fmt.Sprintf(
+ "{Type:AddNode %s",
+ types.NewNodeID(req.Payload.(crypto.PublicKey)).String()[:6])
+ }
+ panic(fmt.Errorf(
+ "attempting to dump unknown type of state change request: %v", req.Type))
+}
diff --git a/core/test/state.go b/core/test/state.go
index b39bafe..b360fa2 100644
--- a/core/test/state.go
+++ b/core/test/state.go
@@ -90,7 +90,6 @@ type State struct {
dkgSetSize uint32
roundInterval time.Duration
minBlockInterval time.Duration
- maxBlockInterval time.Duration
// Nodes
nodes map[types.NodeID]crypto.PublicKey
// DKG & CRS
@@ -100,6 +99,7 @@ type State struct {
crs []common.Hash
// Other stuffs
local bool
+ logger common.Logger
lock sync.RWMutex
appliedRequests map[common.Hash]struct{}
// Pending change requests.
@@ -111,7 +111,10 @@ type State struct {
// - node set
// - crs
func NewState(
- nodePubKeys []crypto.PublicKey, lambda time.Duration, local bool) *State {
+ nodePubKeys []crypto.PublicKey,
+ lambda time.Duration,
+ logger common.Logger,
+ local bool) *State {
nodes := make(map[types.NodeID]crypto.PublicKey)
for _, key := range nodePubKeys {
nodes[types.NewNodeID(key)] = key
@@ -119,12 +122,12 @@ func NewState(
genesisCRS := crypto.Keccak256Hash([]byte("__ DEXON"))
return &State{
local: local,
+ logger: logger,
numChains: uint32(len(nodes)),
lambdaBA: lambda,
lambdaDKG: lambda * 10,
roundInterval: lambda * 10000,
minBlockInterval: time.Millisecond * 1,
- maxBlockInterval: lambda * 8,
crs: []common.Hash{genesisCRS},
nodes: nodes,
phiRatio: 0.667,
@@ -209,10 +212,6 @@ func (s *State) unpackPayload(
var tmp uint64
err = rlp.DecodeBytes(raw.Payload, &tmp)
v = tmp
- case StateChangeMaxBlockInterval:
- var tmp uint64
- err = rlp.DecodeBytes(raw.Payload, &tmp)
- v = tmp
case StateChangeK:
var tmp uint64
err = rlp.DecodeBytes(raw.Payload, &tmp)
@@ -275,8 +274,7 @@ func (s *State) Equal(other *State) error {
s.notarySetSize == other.notarySetSize &&
s.dkgSetSize == other.dkgSetSize &&
s.roundInterval == other.roundInterval &&
- s.minBlockInterval == other.minBlockInterval &&
- s.maxBlockInterval == other.maxBlockInterval
+ s.minBlockInterval == other.minBlockInterval
if !configEqual {
return ErrStateConfigNotEqual
}
@@ -418,8 +416,8 @@ func (s *State) Clone() (copied *State) {
dkgSetSize: s.dkgSetSize,
roundInterval: s.roundInterval,
minBlockInterval: s.minBlockInterval,
- maxBlockInterval: s.maxBlockInterval,
local: s.local,
+ logger: s.logger,
nodes: make(map[types.NodeID]crypto.PublicKey),
dkgComplaints: make(
map[uint64]map[types.NodeID][]*typesDKG.Complaint),
@@ -496,6 +494,7 @@ func (s *State) Apply(reqsAsBytes []byte) (err error) {
s.lock.Lock()
defer s.lock.Unlock()
for _, req := range reqs {
+ s.logger.Debug("Apply Request", "req", req)
// Remove this request from pending set once it's about to apply.
delete(s.globalRequests, req.Hash)
delete(s.ownRequests, req.Hash)
@@ -549,6 +548,7 @@ func (s *State) PackRequests() (b []byte, err error) {
s.lock.Lock()
defer s.lock.Unlock()
for _, v := range s.globalRequests {
+ s.logger.Debug("Pack Request", "req", v)
packed = append(packed, v)
}
return rlp.EncodeToBytes(packed)
@@ -667,8 +667,6 @@ func (s *State) applyRequest(req *StateChangeRequest) error {
s.roundInterval = time.Duration(req.Payload.(uint64))
case StateChangeMinBlockInterval:
s.minBlockInterval = time.Duration(req.Payload.(uint64))
- case StateChangeMaxBlockInterval:
- s.maxBlockInterval = time.Duration(req.Payload.(uint64))
case StateChangeK:
s.k = int(req.Payload.(uint64))
case StateChangePhiRatio:
@@ -702,8 +700,7 @@ func (s *State) RequestChange(
case StateChangeLambdaBA,
StateChangeLambdaDKG,
StateChangeRoundInterval,
- StateChangeMinBlockInterval,
- StateChangeMaxBlockInterval:
+ StateChangeMinBlockInterval:
payload = uint64(payload.(time.Duration))
case StateChangeK:
payload = uint64(payload.(int))
diff --git a/core/test/state_test.go b/core/test/state_test.go
index 864b5be..9daee3a 100644
--- a/core/test/state_test.go
+++ b/core/test/state_test.go
@@ -132,7 +132,6 @@ func (s *StateTestSuite) makeConfigChanges(st *State) {
st.RequestChange(StateChangeLambdaDKG, time.Millisecond)
st.RequestChange(StateChangeRoundInterval, time.Hour)
st.RequestChange(StateChangeMinBlockInterval, time.Second)
- st.RequestChange(StateChangeMaxBlockInterval, time.Minute)
st.RequestChange(StateChangeK, 1)
st.RequestChange(StateChangePhiRatio, float32(0.5))
st.RequestChange(StateChangeNotarySetSize, uint32(5))
@@ -159,10 +158,10 @@ func (s *StateTestSuite) TestEqual() {
)
_, genesisNodes, err := NewKeys(20)
req.NoError(err)
- st := NewState(genesisNodes, lambda, true)
+ st := NewState(genesisNodes, lambda, &common.NullLogger{}, true)
req.NoError(st.Equal(st))
// One node is missing.
- st1 := NewState(genesisNodes, lambda, true)
+ st1 := NewState(genesisNodes, lambda, &common.NullLogger{}, true)
for nID := range st1.nodes {
delete(st1.nodes, nID)
break
@@ -216,7 +215,7 @@ func (s *StateTestSuite) TestPendingChangesEqual() {
// Setup a non-local mode State instance.
_, genesisNodes, err := NewKeys(20)
req.NoError(err)
- st := NewState(genesisNodes, lambda, false)
+ st := NewState(genesisNodes, lambda, &common.NullLogger{}, false)
req.NoError(st.Equal(st))
// Apply some changes.
s.makeConfigChanges(st)
@@ -236,7 +235,7 @@ func (s *StateTestSuite) TestLocalMode() {
)
_, genesisNodes, err := NewKeys(20)
req.NoError(err)
- st := NewState(genesisNodes, lambda, true)
+ st := NewState(genesisNodes, lambda, &common.NullLogger{}, true)
config1, nodes1 := st.Snapshot()
req.True(s.compareNodes(genesisNodes, nodes1))
// Check settings of config1 affected by genesisNodes and lambda.
@@ -296,7 +295,7 @@ func (s *StateTestSuite) TestPacking() {
// Make config changes.
_, genesisNodes, err := NewKeys(20)
req.NoError(err)
- st := NewState(genesisNodes, lambda, false)
+ st := NewState(genesisNodes, lambda, &common.NullLogger{}, false)
s.makeConfigChanges(st)
// Add new CRS.
crs := common.NewRandomHash()
@@ -357,8 +356,8 @@ func (s *StateTestSuite) TestRequestBroadcastAndPack() {
)
_, genesisNodes, err := NewKeys(20)
req.NoError(err)
- st := NewState(genesisNodes, lambda, false)
- st1 := NewState(genesisNodes, lambda, false)
+ st := NewState(genesisNodes, lambda, &common.NullLogger{}, false)
+ st1 := NewState(genesisNodes, lambda, &common.NullLogger{}, false)
req.NoError(st.Equal(st1))
// Make configuration changes.
s.makeConfigChanges(st)
diff --git a/integration_test/consensus_test.go b/integration_test/consensus_test.go
index 5f22b1f..d66ff72 100644
--- a/integration_test/consensus_test.go
+++ b/integration_test/consensus_test.go
@@ -194,7 +194,9 @@ func (s *ConsensusTestSuite) TestSimple() {
// Setup seed governance instance. Give a short latency to make this test
// run faster.
seedGov, err := test.NewGovernance(
- pubKeys, 100*time.Millisecond, core.ConfigRoundShift)
+ test.NewState(
+ pubKeys, 100*time.Millisecond, &common.NullLogger{}, true),
+ core.ConfigRoundShift)
req.NoError(err)
req.NoError(seedGov.State().RequestChange(
test.StateChangeRoundInterval, 50*time.Second))
@@ -237,7 +239,9 @@ func (s *ConsensusTestSuite) TestNumChainsChange() {
req.NoError(err)
// Setup seed governance instance.
seedGov, err := test.NewGovernance(
- pubKeys, 100*time.Millisecond, core.ConfigRoundShift)
+ test.NewState(
+ pubKeys, 100*time.Millisecond, &common.NullLogger{}, true),
+ core.ConfigRoundShift)
req.NoError(err)
// Setup configuration for round 0 and round 1.
req.NoError(seedGov.State().RequestChange(
@@ -311,7 +315,9 @@ func (s *ConsensusTestSuite) TestSync() {
// Setup seed governance instance. Give a short latency to make this test
// run faster.
seedGov, err := test.NewGovernance(
- pubKeys, 100*time.Millisecond, core.ConfigRoundShift)
+ test.NewState(
+ pubKeys, 100*time.Millisecond, &common.NullLogger{}, true),
+ core.ConfigRoundShift)
req.NoError(err)
req.NoError(seedGov.State().RequestChange(
test.StateChangeRoundInterval, 30*time.Second))
diff --git a/integration_test/stats_test.go b/integration_test/stats_test.go
index 5c1f412..95bd5ac 100644
--- a/integration_test/stats_test.go
+++ b/integration_test/stats_test.go
@@ -21,6 +21,7 @@ import (
"testing"
"time"
+ "github.com/dexon-foundation/dexon-consensus/common"
"github.com/dexon-foundation/dexon-consensus/core"
"github.com/dexon-foundation/dexon-consensus/core/test"
"github.com/stretchr/testify/suite"
@@ -41,7 +42,9 @@ func (s *EventStatsTestSuite) TestCalculate() {
prvKeys, pubKeys, err := test.NewKeys(7)
req.NoError(err)
gov, err := test.NewGovernance(
- pubKeys, 100*time.Millisecond, core.ConfigRoundShift)
+ test.NewState(
+ pubKeys, 100*time.Millisecond, &common.NullLogger{}, true),
+ core.ConfigRoundShift)
req.NoError(err)
nodes, err := PrepareNodes(
gov, prvKeys, 7, networkLatency, proposingLatency)
diff --git a/integration_test/with_scheduler_test.go b/integration_test/with_scheduler_test.go
index 6a94f01..66fc9b8 100644
--- a/integration_test/with_scheduler_test.go
+++ b/integration_test/with_scheduler_test.go
@@ -21,6 +21,7 @@ import (
"testing"
"time"
+ "github.com/dexon-foundation/dexon-consensus/common"
"github.com/dexon-foundation/dexon-consensus/core"
"github.com/dexon-foundation/dexon-consensus/core/test"
"github.com/stretchr/testify/suite"
@@ -51,7 +52,9 @@ func (s *WithSchedulerTestSuite) TestNonByzantine() {
req.NoError(err)
// Setup governance.
gov, err := test.NewGovernance(
- pubKeys, 250*time.Millisecond, core.ConfigRoundShift)
+ test.NewState(
+ pubKeys, 250*time.Millisecond, &common.NullLogger{}, true),
+ core.ConfigRoundShift)
req.NoError(err)
// Setup nodes.
nodes, err := PrepareNodes(
@@ -92,7 +95,9 @@ func (s *WithSchedulerTestSuite) TestConfigurationChange() {
req.NoError(err)
// Setup governance.
gov, err := test.NewGovernance(
- pubKeys, 250*time.Millisecond, core.ConfigRoundShift)
+ test.NewState(
+ pubKeys, 250*time.Millisecond, &common.NullLogger{}, true),
+ core.ConfigRoundShift)
req.NoError(err)
// Change default round interval, expect 1 round produce 30 blocks.
gov.State().RequestChange(test.StateChangeRoundInterval, 15*time.Second)
diff --git a/simulation/node.go b/simulation/node.go
index 806a2be..bacf86a 100644
--- a/simulation/node.go
+++ b/simulation/node.go
@@ -88,7 +88,12 @@ func newNode(
// Sync config to state in governance.
cConfig := config.Node.Consensus
gov, err := test.NewGovernance(
- []crypto.PublicKey{pubKey}, time.Millisecond, core.ConfigRoundShift)
+ test.NewState(
+ []crypto.PublicKey{pubKey},
+ time.Millisecond,
+ &common.NullLogger{},
+ true),
+ core.ConfigRoundShift)
if err != nil {
panic(err)
}