Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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));
 }