public async Task HandleEvent_Test() { var eventData = new PeerConnectedEventData ( new NodeInfo { Endpoint = "127.0.0.1:1234", Pubkey = ByteString.CopyFromUtf8("Pubkey") }, HashHelper.ComputeFrom("BestChainHash"), 100 ); AnnouncementReceivedEventData announcementEventData = null; _eventBus.Subscribe <AnnouncementReceivedEventData>(d => { announcementEventData = d; return(Task.CompletedTask); }); await _peerConnectedEventHandler.HandleEventAsync(eventData); var nodes = await _peerDiscoveryService.GetNodesAsync(1); nodes.Nodes[0].ShouldBe(eventData.NodeInfo); announcementEventData.ShouldNotBeNull(); announcementEventData.Announce.BlockHash.ShouldBe(eventData.BestChainHash); announcementEventData.Announce.BlockHeight.ShouldBe(eventData.BestChainHeight); announcementEventData.SenderPubKey.ShouldBe(eventData.NodeInfo.Pubkey.ToHex()); }
public async Task Announce_ShouldPublishEvent_Test() { AnnouncementReceivedEventData received = null; _eventBus.Subscribe <AnnouncementReceivedEventData>(a => { received = a; return(Task.CompletedTask); }); await _serverService.SendAnnouncement(null, BuildServerCallContext()); Assert.Null(received); var pubkey = _peerPool.GetPeers(true).First().Info.Pubkey; var metadata = new Metadata { { GrpcConstants.PubkeyMetadataKey, pubkey } }; Hash hash = Hash.FromRawBytes(new byte[] { 3, 6, 9 }); await _serverService.SendAnnouncement(new BlockAnnouncement { BlockHeight = 10, BlockHash = hash }, BuildServerCallContext(metadata)); Assert.NotNull(received); Assert.Equal(10, received.Announce.BlockHeight); Assert.Equal(received.Announce.BlockHash, hash); }
public async Task HandleAnnounceReceiveEventAsync_IrreversibleBlockIndex_IsNull() { var an = new BlockAnnouncement(); var sendKey = string.Empty; var announcementData = new AnnouncementReceivedEventData(an, sendKey); await _dpoSAnnouncementReceivedEventDataHandler.HandleEventAsync(announcementData); }
public async Task HandleAnnounceReceiveEventAsync_IrreversibleBlockIndex_SureAmountEnough() { var block = await GenerateNewBlockAndAnnouncementToPeers(3); var an = new BlockAnnouncement { BlockHash = block.GetHash(), BlockHeight = block.Height }; var sendKey = CryptoHelper.GenerateKeyPair().PublicKey.ToHex(); var announcementData = new AnnouncementReceivedEventData(an, sendKey); await _dpoSAnnouncementReceivedEventDataHandler.HandleEventAsync(announcementData); }
public async Task HandleEventAsync(PeerConnectedEventData eventData) { Logger.LogDebug($"Peer connection event {eventData.NodeInfo}"); await _peerDiscoveryService.AddNodeAsync(eventData.NodeInfo); var blockAnnouncement = new BlockAnnouncement { BlockHash = eventData.BestChainHash, BlockHeight = eventData.BestChainHeight }; var announcement = new AnnouncementReceivedEventData(blockAnnouncement, eventData.NodeInfo.Pubkey.ToHex()); await LocalEventBus.PublishAsync(announcement); }
public async Task Announce_ShouldPublishEvent() { AnnouncementReceivedEventData received = null; _eventBus.Subscribe <AnnouncementReceivedEventData>(a => { received = a; return(Task.CompletedTask); }); Hash hash = Hash.FromRawBytes(new byte[] { 3, 6, 9 }); await _service.SendAnnouncement(new BlockAnnouncement { BlockHeight = 10, BlockHash = hash }, BuildServerCallContext()); Assert.NotNull(received); Assert.Equal(10, received.Announce.BlockHeight); Assert.Equal(received.Announce.BlockHash, hash); }
public async Task Announce_ShouldPublishEvent() { AnnouncementReceivedEventData received = null; _eventBus.Subscribe <AnnouncementReceivedEventData>(a => { received = a; return(Task.CompletedTask); }); Hash hash = Hash.Generate(); await _service.Announce(new PeerNewBlockAnnouncement { BlockHeight = 10, BlockHash = hash, BlockTime = DateTime.UtcNow.ToTimestamp() }, BuildServerCallContext()); Assert.NotNull(received); Assert.Equal(10, received.Announce.BlockHeight); Assert.Equal(received.Announce.BlockHash, hash); }
public async Task AnnounceAsync_Success() { AnnouncementReceivedEventData received = null; _eventBus.Subscribe <AnnouncementReceivedEventData>(a => { received = a; return(Task.CompletedTask); }); var header = new BlockAnnouncement { BlockHeight = 100, BlockHash = Hash.FromRawBytes(new byte[] { 9, 2 }) }; await _grpcPeer.SendAnnouncementAsync(header); received.ShouldNotBeNull(); received.Announce.BlockHeight.ShouldBe(100); }
public async Task AnnounceAsync_Success() { AnnouncementReceivedEventData received = null; _eventBus.Subscribe <AnnouncementReceivedEventData>(a => { received = a; return(Task.CompletedTask); }); var header = new PeerNewBlockAnnouncement { BlockHeight = 100, BlockHash = Hash.Generate(), BlockTime = DateTime.UtcNow.ToTimestamp() }; await _grpcPeer.AnnounceAsync(header); received.ShouldNotBeNull(); received.Announce.BlockHeight.ShouldBe(100); }