public void CheckHealth_returns_expected_results([ValueSource(nameof(CheckHealthTestCases))] CheckHealthTest test) { IBlockFinder blockFinder = Substitute.For <IBlockFinder>(); ISyncServer syncServer = Substitute.For <ISyncServer>(); IBlockchainProcessor blockchainProcessor = Substitute.For <IBlockchainProcessor>(); IBlockProducer blockProducer = Substitute.For <IBlockProducer>(); IHealthHintService healthHintService = Substitute.For <IHealthHintService>(); blockchainProcessor.IsProcessingBlocks(Arg.Any <ulong?>()).Returns(test.IsProcessingBlocks); blockProducer.IsProducingBlocks(Arg.Any <ulong?>()).Returns(test.IsProducingBlocks); syncServer.GetPeerCount().Returns(test.PeerCount); BlockHeaderBuilder GetBlockHeader(int blockNumber) => Build.A.BlockHeader.WithNumber(blockNumber); blockFinder.Head.Returns(new Block(GetBlockHeader(4).TestObject)); if (test.IsSyncing) { blockFinder.FindBestSuggestedHeader().Returns(GetBlockHeader(15).TestObject); } else { blockFinder.FindBestSuggestedHeader().Returns(GetBlockHeader(2).TestObject); } IEthSyncingInfo ethSyncingInfo = new EthSyncingInfo(blockFinder); NodeHealthService nodeHealthService = new(syncServer, blockFinder, blockchainProcessor, blockProducer, new HealthChecksConfig(), healthHintService, ethSyncingInfo, test.IsMining); CheckHealthResult result = nodeHealthService.CheckHealth(); Assert.AreEqual(test.ExpectedHealthy, result.Healthy); Assert.AreEqual(test.ExpectedMessage, FormatMessages(result.Messages.Select(x => x.Message))); Assert.AreEqual(test.ExpectedLongMessage, FormatMessages(result.Messages.Select(x => x.LongMessage))); }
public bool IsProducingBlocks(ulong?maxProducingInterval) { for (int index = 0; index < _blockProducers.Length; index++) { IBlockProducer blockProducer = _blockProducers[index].BlockProducer; if (blockProducer.IsProducingBlocks(maxProducingInterval)) { return(true); } } return(false); }
private async Task AssertIsProducingBlocks(IBlockProducer blockProducer) { Assert.AreEqual(false, blockProducer.IsProducingBlocks(null)); blockProducer.Start(); Assert.AreEqual(true, blockProducer.IsProducingBlocks(null)); Thread.Sleep(5000); Assert.AreEqual(false, blockProducer.IsProducingBlocks(1)); Assert.AreEqual(true, blockProducer.IsProducingBlocks(1000)); Assert.AreEqual(true, blockProducer.IsProducingBlocks(null)); await blockProducer.StopAsync(); Assert.AreEqual(false, blockProducer.IsProducingBlocks(null)); }
public bool IsProducingBlocks(ulong?maxProducingInterval) { return(_poSSwitcher.HasEverReachedTerminalBlock() || HasPreMergeProducer == false ? _eth2BlockProducer.IsProducingBlocks(maxProducingInterval) : _preMergeProducer !.IsProducingBlocks(maxProducingInterval)); }