public async void ShouldResetInternalBufferPositionsWhenWritableBufferIsSmallerThanSetWatermarkAsync()
        {
            var input  = GenerateMessageChunk(Constants.ChunkBufferSize - Constants.ChunkBufferResetPositionsWatermark);
            var logger = LoggingHelper.GetTraceEnabledLogger();
            var reader = new ChunkReader(new MemoryStream(input), logger.Object);

            var count = await reader.ReadNextMessagesAsync(new MemoryStream());

            count.Should().Be(1);
            logger.Verify(l => l.Trace(It.IsRegex(CompactingArgumentRegEx), It.IsAny <object[]>()), Times.Once);
        }
        public void ShouldResetInternalBufferPositionsWhenAMessageOfNChunks()
        {
            var size   = 3 * Constants.MaxChunkSize;
            var input  = GenerateMessageChunk(3 * Constants.MaxChunkSize);
            var logger = LoggingHelper.GetTraceEnabledLogger();
            var reader = new ChunkReader(new MemoryStream(input), logger.Object);

            var count = reader.ReadNextMessages(new MemoryStream());

            count.Should().Be(1);
            logger.Verify(l => l.Trace(It.IsRegex(CompactingArgumentRegEx), It.IsAny <object[]>()), Times.AtLeast(size / Constants.ChunkBufferSize));
        }
Beispiel #3
0
            public void LogsTheMessageToDebug()
            {
                var mockResultBuilder = new Mock <IMessageResponseCollector>();
                var mockLogger        = LoggingHelper.GetTraceEnabledLogger();

                var mrh = new MessageResponseHandler(mockLogger.Object);

                mrh.EnqueueMessage(PullAll, mockResultBuilder.Object);
                mrh.HandleFailureMessage("code.error", "message");

                mockLogger.Verify(x => x.Debug(It.Is <string>(actual => actual.StartsWith("S: ")), It.Is <object[]>(actual => actual.First() is FailureMessage)), Times.Once);
            }
        public async void ShouldResetInternalBufferPositionsWhenWritableBufferIsSmallerThanSetWatermarkWithConsecutiveMessagesAsync()
        {
            const int messageSizePerChunk = 1000;
            const int maxBytes            = Constants.ChunkBufferSize;

            var input  = GenerateMessages(messageSizePerChunk, maxBytes);
            var logger = LoggingHelper.GetTraceEnabledLogger();
            var reader = new ChunkReader(new MemoryStream(input), logger.Object);

            var count = await reader.ReadNextMessagesAsync(new MemoryStream());

            count.Should().BeGreaterOrEqualTo(maxBytes / messageSizePerChunk);
            logger.Verify(l => l.Trace(It.IsRegex(CompactingArgumentRegEx), It.IsAny <object[]>()), Times.Once);
        }
Beispiel #5
0
            public void LogsTheMessageToDebug()
            {
                var mockResultBuilder = new Mock <IMessageResponseCollector>();
                var mockLogger        = LoggingHelper.GetTraceEnabledLogger();

                var mrh = new MessageResponseHandler(mockLogger.Object);

                mrh.EnqueueMessage(PullAll, mockResultBuilder.Object);
                mrh.HandleSuccessMessage(new Dictionary <string, object> {
                    { "fields", new List <object> {
                          "x"
                      } }
                });

                mockLogger.Verify(x => x.Debug(It.Is <string>(actual => actual.StartsWith("S: ")), It.Is <object[]>(actual => actual.First() is SuccessMessage)), Times.Once);
            }
        public async void ShouldLogDataOnSendAsync()
        {
            var buffer = Enumerable.Range(0, 10).Select(i => (byte)i).ToArray();
            var stream = new MemoryStream();
            var logger = LoggingHelper.GetTraceEnabledLogger();
            var writer = new ChunkWriter(stream, logger.Object);

            // Write data
            writer.OpenChunk();
            writer.Write(buffer, 0, buffer.Length);
            writer.CloseChunk();

            logger.Verify(x => x.Trace("C: {0}", It.IsAny <string>()), Times.Never);

            await writer.SendAsync();

            logger.Verify(x => x.Trace("C: {0}", It.IsAny <string>()), Times.Once);
        }