コード例 #1
0
        public void send_a_message_and_get_it_back()
        {
            SetupTransport("lq.tcp://localhost:2032/upstream", ChannelMode.DeliveryGuaranteed);

            var envelope = new Envelope {
                Data = new byte[] { 1, 2, 3, 4, 5 }
            };

            envelope.Headers["foo"] = "bar";

            var receiver = new RecordingReceiver();

            node.StartReceiving(receiver, new RecordingLogger());

            node.Channel.As <LightningQueuesChannel>().Send(envelope.Data, envelope.Headers);
            Wait.Until(() => receiver.Received.Any());

            graph.Dispose();
            queues.Dispose();

            receiver.Received.Any().ShouldBeTrue();

            var actual = receiver.Received.Single();

            actual.Data.ShouldBe(envelope.Data);
            actual.Headers["foo"].ShouldBe("bar");
        }
        public void send_a_message_and_get_it_back()
        {
            var envelope = new Envelope()
            {
                Data = new byte[] { 1, 2, 3, 4, 5 }
            };

            envelope.Headers["foo"] = "bar";

            var receiver = new RecordingReceiver();

            node.StartReceiving(receiver, new RecordingLogger());

            node.Channel.As <LightningQueuesChannel>().Send(envelope.Data, envelope.Headers);
            Wait.Until(() => receiver.Received.Any());

            graph.Dispose();
            queues.Dispose();

            receiver.Received.Any().ShouldBeTrue();

            Envelope actual = receiver.Received.Single();

            actual.Data.ShouldEqual(envelope.Data);
            actual.Headers["foo"].ShouldEqual("bar");
        }
コード例 #3
0
        public void continuous_receive_errors()
        {
            var logger   = new RecordingLogger();
            var receiver = new RecordingReceiver();
            var channel  = MockRepository.GenerateMock <IChannel>();

            channel.Expect(x => x.Receive(receiver))
            .Throw(new Exception("I failed"));

            var node = new ChannelNode
            {
                Channel   = channel,
                Scheduler = new FakeScheduler()
            };

            Assert.Throws <ReceiveFailureException>(() => node.StartReceiving(receiver, logger));
        }
コード例 #4
0
        public void doesnt_throw_if_receive_only_fails_intermittently()
        {
            var channel = new FakeChannel {
                StopAfter = 20
            };
            var node = new ChannelNode
            {
                Channel   = channel,
                Scheduler = new FakeScheduler()
            };

            var logger   = new RecordingLogger();
            var receiver = new RecordingReceiver();

            node.StartReceiving(receiver, logger);

            channel.HitCount.ShouldBe(20);
        }
コード例 #5
0
        public void ReceiveFailed_error_handling()
        {
            var node = new ChannelNode
            {
                Key     = "TestKey",
                Channel = new FakeChannel {
                    StopAfter = 2
                },
                Scheduler = new FakeScheduler()
            };

            var logger = new RecordingLogger();

            node.StartReceiving(new RecordingReceiver(), logger);

            logger.ErrorMessages.ShouldHaveCount(1);
            logger.InfoMessages.ShouldHaveCount(1);
            var message = logger.InfoMessages.Cast <ReceiveFailed>().Single();

            message.ChannelKey.ShouldBe(node.Key);
            message.Exception.ShouldNotBeNull();
        }