mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00
Support resolveBlockStatus without separate stagingAreas for usage of testConsensus (#1666)
This commit is contained in:
parent
d2cccd2829
commit
347dd8fc4b
@ -10,5 +10,6 @@ type TestConsensusStateManager interface {
|
||||
model.ConsensusStateManager
|
||||
AddUTXOToMultiset(multiset model.Multiset, entry externalapi.UTXOEntry,
|
||||
outpoint *externalapi.DomainOutpoint) error
|
||||
ResolveBlockStatus(stagingArea *model.StagingArea, blockHash *externalapi.DomainHash) (externalapi.BlockStatus, error)
|
||||
ResolveBlockStatus(stagingArea *model.StagingArea, blockHash *externalapi.DomainHash,
|
||||
useSeparateStagingAreasPerBlock bool) (externalapi.BlockStatus, error)
|
||||
}
|
||||
|
@ -143,7 +143,8 @@ func (bb *testBlockBuilder) buildBlockWithParents(stagingArea *model.StagingArea
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
selectedParentStatus, err := bb.testConsensus.ConsensusStateManager().ResolveBlockStatus(stagingArea, ghostdagData.SelectedParent())
|
||||
selectedParentStatus, err := bb.testConsensus.ConsensusStateManager().ResolveBlockStatus(
|
||||
stagingArea, ghostdagData.SelectedParent(), false)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ func (csm *consensusStateManager) AddBlock(stagingArea *model.StagingArea, block
|
||||
|
||||
if !isViolatingFinality {
|
||||
log.Debugf("Block %s doesn't violate finality. Resolving its block status", blockHash)
|
||||
blockStatus, err := csm.resolveBlockStatus(stagingArea, blockHash)
|
||||
blockStatus, err := csm.resolveBlockStatus(stagingArea, blockHash, true)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
@ -282,7 +282,7 @@ func (csm *consensusStateManager) RestorePastUTXOSetIterator(stagingArea *model.
|
||||
onEnd := logger.LogAndMeasureExecutionTime(log, "RestorePastUTXOSetIterator")
|
||||
defer onEnd()
|
||||
|
||||
blockStatus, err := csm.resolveBlockStatus(stagingArea, blockHash)
|
||||
blockStatus, err := csm.resolveBlockStatus(stagingArea, blockHash, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -12,8 +12,8 @@ import (
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func (csm *consensusStateManager) resolveBlockStatus(
|
||||
stagingArea *model.StagingArea, blockHash *externalapi.DomainHash) (externalapi.BlockStatus, error) {
|
||||
func (csm *consensusStateManager) resolveBlockStatus(stagingArea *model.StagingArea, blockHash *externalapi.DomainHash,
|
||||
useSeparateStagingAreasPerBlock bool) (externalapi.BlockStatus, error) {
|
||||
|
||||
onEnd := logger.LogAndMeasureExecutionTime(log, fmt.Sprintf("resolveBlockStatus for %s", blockHash))
|
||||
defer onEnd()
|
||||
@ -53,8 +53,8 @@ func (csm *consensusStateManager) resolveBlockStatus(
|
||||
unverifiedBlockHash := unverifiedBlocks[i]
|
||||
|
||||
stagingAreaForCurrentBlock := stagingArea
|
||||
isCurrentBlockTopBlock := i == 0
|
||||
if !isCurrentBlockTopBlock {
|
||||
useSeparateStagingArea := useSeparateStagingAreasPerBlock && (i != 0)
|
||||
if useSeparateStagingArea {
|
||||
stagingAreaForCurrentBlock = model.NewStagingArea()
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ func (csm *consensusStateManager) resolveBlockStatus(
|
||||
log.Debugf("Block %s status resolved to `%s`, finished %d/%d of unverified blocks",
|
||||
unverifiedBlockHash, blockStatus, len(unverifiedBlocks)-i, len(unverifiedBlocks))
|
||||
|
||||
if !isCurrentBlockTopBlock {
|
||||
if useSeparateStagingArea {
|
||||
err := staging.CommitAllChanges(csm.databaseContext, stagingAreaForCurrentBlock)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
|
@ -147,7 +147,8 @@ func TestDoubleSpends(t *testing.T) {
|
||||
t.Fatalf("Error adding goodBlock: %+v", err)
|
||||
}
|
||||
//use ResolveBlockStatus, since goodBlock2 might not be the selectedTip
|
||||
goodBlock2Status, err := consensus.ConsensusStateManager().ResolveBlockStatus(stagingArea, goodBlock2Hash)
|
||||
goodBlock2Status, err := consensus.ConsensusStateManager().ResolveBlockStatus(
|
||||
stagingArea, goodBlock2Hash, true)
|
||||
if err != nil {
|
||||
t.Fatalf("Error getting status of goodBlock: %+v", err)
|
||||
}
|
||||
|
@ -21,8 +21,8 @@ func (csm *testConsensusStateManager) AddUTXOToMultiset(
|
||||
return addUTXOToMultiset(multiset, entry, outpoint)
|
||||
}
|
||||
|
||||
func (csm *testConsensusStateManager) ResolveBlockStatus(stagingArea *model.StagingArea,
|
||||
blockHash *externalapi.DomainHash) (externalapi.BlockStatus, error) {
|
||||
func (csm *testConsensusStateManager) ResolveBlockStatus(stagingArea *model.StagingArea, blockHash *externalapi.DomainHash,
|
||||
useSeparateStagingAreasPerBlock bool) (externalapi.BlockStatus, error) {
|
||||
|
||||
return csm.resolveBlockStatus(stagingArea, blockHash)
|
||||
return csm.resolveBlockStatus(stagingArea, blockHash, useSeparateStagingAreasPerBlock)
|
||||
}
|
||||
|
@ -21,6 +21,8 @@ type testConsensus struct {
|
||||
testReachabilityManager testapi.TestReachabilityManager
|
||||
testConsensusStateManager testapi.TestConsensusStateManager
|
||||
testTransactionValidator testapi.TestTransactionValidator
|
||||
|
||||
buildBlockConsensus *consensus
|
||||
}
|
||||
|
||||
func (tc *testConsensus) DAGParams() *dagconfig.Params {
|
||||
|
Loading…
x
Reference in New Issue
Block a user