protected void WhenExecutingTheRule(ConsensusRule rule, RuleContext ruleContext)
        {
            try
            {
                this.logger = new Mock <ILogger>();
                rule.Logger = this.logger.Object;
                rule.Parent = new PowConsensusRules(
                    this.network,
                    new Mock <ILoggerFactory>().Object,
                    new Mock <IDateTimeProvider>().Object,
                    new ConcurrentChain(this.network),
                    new NodeDeployments(this.network, new ConcurrentChain(this.network)),
                    new ConsensusSettings(), new Mock <ICheckpoints>().Object, new Mock <CoinView>().Object, null);

                rule.Initialize();

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

                rule.RunAsync(ruleContext).GetAwaiter().GetResult();
            }
            catch (Exception e)
            {
                this.caughtExecption = e;
            }
        }
        public void Register_WithRulesInRuleRegistration_UpdatesConsensusRule_AddsConensusRuleToRules()
        {
            this.loggerFactory.Setup(l => l.CreateLogger(typeof(BlockSizeRule).FullName))
            .Returns(new Mock <ILogger>().Object)
            .Verifiable();
            this.loggerFactory.Setup(l => l.CreateLogger(typeof(SetActivationDeploymentsRule).FullName))
            .Returns(new Mock <ILogger>().Object)
            .Verifiable();
            this.ruleRegistrations = new List <ConsensusRule> {
                new BlockSizeRule(),
                new SetActivationDeploymentsRule()
            };

            TestConsensusRules consensusRules = InitializeConsensusRules();

            consensusRules = consensusRules.Register(this.ruleRegistration.Object) as TestConsensusRules;

            List <ConsensusRule> rules = consensusRules.Rules.ToList();

            Assert.Equal(2, rules.Count);
            ConsensusRule rule = rules[0];

            Assert.Equal(typeof(TestConsensusRules), rule.Parent.GetType());
            Assert.NotNull(rule.Logger);

            rule = rules[1];
            Assert.Equal(typeof(TestConsensusRules), rule.Parent.GetType());
            Assert.NotNull(rule.Logger);

            this.loggerFactory.Verify();
        }
Ejemplo n.º 3
0
        public void Consensus_Exact(int offset)
        {
            var rule = new ConsensusRule()
            {
                Rules = new ICustomRule[]
                {
                    new TestRule(RuleAction.Report, new FailurePart("bb", FailureClassification.Person, offset)),
                    new TestRule(RuleAction.Report, new FailurePart("bb", FailureClassification.Person, offset)),
                }
            };

            var result = rule.Apply("ff", "vv", out IEnumerable <FailurePart> badParts);

            Assert.AreEqual(RuleAction.Report, result);
            Assert.AreEqual(offset, badParts.Single().Offset);
        }
Ejemplo n.º 4
0
        public void NoConsensus_OnlyOneHasProblem()
        {
            var rule = new ConsensusRule()
            {
                Rules = new ICustomRule[]
                {
                    new TestRule(RuleAction.Report, new FailurePart("bb", FailureClassification.Person)),
                    new TestRule(RuleAction.Ignore),
                }
            };

            var result = rule.Apply("ff", "vv", out IEnumerable <FailurePart> badParts);

            Assert.AreEqual(RuleAction.None, result);
            Assert.IsEmpty(badParts);
        }
Ejemplo n.º 5
0
        public void Consensus_SingleOverlap()
        {
            var rule = new ConsensusRule()
            {
                Rules = new ICustomRule[]
                {
                    // Word is length 2 and begins at offset 10
                    new TestRule(RuleAction.Report, new FailurePart("ab", FailureClassification.Person, 10)),
                    new TestRule(RuleAction.Report, new FailurePart("bc", FailureClassification.Person, 11)),
                }
            };

            var result = rule.Apply("ff", "abc is so cool", out IEnumerable <FailurePart> badParts);

            Assert.AreEqual(RuleAction.Report, result);
            Assert.AreEqual(10, badParts.Single().Offset);
            Assert.AreEqual("ab", badParts.Single().Word);
        }