public void AlwaysFailsService_ends_up_in_dlq_after_3_attempts()
        {
            var service = Container.Resolve <AlwaysFailService>();
            var request = new AlwaysFail {
                Name = "World!"
            };

            using (var serviceHost = CreateMessagingService())
            {
                using (var client = serviceHost.MessageFactory.CreateMessageQueueClient())
                {
                    client.Publish(request);
                }

                serviceHost.RegisterHandler <AlwaysFail>(service.ExecuteAsync);
                serviceHost.Start();

                Assert.That(service.Result, Is.Null);
                Assert.That(service.TimesCalled, Is.EqualTo(3));

                using (var client = serviceHost.MessageFactory.CreateMessageQueueClient())
                {
                    var dlqMessage = client.GetAsync(QueueNames <AlwaysFail> .Dlq)
                                     .ToMessage <AlwaysFail>();

                    Assert.That(dlqMessage, Is.Not.Null);
                    Assert.That(dlqMessage.GetBody().Name, Is.EqualTo(request.Name));
                }
            }
        }
Beispiel #2
0
        public void AlwaysFailsService_ends_up_in_dlq_after_3_attempts()
        {
            var service = new AlwaysFailService();
            var request = new AlwaysFail {
                Name = "World!"
            };

            using (var serviceHost = this.CreateMessagingService()) {
                using (var client = serviceHost.MessageFactory.CreateMessageQueueClient()) {
                    client.Publish(request);
                }

                serviceHost.RegisterHandler <AlwaysFail>(m => service.Any(m.GetBody()));
                serviceHost.Start();

                Assert.That(service.Result, Is.Null);
                Assert.That(service.TimesCalled, Is.EqualTo(3));

                using (var client = serviceHost.MessageFactory.CreateMessageQueueClient()) {
                    var dlqMessage = client.GetAsync <AlwaysFail>(MqQueueNames <AlwaysFail> .Dlq);
                    client.Ack(dlqMessage);

                    Assert.That(dlqMessage, Is.Not.Null);
                    Assert.That(dlqMessage.GetBody().Name, Is.EqualTo(request.Name));
                }
            }
        }
Beispiel #3
0
        public void AlwaysFailTest()
        {
            var blackboard = new TestBlackboard();
            var node       = new AlwaysFail <TestBlackboard>();
            var tree       = BehaviorTreeBuilder <TestBlackboard> .Begin()
                             .Sequence()
                             .Decorator(node).Leaf(new TrackingLeaf())
                             .Build(blackboard);

            this.UpdateAndStep(tree, 0.1f);

            Assert.AreEqual(BTTaskStatus.Failed, node.Status);
            Assert.AreEqual(1, blackboard.GetTracking(TestBlackboard.TrackingExecution));
        }
Beispiel #4
0
        public void ShouldRunChainOfCommandsAndFail()
        {
            var mockCommand1 = new Mock <AlwaysFail>();
            var mockCommand2 = new Mock <AlwaysFail>();
            var alwaysFail   = new AlwaysFail();
            var commands     = new[] {
                mockCommand1.Object,
                new AlwaysFail(),
                mockCommand2.Object,
            };

            Subject.Commands = commands;

            Assert.That(Subject.Run, Throws.TypeOf <CommandChainFailedException>());

            mockCommand1.Verify(x => x.Run(), Times.Once());
            mockCommand2.Verify(x => x.Run(), Times.Never());
        }