aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2018-10-01 15:18:03 +0800
committerGitHub <noreply@github.com>2018-10-01 15:18:03 +0800
commitb93f2fd48fffa225e5bd282a4a78aec2df6cb1a3 (patch)
tree2830209733748f97e7ced7ed8ff524999f08b381 /core
parente223a62e70a0a874fcf85e4b9c010741414f100e (diff)
downloaddexon-consensus-b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3.tar
dexon-consensus-b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3.tar.gz
dexon-consensus-b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3.tar.bz2
dexon-consensus-b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3.tar.lz
dexon-consensus-b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3.tar.xz
dexon-consensus-b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3.tar.zst
dexon-consensus-b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3.zip
test: Non-qualified node are accepted in test. (#154)
Diffstat (limited to 'core')
-rw-r--r--core/configuration-chain.go2
-rw-r--r--core/configuration-chain_test.go27
-rw-r--r--core/dkg-tsig-protocol.go6
-rw-r--r--core/dkg-tsig-protocol_test.go2
4 files changed, 25 insertions, 12 deletions
diff --git a/core/configuration-chain.go b/core/configuration-chain.go
index 0a4008d..d179b61 100644
--- a/core/configuration-chain.go
+++ b/core/configuration-chain.go
@@ -133,7 +133,7 @@ func (cc *configurationChain) runDKG(round uint64) error {
return err
}
qualifies := ""
- for _, nID := range gpk.qualifyNodeIDs {
+ for nID := range gpk.qualifyNodeIDs {
qualifies += fmt.Sprintf("%s ", nID.String()[:6])
}
log.Printf("[%s] Qualify Nodes(%d): %s\n",
diff --git a/core/configuration-chain_test.go b/core/configuration-chain_test.go
index c50b403..a9615ec 100644
--- a/core/configuration-chain_test.go
+++ b/core/configuration-chain_test.go
@@ -155,7 +155,7 @@ func (s *ConfigurationChainTestSuite) TestConfigurationChain() {
recv := newTestCCReceiver(s)
for _, nID := range s.nIDs {
- gov, err := test.NewGovernance(0, 200*time.Millisecond)
+ gov, err := test.NewGovernance(0, 50*time.Millisecond)
s.Require().NoError(err)
cfgChains[nID] = newConfigurationChain(nID, recv, gov)
recv.nodes[nID] = cfgChains[nID]
@@ -170,19 +170,26 @@ func (s *ConfigurationChainTestSuite) TestConfigurationChain() {
s.Require().Len(gov.DKGMasterPublicKeys(round), n)
}
+ errs := make(chan error, n)
wg := sync.WaitGroup{}
wg.Add(n)
for _, cc := range cfgChains {
go func(cc *configurationChain) {
defer wg.Done()
- s.Require().NoError(cc.runDKG(round))
+ errs <- cc.runDKG(round)
}(cc)
}
wg.Wait()
+ for range cfgChains {
+ s.Require().NoError(<-errs)
+ }
psigs := make([]*types.DKGPartialSignature, 0, n)
hash := crypto.Keccak256Hash([]byte("🌚🌝"))
- for _, cc := range cfgChains {
+ for nID, cc := range cfgChains {
+ if _, exist := cc.gpk[round].qualifyNodeIDs[nID]; !exist {
+ continue
+ }
psig, err := cc.preparePartialSignature(round, hash)
s.Require().NoError(err)
prvKey, exist := s.prvKeys[cc.ID]
@@ -193,12 +200,15 @@ func (s *ConfigurationChainTestSuite) TestConfigurationChain() {
}
tsigs := make([]crypto.Signature, 0, n)
- errs := make(chan error, n)
+ errs = make(chan error, n)
tsigChan := make(chan crypto.Signature, n)
- for _, cc := range cfgChains {
+ for nID, cc := range cfgChains {
+ if _, exist := cc.gpk[round].qualifyNodeIDs[nID]; !exist {
+ continue
+ }
go func(cc *configurationChain) {
tsig, err := cc.runBlockTSig(round, hash)
- // Prevent racing by collecting errors and check ing main thread.
+ // Prevent racing by collecting errors and check in main thread.
errs <- err
tsigChan <- tsig
}(cc)
@@ -207,7 +217,10 @@ func (s *ConfigurationChainTestSuite) TestConfigurationChain() {
s.Require().NoError(err)
}
}
- for range cfgChains {
+ for nID, cc := range cfgChains {
+ if _, exist := cc.gpk[round].qualifyNodeIDs[nID]; !exist {
+ continue
+ }
s.Require().NoError(<-errs)
tsig := <-tsigChan
for _, prevTsig := range tsigs {
diff --git a/core/dkg-tsig-protocol.go b/core/dkg-tsig-protocol.go
index fd89b09..2bdb4e9 100644
--- a/core/dkg-tsig-protocol.go
+++ b/core/dkg-tsig-protocol.go
@@ -84,7 +84,7 @@ type dkgShareSecret struct {
type dkgGroupPublicKey struct {
round uint64
qualifyIDs dkg.IDs
- qualifyNodeIDs types.NodeIDs
+ qualifyNodeIDs map[types.NodeID]struct{}
idMap map[types.NodeID]dkg.ID
publicKeys map[types.NodeID]*dkg.PublicKey
groupPublicKey *dkg.PublicKey
@@ -332,7 +332,7 @@ func newDKGGroupPublicKey(
}
}
qualifyIDs := make(dkg.IDs, 0, len(mpks)-len(disqualifyIDs))
- qualifyNodeIDs := make(types.NodeIDs, 0, cap(qualifyIDs))
+ qualifyNodeIDs := make(map[types.NodeID]struct{})
mpkMap := make(map[dkg.ID]*types.DKGMasterPublicKey, cap(qualifyIDs))
idMap := make(map[types.NodeID]dkg.ID)
for _, mpk := range mpks {
@@ -342,7 +342,7 @@ func newDKGGroupPublicKey(
mpkMap[mpk.DKGID] = mpk
idMap[mpk.ProposerID] = mpk.DKGID
qualifyIDs = append(qualifyIDs, mpk.DKGID)
- qualifyNodeIDs = append(qualifyNodeIDs, mpk.ProposerID)
+ qualifyNodeIDs[mpk.ProposerID] = struct{}{}
}
// Recover qualify members' public key.
pubKeys := make(map[types.NodeID]*dkg.PublicKey, len(qualifyIDs))
diff --git a/core/dkg-tsig-protocol_test.go b/core/dkg-tsig-protocol_test.go
index 967e07e..6273e53 100644
--- a/core/dkg-tsig-protocol_test.go
+++ b/core/dkg-tsig-protocol_test.go
@@ -192,7 +192,7 @@ func (s *DKGTSIGProtocolTestSuite) TestDKGTSIGProtocol() {
qualifyIDs[id] = struct{}{}
}
- for _, nID := range gpk.qualifyNodeIDs {
+ for nID := range gpk.qualifyNodeIDs {
id, exist := gpk.idMap[nID]
s.Require().True(exist)
_, exist = qualifyIDs[id]