public void Can_stop() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(SyncBatchSize.Max, 0, 0); When.Syncing .Stop(); }
public void Can_reorg_on_hint_block_message() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(3); SyncPeerMock peerB = new SyncPeerMock("B"); peerB.AddBlocksUpTo(3); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .AfterPeerIsAdded(peerB) .Wait() .After(() => peerB.AddBlocksUpTo(6)) .AfterHintBlockMessage(peerB.HeadBlock, peerB) .BestSuggestedHeaderIs(peerB.HeadHeader).Stop(); }
public void Can_sync_more_than_a_batch() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(SyncBatchSize.Max * 3, 0, 0); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .BestSuggestedHeaderIs(peerA.HeadHeader).Stop(); }
public void Can_sync_with_one_peer_straight_and_extend_chain() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(3); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .BestSuggestedHeaderIs(peerA.HeadHeader).Stop(); }
public void Will_remove_peer_when_init_fails() { SyncPeerMock peerA = new SyncPeerMock("A", true, true); peerA.AddBlocksUpTo(1); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .WaitAMoment() .PeerCountIs(0).Stop(); }
public void Can_sync_exactly_one_batch() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(SyncBatchSize.Max, 0, 0); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .Wait(2000) .BestSuggested.HeaderIs(peerA.HeadHeader) .Stop(); }
public void Will_not_add_same_peer_twice() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(1); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .AfterPeerIsAdded(peerA) .WaitUntilInitialized() .PeerCountIs(1) .BestSuggestedBlockHasNumber(1).Stop(); }
public void Will_not_reorganize_more_than_max_reorg_length() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(BlockDownloader.MaxReorganizationLength + 1, 0, 0); SyncPeerMock peerB = new SyncPeerMock("B"); peerB.AddBlocksUpTo(BlockDownloader.MaxReorganizationLength + 2, 0, 1); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .BestSuggestedHeaderIs(peerA.HeadHeader) .AfterPeerIsAdded(peerB) .BestSuggestedHeaderIs(peerA.HeadHeader).Stop(); }
public void Will_not_reorganize_on_same_chain_length() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(10, 0, 0); SyncPeerMock peerB = new SyncPeerMock("B"); peerB.AddBlocksUpTo(10, 0, 1); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .BestSuggestedHeaderIs(peerA.HeadHeader) .AfterPeerIsAdded(peerB) .BestSuggestedHeaderIs(peerA.HeadHeader).Stop(); }
public void Can_reorg_based_on_total_difficulty() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(10, 0, 0); SyncPeerMock peerB = new SyncPeerMock("B"); peerB.AddHighDifficultyBlocksUpTo(6, 0, 1); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .BestSuggestedHeaderIs(peerA.HeadHeader) .AfterPeerIsAdded(peerB) .BestSuggestedHeaderIs(peerB.HeadHeader).Stop(); }
public void Can_reorg_on_add_peer() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(SyncBatchSize.Max, 0, 0); SyncPeerMock peerB = new SyncPeerMock("B"); peerB.AddBlocksUpTo(SyncBatchSize.Max * 2, 0, 1); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .BestSuggestedHeaderIs(peerA.HeadHeader) .AfterPeerIsAdded(peerB) .BestSuggestedHeaderIs(peerB.HeadHeader).Stop(); }
public void Can_sync_when_best_peer_is_timing_out() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(1); SyncPeerMock badPeer = new SyncPeerMock("B", false, false, true); badPeer.AddBlocksUpTo(20); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(badPeer) .WaitUntilInitialized() .AfterPeerIsAdded(peerA) .BestSuggestedBlockHasNumber(1).Stop(); }
public void Can_extend_chain_on_hint_block_when_high_difficulty_low_number() { SyncPeerMock peerA = new SyncPeerMock("A"); peerA.AddBlocksUpTo(10, 0, 0); SyncPeerMock peerB = new SyncPeerMock("B"); peerB.AddHighDifficultyBlocksUpTo(5, 0, 1); When.Syncing .AfterProcessingGenesis() .AfterPeerIsAdded(peerA) .Wait() .AfterPeerIsAdded(peerB) .Wait() .After(() => peerB.AddHighDifficultyBlocksUpTo(6, 0, 1)) .AfterHintBlockMessage(peerB.HeadBlock, peerB) .BestSuggestedHeaderIs(peerB.HeadHeader).Stop(); }