public async Task When_execute_aggregate_command_with_fault_and_metadata()
        {
            _command         = new ScheduleErrorInFutureCommand(DateTime.Now.AddSeconds(0.5), Guid.NewGuid(), "12", 1);
            _commandMetadata = new MessageMetadata(_command.Id, BusinessDateTime.Now, Guid.NewGuid());

            var res = await GridNode.PrepareCommand(_command, _commandMetadata)
                      .Expect <JobFailed>()
                      .And <IFault <RaiseScheduledDomainEventCommand> >()
                      .Execute(TimeSpan.FromSeconds(30));

            _schedulingCommandFault = res.Message <IMessageMetadataEnvelop <IFault <RaiseScheduledDomainEventCommand> > >();
            _jobFailedEnvelop       = res.Message <IMessageMetadataEnvelop <JobFailed> >();
        }
Beispiel #2
0
        public async Task Should_retry_on_exception()
        {
            //will retry 1 time
            var _command = new ScheduleErrorInFutureCommand(DateTime.Now.AddSeconds(0.1), Guid.NewGuid(), "test value A", 1);

            var waiter = GridNode.NewWaiter(TimeSpan.FromMinutes(1))
                         .Expect <JobFailed>()
                         .And <JobSucceeded>()
                         .And <TestErrorDomainEvent>()
                         .Create();

            GridNode.Execute(_command);

            var res = await waiter;

            Assert.AreEqual(_command.Value, res.Message <TestErrorDomainEvent>().Value);
        }
        public async Task Should_not_retry_on_exception()
        {
            //will retry 1 time
            var _command = new ScheduleErrorInFutureCommand(DateTime.Now.AddSeconds(0.1), Guid.NewGuid(), "test value A", 2);

            var waiter = GridNode.NewWaiter()
                         .Expect <JobFailed>()
                         .Create();

            GridNode.Execute(_command);

            var res = await waiter;

            Thread.Sleep(5000);

            // job was not retried and policy was not called
            Assert.AreEqual(1, _policyCallNumber);
        }