public async Task Can_prepare_3_requests_in_a_row() { MemDbProvider memDbProvider = new MemDbProvider(); BlockTree blockTree = new BlockTree(memDbProvider.BlocksDb, memDbProvider.HeadersDb, memDbProvider.BlockInfosDb, new ChainLevelInfoRepository(memDbProvider.BlockInfosDb), MainnetSpecProvider.Instance, NullTxPool.Instance, NullBloomStorage.Instance, LimboLogs.Instance); HeadersSyncFeed feed = new HeadersSyncFeed(blockTree, Substitute.For <ISyncPeerPool>(), new SyncConfig { FastSync = true, FastBlocks = true, PivotNumber = "1000", PivotHash = Keccak.Zero.ToString(), PivotTotalDifficulty = "1000" }, Substitute.For <ISyncReport>(), LimboLogs.Instance); HeadersSyncBatch batch1 = await feed.PrepareRequest(); HeadersSyncBatch batch2 = await feed.PrepareRequest(); HeadersSyncBatch batch3 = await feed.PrepareRequest(); }
public async Task Can_keep_returning_nulls_after_all_batches_were_prepared() { MemDbProvider memDbProvider = new MemDbProvider(); BlockTree blockTree = new BlockTree(memDbProvider.BlocksDb, memDbProvider.HeadersDb, memDbProvider.BlockInfosDb, new ChainLevelInfoRepository(memDbProvider.BlockInfosDb), MainnetSpecProvider.Instance, NullTxPool.Instance, NullBloomStorage.Instance, LimboLogs.Instance); HeadersSyncFeed feed = new HeadersSyncFeed(blockTree, Substitute.For <ISyncPeerPool>(), new SyncConfig { FastSync = true, FastBlocks = true, PivotNumber = "1000", PivotHash = Keccak.Zero.ToString(), PivotTotalDifficulty = "1000" }, Substitute.For <ISyncReport>(), LimboLogs.Instance); for (int i = 0; i < 10; i++) { await feed.PrepareRequest(); } var result = await feed.PrepareRequest(); result.Should().BeNull(); }
public async Task Finishes_when_all_downloaded() { IBlockTree blockTree = Substitute.For <IBlockTree>(); blockTree.LowestInsertedHeader.Returns(Build.A.BlockHeader.WithNumber(1000).TestObject); ISyncReport report = Substitute.For <ISyncReport>(); report.HeadersInQueue.Returns(new MeasuredProgress()); MeasuredProgress measuredProgress = new MeasuredProgress(); report.FastBlocksHeaders.Returns(measuredProgress); HeadersSyncFeed feed = new HeadersSyncFeed(blockTree, Substitute.For <ISyncPeerPool>(), new SyncConfig { FastSync = true, FastBlocks = true, PivotNumber = "1000", PivotHash = Keccak.Zero.ToString(), PivotTotalDifficulty = "1000" }, report, LimboLogs.Instance); await feed.PrepareRequest(); blockTree.LowestInsertedHeader.Returns(Build.A.BlockHeader.WithNumber(1).TestObject); var result = await feed.PrepareRequest(); result.Should().BeNull(); feed.CurrentState.Should().Be(SyncFeedState.Finished); measuredProgress.HasEnded.Should().BeTrue(); }