public async Task Can_borrow_many() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); var peer2 = new SimpleSyncPeerMock(TestItem.PublicKeyB); _pool.Start(); _pool.AddPeer(peer); _pool.AddPeer(peer2); await Task.Delay(200); var allocation1 = _pool.Borrow(); var allocation2 = _pool.Borrow(); Assert.AreNotSame(allocation1.Current, allocation2.Current, "first"); Assert.NotNull(allocation1.Current, "first A"); Assert.NotNull(allocation2.Current, "first B"); _pool.Free(allocation1); _pool.Free(allocation2); Assert.Null(allocation1.Current, "null A"); Assert.Null(allocation2.Current, "null B"); allocation1 = _pool.Borrow(); allocation2 = _pool.Borrow(); Assert.AreNotSame(allocation1.Current, allocation2.Current); Assert.NotNull(allocation1.Current, "second A"); Assert.NotNull(allocation2.Current, "second B"); }
public void Report_no_sync_progress_on_null_does_not_crash() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); _pool.Start(); _pool.AddPeer(peer); _pool.ReportNoSyncProgress(null); }
public void Can_return() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); _pool.Start(); _pool.AddPeer(peer); var allocation = _pool.Borrow(); _pool.Free(allocation); }
public void Does_not_fail_when_receiving_a_new_block_and_allocation_has_no_peer() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); _pool.Start(); _pool.AddPeer(peer); var allocation = _pool.Borrow(); allocation.Cancel(); _blockTree.NewHeadBlock += Raise.EventWith(new object(), new BlockEventArgs(Build.A.Block.WithTotalDifficulty(1).TestObject)); }
public async Task Can_borrow_peer() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); _pool.Start(); _pool.AddPeer(peer); await Task.Delay(200); var allocation = _pool.Borrow(); Assert.AreSame(peer, allocation.Current?.SyncPeer); }
public async Task Will_remove_peer_if_times_out_on_init() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); peer.SetHeaderResponseTime(int.MaxValue); _pool.Start(); _pool.AddPeer(peer); await WaitFor(() => peer.DisconnectRequested); Assert.True(peer.DisconnectRequested); }
public async Task Can_remove_borrowed_peer() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); _pool.Start(); _pool.AddPeer(peer); await Task.Delay(200); var allocation = _pool.Borrow(); _pool.RemovePeer(peer); Assert.Null(allocation.Current); }
public async Task Will_not_allocate_same_peer_to_two_allocations() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); _pool.Start(); _pool.AddPeer(peer); await Task.Delay(200); var allocation1 = _pool.Borrow(); var allocation2 = _pool.Borrow(); Assert.AreSame(peer, allocation1.Current?.SyncPeer); Assert.Null(allocation2.Current); }
public async Task Can_remove_during_init() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); peer.SetHeaderResponseTime(500); _pool.Start(); _pool.AddPeer(peer); var allocation = await _pool.BorrowAsync(BySpeedSelectionStrategy.Fastest); _pool.RemovePeer(peer); Assert.AreEqual(null, allocation.Current); Assert.AreEqual(0, _pool.PeerCount); }
public async Task Can_remove_during_init() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); peer.SetHeaderResponseTime(500); _pool.Start(); _pool.AddPeer(peer); var allocation = await _pool.Allocate(new BySpeedStrategy(TransferSpeedType.Headers, true)); _pool.RemovePeer(peer); Assert.AreEqual(null, allocation.Current); Assert.AreEqual(0, _pool.PeerCount); }
public void Can_find_sync_peers() { _pool.Start(); ISyncPeer[] syncPeers = new ISyncPeer[3]; for (int i = 0; i < 3; i++) { syncPeers[i] = new SimpleSyncPeerMock(TestItem.PublicKeys[i]); _pool.AddPeer(syncPeers[i]); } for (int i = 3; i > 0; i--) { Assert.True(_pool.TryFind(syncPeers[i - 1].Node.Id, out PeerInfo peerInfo)); Assert.NotNull(peerInfo); } }
public void Peer_count_is_valid_when_removing() { _pool.Start(); ISyncPeer[] syncPeers = new ISyncPeer[3]; for (int i = 0; i < 3; i++) { syncPeers[i] = new SimpleSyncPeerMock(TestItem.PublicKeys[i]); _pool.AddPeer(syncPeers[i]); } for (int i = 3; i > 0; i--) { Assert.AreEqual(i, _pool.PeerCount, $"Remove {i}"); _pool.RemovePeer(syncPeers[i - 1]); } }
public async Task Will_remove_peer_if_times_out_on_init() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); peer.SetHeaderResponseTime(20000); _pool.Start(); _pool.AddPeer(peer); await Task.Delay(12000); var allocation = _pool.Borrow(); Assert.AreEqual(null, allocation.Current); Assert.True(peer.DisconnectRequested); }
public async Task It_is_fine_to_fail_init() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); peer.SetHeaderFailure(true); _pool.Start(); _pool.AddPeer(peer); await WaitForPeersInitialization(); var allocation = await _pool.Allocate(new BySpeedStrategy(TransferSpeedType.Headers, true)); _pool.RemovePeer(peer); Assert.AreEqual(null, allocation.Current); Assert.AreEqual(0, _pool.PeerCount); }
public async Task Peer_count_is_valid_when_removing() { await using Context ctx = new Context(); ctx.Pool.Start(); ISyncPeer[] syncPeers = new ISyncPeer[3]; for (int i = 0; i < 3; i++) { syncPeers[i] = new SimpleSyncPeerMock(TestItem.PublicKeys[i]); ctx.Pool.AddPeer(syncPeers[i]); } for (int i = 3; i > 0; i--) { Assert.AreEqual(i, ctx.Pool.PeerCount, $"Remove {i}"); ctx.Pool.RemovePeer(syncPeers[i - 1]); } }
public async Task Can_remove_during_init() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); peer.SetHeaderResponseTime(1000); _pool.Start(); _pool.AddPeer(peer); await Task.Delay(200); var allocation = _pool.Borrow(); _pool.RemovePeer(peer); await Task.Delay(1000); Assert.AreEqual(null, allocation.Current); Assert.AreEqual(0, _pool.PeerCount); }
public async Task Cannot_remove_when_stopped() { _pool.Start(); ISyncPeer[] syncPeers = new ISyncPeer[3]; for (int i = 0; i < 3; i++) { syncPeers[i] = new SimpleSyncPeerMock(TestItem.PublicKeys[i]); _pool.AddPeer(syncPeers[i]); } await _pool.StopAsync(); for (int i = 3; i > 0; i--) { Assert.AreEqual(3, _pool.PeerCount, $"Remove {i}"); _pool.RemovePeer(syncPeers[i - 1]); } }
public async Task It_is_fine_to_fail_init() { var peer = new SimpleSyncPeerMock(TestItem.PublicKeyA); peer.SetHeaderFailure(true); _pool.Start(); _pool.AddPeer(peer); await Task.Delay(200); var allocation = _pool.Borrow(); _pool.RemovePeer(peer); await Task.Delay(1000); Assert.AreEqual(null, allocation.Current); Assert.AreEqual(0, _pool.PeerCount); }
private async Task <SimpleSyncPeerMock[]> SetupPeers(int count) { var peers = new SimpleSyncPeerMock[count]; for (int i = 0; i < count; i++) { peers[i] = new SimpleSyncPeerMock(TestItem.PublicKeys[i]); } _pool.Start(); for (int i = 0; i < count; i++) { _pool.AddPeer(peers[i]); } await WaitForPeersInitialization(); return(peers); }