From ceb7cda983f5115285ae5dc6a25739b5d4b4548e Mon Sep 17 00:00:00 2001 From: stasatdaglabs Date: Fri, 29 Jan 2021 11:50:12 +0200 Subject: [PATCH] Implement TestPickVirtualParents. --- .../pick_virtual_parents_test.go | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 domain/consensus/processes/consensusstatemanager/pick_virtual_parents_test.go diff --git a/domain/consensus/processes/consensusstatemanager/pick_virtual_parents_test.go b/domain/consensus/processes/consensusstatemanager/pick_virtual_parents_test.go new file mode 100644 index 000000000..d32d455d8 --- /dev/null +++ b/domain/consensus/processes/consensusstatemanager/pick_virtual_parents_test.go @@ -0,0 +1,49 @@ +package consensusstatemanager_test + +import ( + "github.com/kaspanet/kaspad/domain/consensus" + "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" + "github.com/kaspanet/kaspad/domain/consensus/utils/consensushashing" + "github.com/kaspanet/kaspad/domain/dagconfig" + "testing" + "time" +) + +func TestPickVirtualParents(t *testing.T) { + params := dagconfig.DevnetParams + params.SkipProofOfWork = true + + factory := consensus.NewFactory() + testConsensus, teardown, err := factory.NewTestConsensus(¶ms, false, "TestPickVirtualParents") + if err != nil { + t.Fatalf("Error setting up consensus: %+v", err) + } + defer teardown(false) + + // Build three chains over the genesis + for chainIndex := 0; chainIndex < 3; chainIndex++ { + const chainSize = 1000 + accumulatedValidationTime := time.Duration(0) + + tipHash := params.GenesisHash + for blockIndex := 0; blockIndex < chainSize; blockIndex++ { + block, _, err := testConsensus.BuildBlockWithParents([]*externalapi.DomainHash{tipHash}, nil, nil) + if err != nil { + t.Fatalf("Could not build block with the genesis block as its only parent: %s", err) + } + blockHash := consensushashing.BlockHash(block) + start := time.Now() + _, err = testConsensus.ValidateAndInsertBlock(block) + if err != nil { + t.Fatalf("Failed to validate block %s: %s", blockHash, err) + } + validationTime := time.Since(start) + accumulatedValidationTime += validationTime + t.Logf("Validated block #%d in chain #%d, took %s", blockIndex, chainIndex, validationTime) + tipHash = blockHash + } + + averageValidationTime := accumulatedValidationTime / 1000 + t.Logf("Average validation time for chain #%d: %s", chainIndex, averageValidationTime) + } +}