mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-26 08:26:20 +00:00
* clean up the pool old round * add unit test to cover the vote key format * add gapNumber to the vote pool key * fix race condition in pool * remove verify gap number in vote handler
75 lines
2.1 KiB
Go
75 lines
2.1 KiB
Go
package engine_v2
|
|
|
|
import (
|
|
"github.com/XinFinOrg/XDPoSChain/consensus"
|
|
"github.com/XinFinOrg/XDPoSChain/consensus/XDPoS/utils"
|
|
)
|
|
|
|
/*
|
|
Testing tools
|
|
*/
|
|
|
|
func (x *XDPoS_v2) SetNewRoundFaker(blockChainReader consensus.ChainReader, newRound utils.Round, resetTimer bool) {
|
|
x.lock.Lock()
|
|
defer x.lock.Unlock()
|
|
// Reset a bunch of things
|
|
if resetTimer {
|
|
x.timeoutWorker.Reset(blockChainReader)
|
|
}
|
|
x.currentRound = newRound
|
|
}
|
|
|
|
// for test only
|
|
func (x *XDPoS_v2) ProcessQCFaker(chain consensus.ChainReader, qc *utils.QuorumCert) error {
|
|
x.lock.Lock()
|
|
defer x.lock.Unlock()
|
|
return x.processQC(chain, qc)
|
|
}
|
|
|
|
// Utils for test to check currentRound value
|
|
func (x *XDPoS_v2) GetCurrentRoundFaker() utils.Round {
|
|
x.lock.RLock()
|
|
defer x.lock.RUnlock()
|
|
return x.currentRound
|
|
}
|
|
|
|
// Utils for test to get current Pool size
|
|
func (x *XDPoS_v2) GetVotePoolSizeFaker(vote *utils.Vote) int {
|
|
return x.votePool.Size(vote)
|
|
}
|
|
|
|
// Utils for test to get Timeout Pool Size
|
|
func (x *XDPoS_v2) GetTimeoutPoolSizeFaker(timeout *utils.Timeout) int {
|
|
return x.timeoutPool.Size(timeout)
|
|
}
|
|
|
|
// WARN: This function is designed for testing purpose only!
|
|
// Utils for test to check currentRound values
|
|
func (x *XDPoS_v2) GetPropertiesFaker() (utils.Round, *utils.QuorumCert, *utils.QuorumCert, *utils.TimeoutCert, utils.Round, *utils.BlockInfo) {
|
|
x.lock.RLock()
|
|
defer x.lock.RUnlock()
|
|
return x.currentRound, x.lockQuorumCert, x.highestQuorumCert, x.highestTimeoutCert, x.highestVotedRound, x.highestCommitBlock
|
|
}
|
|
|
|
// WARN: This function is designed for testing purpose only!
|
|
// Utils for tests to set engine specific values
|
|
func (x *XDPoS_v2) SetPropertiesFaker(highestQC *utils.QuorumCert, highestTC *utils.TimeoutCert) {
|
|
x.highestQuorumCert = highestQC
|
|
x.highestTimeoutCert = highestTC
|
|
}
|
|
|
|
func (x *XDPoS_v2) HygieneVotePoolFaker() {
|
|
x.hygieneVotePool()
|
|
}
|
|
|
|
func (x *XDPoS_v2) GetVotePoolKeyListFaker() []string {
|
|
return x.votePool.PoolObjKeysList()
|
|
}
|
|
|
|
func (x *XDPoS_v2) HygieneTimeoutPoolFaker() {
|
|
x.hygieneTimeoutPool()
|
|
}
|
|
|
|
func (x *XDPoS_v2) GetTimeoutPoolKeyListFaker() []string {
|
|
return x.timeoutPool.PoolObjKeysList()
|
|
}
|