diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-10-01 15:18:03 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-01 15:18:03 +0800 |
commit | b93f2fd48fffa225e5bd282a4a78aec2df6cb1a3 (patch) | |
tree | 2830209733748f97e7ced7ed8ff524999f08b381 | |
parent | e223a62e70a0a874fcf85e4b9c010741414f100e (diff) | |
download | dexon-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)
-rw-r--r-- | core/configuration-chain.go | 2 | ||||
-rw-r--r-- | core/configuration-chain_test.go | 27 | ||||
-rw-r--r-- | core/dkg-tsig-protocol.go | 6 | ||||
-rw-r--r-- | core/dkg-tsig-protocol_test.go | 2 |
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] |