public async Task TestBlockProducer_IsProducingBlocks_returns_expected_results() { TestRpcBlockchain testRpc = await CreateTestRpc(); TestBlockProducer blockProducer = new TestBlockProducer( Substitute.For <ITxSource>(), testRpc.BlockchainProcessor, testRpc.State, Substitute.For <ISealer>(), testRpc.BlockTree, Substitute.For <IBlockProcessingQueue>(), testRpc.Timestamper, LimboLogs.Instance); await AssertIsProducingBlocks(blockProducer); }
public async Task Tree_tracker_reorganization([ValueSource(nameof(ReorganizationTestCases))] ReorganizedInsertLeafTest test) { Address address = TestItem.Addresses[0]; (TestRpcBlockchain TestRpc, BaselineModule BaselineModule)result = await InitializeTestRpc(address); TestRpcBlockchain testRpc = result.TestRpc; BaselineTree baselineTree = BuildATree(); Address contractAddress = ContractAddress.From(address, 0L); BaselineTreeHelper baselineTreeHelper = new (testRpc.LogFinder, _baselineDb, _metadataBaselineDb, LimboNoErrorLogger.Instance); _ = new BaselineTreeTracker(contractAddress, baselineTree, testRpc.BlockProcessor, baselineTreeHelper, testRpc.BlockFinder, LimboNoErrorLogger.Instance); MerkleTreeSHAContract contract = new (_abiEncoder, contractAddress); for (int i = 0; i < test.LeavesInBlocksCounts.Length; i++) { InsertLeafFromArray(test.LeavesInTransactionsAndBlocks[i], testRpc, contract, address); await testRpc.AddBlock(); Assert.AreEqual(test.LeavesInBlocksCounts[i], baselineTree.Count); } int initBlocksCount = 4; int allBlocksCount = initBlocksCount + test.LeavesInBlocksCounts.Length; TestBlockProducer testRpcBlockProducer = (TestBlockProducer)testRpc.BlockProducer; Block lastProducedBlock = null; testRpcBlockProducer.BlockProduced += (o, e) => lastProducedBlock = e.Block; testRpcBlockProducer.BlockParent = testRpc.BlockTree.FindHeader(allBlocksCount); InsertLeafFromArray(test.LeavesInMiddleOfReorganization, testRpc, contract, address); await testRpc.AddBlock(false); testRpcBlockProducer.BlockParent = lastProducedBlock.Header; InsertLeafFromArray(test.LeavesInAfterReorganization, testRpc, contract, address); await testRpc.AddBlock(); Assert.AreEqual(test.FinalLeavesCount, baselineTree.Count); }