public async Task BroadcastAnnounce_Test() { var blockHeader = _kernelTestHelper.GenerateBlock(10, Hash.FromString("test")).Header; //old block blockHeader.Time = TimestampHelper.GetUtcNow() - TimestampHelper.DurationFromMinutes(20); await _networkService.BroadcastAnnounceAsync(blockHeader, false); //known block blockHeader.Time = TimestampHelper.GetUtcNow(); await _networkService.BroadcastAnnounceAsync(blockHeader, false); //broadcast again blockHeader = _kernelTestHelper.GenerateBlock(11, Hash.FromString("new")).Header; await _networkService.BroadcastAnnounceAsync(blockHeader, false); }
public async Task BroadcastAnnouncementTest() { var blockHeader = OsCoreTestHelper.CreateFakeBlockHeader(chainId: 1, height: 2); await _networkService.BroadcastAnnounceAsync(blockHeader); foreach (var peer in _testContext.MockedPeers) { peer.Verify(p => p.TryAddKnownBlock(blockHeader.GetHash()), Times.Once()); } await _networkService.BroadcastAnnounceAsync(blockHeader); foreach (var peer in _testContext.MockedPeers) { peer.Verify(p => p.EnqueueAnnouncement(It.Is <BlockAnnouncement>(ba => ba.BlockHash == blockHeader.GetHash()), It.IsAny <Action <NetworkException> >()), Times.Once()); } }
public Task HandleEventAsync(BlockAcceptedEvent eventData) { if (_syncStateService.SyncState == SyncState.Finished) { // if sync is finished we announce the block _networkService.BroadcastAnnounceAsync(eventData.Block.Header); } else if (_syncStateService.SyncState == SyncState.Syncing) { // if syncing and the block is higher the current target, try and update. if (_syncStateService.GetCurrentSyncTarget() <= eventData.Block.Header.Height) { _taskQueueManager.Enqueue(async() => { await _syncStateService.UpdateSyncStateAsync(); }, OSConstants.InitialSyncQueueName); } } return(Task.CompletedTask); }
public async Task BroadcastAnnouncement_OldBlock_Test() { var blockHeader = OsCoreTestHelper.CreateFakeBlockHeader(chainId: 1, height: 2); blockHeader.Time = TimestampHelper.GetUtcNow() - TimestampHelper.DurationFromMinutes( NetworkConstants.DefaultMaxBlockAgeToBroadcastInMinutes + 1); await _networkService.BroadcastAnnounceAsync(blockHeader); foreach (var peer in _testContext.MockedPeers) { peer.Verify(p => p.TryAddKnownBlock(blockHeader.GetHash()), Times.Never); } foreach (var peer in _testContext.MockedPeers) { peer.Verify(p => p.EnqueueAnnouncement(It.Is <BlockAnnouncement>(ba => ba.BlockHash == blockHeader.GetHash()), It.IsAny <Action <NetworkException> >()), Times.Never); } }
public async Task BroadcastAnnounceAsync_OnePeerThrows_ShouldNotBlockOthers() { int successfulBcasts = await _networkService.BroadcastAnnounceAsync(new BlockHeader()); Assert.Equal(successfulBcasts, _peerPool.GetPeers().Count - 1); }