protected void WhenExecutingTheRule(ConsensusRuleBase rule, RuleContext ruleContext)
        {
            try
            {
                this.logger = new Mock <ILogger>();
                rule.Logger = this.logger.Object;

                var loggerFactory = ExtendedLoggerFactory.Create();

                var dateTimeProvider = new DateTimeProvider();

                rule.Parent = new PowConsensusRuleEngine(
                    KnownNetworks.RegTest,
                    new Mock <ILoggerFactory>().Object,
                    new Mock <IDateTimeProvider>().Object,
                    new ChainIndexer(this.network),
                    new NodeDeployments(KnownNetworks.RegTest, new ChainIndexer(this.network)),
                    new ConsensusSettings(NodeSettings.Default(KnownNetworks.RegTest)), new Mock <ICheckpoints>().Object, new Mock <ICoinView>().Object, new Mock <IChainState>().Object,
                    new InvalidBlockHashStore(dateTimeProvider),
                    new NodeStats(dateTimeProvider, NodeSettings.Default(this.network), new Mock <IVersionProvider>().Object),
                    new AsyncProvider(loggerFactory, new Mock <ISignals>().Object),
                    new ConsensusRulesContainer());

                rule.Initialize();

                (rule as AsyncConsensusRule).RunAsync(ruleContext).GetAwaiter().GetResult();
            }
            catch (Exception e)
            {
                this.caughtExecption = e;
            }
        }
Ejemplo n.º 2
0
        protected void WhenExecutingTheRule(ConsensusRuleBase rule, RuleContext ruleContext)
        {
            try
            {
                this.logger = new Mock<ILogger>();
                rule.Logger = this.logger.Object;
                rule.Parent = new PowConsensusRuleEngine(
                    KnownNetworks.RegTest,
                    new Mock<ILoggerFactory>().Object,
                    new Mock<IDateTimeProvider>().Object,
                    new ConcurrentChain(this.network),
                    new NodeDeployments(KnownNetworks.RegTest, new ConcurrentChain(this.network)),
                    new ConsensusSettings(), new Mock<ICheckpoints>().Object, new Mock<ICoinView>().Object, new Mock<IChainState>().Object,
                    new InvalidBlockHashStore(new DateTimeProvider()));

                rule.Initialize();

                rule.Parent.PerformanceCounter.ProcessedTransactions.Should().Be(0);

                (rule as AsyncConsensusRule).RunAsync(ruleContext).GetAwaiter().GetResult();
            }
            catch (Exception e)
            {
                this.caughtExecption = e;
            }
        }
        public void SetErrorHandler(ConsensusRuleBase errorHandler)
        {
            // TODO: set a rule that will be invoked when a validation of a block failed.

            // This will allow the creator of the blockchain to provide
            // an error handler rule that is unique to the current blockchain.
            // future sidechains may have additional handling of errors that
            // extend or replace the default current error handling code.
        }
Ejemplo n.º 4
0
 public void InitRule(ConsensusRuleBase rule)
 {
     rule.Parent = this.rulesEngine;
     rule.Logger = this.loggerFactory.CreateLogger(rule.GetType().FullName);
     rule.Initialize();
 }