Beispiel #1
0
            public AfterBlock ProcessedFail(Block block)
            {
                _headBefore = _blockTree.Head?.Hash;
                ManualResetEvent processedEvent = new ManualResetEvent(false);
                bool             wasProcessed   = false;

                _blockProcessor.BlockProcessed += (sender, args) =>
                {
                    if (args.Block.Hash == block.Hash)
                    {
                        wasProcessed = true;
                        processedEvent.Set();
                    }
                };

                _logger.Info($"Waiting for {block.ToString(Block.Format.Short)} to fail processing");
                _blockProcessor.AllowToFail(block.Hash);
                processedEvent.WaitOne(AfterBlock.ProcessingWait);
                Assert.True(wasProcessed, $"Block was never processed {block.ToString(Block.Format.Short)}");
                Assert.AreEqual(_headBefore, _blockTree.Head?.Hash, $"Processing did not fail - {block.ToString(Block.Format.Short)} became a new head block");
                _logger.Info($"Finished waiting for {block.ToString(Block.Format.Short)} to fail processing");
                return(new AfterBlock(_logManager, this, block));
            }