private void ReceiveMessages(params ReplyMessage <BsonDocument>[] messages)
        {
            MessageHelper.WriteResponsesToStream(_stream, messages);
            var encoderSelector = new ReplyMessageEncoderSelector <BsonDocument>(BsonDocumentSerializer.Instance);

            foreach (var message in messages)
            {
                _subject.ReceiveMessageAsync(message.ResponseTo, encoderSelector, _messageEncoderSettings, CancellationToken.None).Wait();
            }
        }
Example #2
0
        public void ReceiveMessage_should_throw_an_ArgumentNullException_when_the_encoderSelector_is_null(
            [Values(false, true)]
            bool async)
        {
            IMessageEncoderSelector encoderSelector = null;

            Action act;

            if (async)
            {
                act = () => _subject.ReceiveMessageAsync(10, encoderSelector, _messageEncoderSettings, CancellationToken.None).GetAwaiter().GetResult();
            }
            else
            {
                act = () => _subject.ReceiveMessage(10, encoderSelector, _messageEncoderSettings, CancellationToken.None);
            }

            act.ShouldThrow <ArgumentNullException>();
        }
        public void ReceiveMessageAsync_should_throw_an_ArgumentNullException_when_the_serializer_is_null()
        {
            IBsonSerializer <int> serializer = null;
            Action act = () => _subject.ReceiveMessageAsync(10, serializer, _messageEncoderSettings, CancellationToken.None).Wait();

            act.ShouldThrow <ArgumentNullException>();
        }
        public void ReceiveMessage_should_throw_a_FormatException_when_message_is_an_invalid_size(
            [Values(-1, 48000001)]
            int length,
            [Values(false, true)]
            bool async)
        {
            using (var stream = new BlockingMemoryStream())
            {
                var bytes = BitConverter.GetBytes(length);
                stream.Write(bytes, 0, bytes.Length);
                stream.Seek(0, SeekOrigin.Begin);
                var encoderSelector = new ReplyMessageEncoderSelector <BsonDocument>(BsonDocumentSerializer.Instance);

                Exception exception;
                if (async)
                {
                    _mockStreamFactory
                    .Setup(f => f.CreateStreamAsync(_endPoint, CancellationToken.None))
                    .ReturnsAsync(stream);
                    _subject.OpenAsync(CancellationToken.None).GetAwaiter().GetResult();
                    exception = Record
                                .Exception(() => _subject.ReceiveMessageAsync(10, encoderSelector, _messageEncoderSettings, CancellationToken.None)
                                           .GetAwaiter()
                                           .GetResult());
                }
                else
                {
                    _mockStreamFactory.Setup(f => f.CreateStream(_endPoint, CancellationToken.None))
                    .Returns(stream);
                    _subject.Open(CancellationToken.None);
                    exception = Record.Exception(() => _subject.ReceiveMessage(10, encoderSelector, _messageEncoderSettings, CancellationToken.None));
                }

                exception.Should().BeOfType <MongoConnectionException>();
                var e = exception.InnerException.Should().BeOfType <FormatException>().Subject;
                e.Message.Should().Be("The size of the message is invalid.");
            }
        }
Example #5
0
        public void ReceiveMessageAsync_should_throw_an_ArgumentNullException_when_the_encoderSelector_is_null()
        {
            IMessageEncoderSelector encoderSelector = null;
            Action act = () => _subject.ReceiveMessageAsync(10, encoderSelector, _messageEncoderSettings, CancellationToken.None).Wait();

            act.ShouldThrow <ArgumentNullException>();
        }
        public void ReceiveMessageAsync_should_throw_an_ArgumentOutOfRangeException_when_timeout_is_out_of_range(int timeoutMilliseconds)
        {
            var    serializer = Substitute.For <IBsonSerializer <BsonDocument> >();
            Action act        = () => _subject.ReceiveMessageAsync(10, serializer, _messageEncoderSettings, TimeSpan.FromMilliseconds(timeoutMilliseconds), CancellationToken.None).Wait();

            act.ShouldThrow <ArgumentOutOfRangeException>();
        }