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; } }
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. }
public void InitRule(ConsensusRuleBase rule) { rule.Parent = this.rulesEngine; rule.Logger = this.loggerFactory.CreateLogger(rule.GetType().FullName); rule.Initialize(); }