예제 #1
0
        public async Task WriteStreamedMessageAsync_MultipleMessagesWithFlush_WriteMessagesAsSegments()
        {
            // Arrange
            var ms         = new MemoryStream();
            var pipeWriter = new Base64PipeWriter(PipeWriter.Create(ms));

            // Act
            await pipeWriter.WriteStreamedMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(), MarshallerEchoRequest.ContextualSerializer);

            await pipeWriter.WriteStreamedMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(), MarshallerEchoRequest.ContextualSerializer);

            await pipeWriter.WriteStreamedMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(), MarshallerEchoRequest.ContextualSerializer);

            // Assert
            var base64 = Encoding.UTF8.GetString(ms.ToArray());

            Assert.AreEqual("AAAAAAYKBHRlc3Q=AAAAAAYKBHRlc3Q=AAAAAAYKBHRlc3Q=", base64);
        }
예제 #2
0
        public async Task WriteStreamedMessageAsync_MultipleMessagesNoFlush_WriteMessages()
        {
            // Arrange
            var ms           = new MemoryStream();
            var pipeWriter   = new Base64PipeWriter(PipeWriter.Create(ms));
            var writeOptions = new WriteOptions(WriteFlags.BufferHint);

            // Act
            await pipeWriter.WriteStreamedMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(writeOptions: writeOptions), MarshallerEchoRequest.ContextualSerializer);

            await pipeWriter.WriteStreamedMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(writeOptions: writeOptions), MarshallerEchoRequest.ContextualSerializer);

            await pipeWriter.WriteStreamedMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(writeOptions: writeOptions), MarshallerEchoRequest.ContextualSerializer);

            pipeWriter.Complete();

            // Assert
            var base64 = Encoding.UTF8.GetString(ms.ToArray());

            Assert.AreEqual("AAAAAAYKBHRlc3QAAAAABgoEdGVzdAAAAAAGCgR0ZXN0", base64);
        }
예제 #3
0
        public async Task WriteStreamedMessageAsync_EmptyMessage_WriteMessageWithNoData()
        {
            // Arrange
            var ms         = new MemoryStream();
            var pipeWriter = new Base64PipeWriter(PipeWriter.Create(ms));

            // Act
            await pipeWriter.WriteStreamedMessageAsync(new EchoRequest(), HttpContextServerCallContextHelper.CreateServerCallContext(), MarshallerEchoRequest.ContextualSerializer);

            // Assert
            var base64      = Encoding.UTF8.GetString(ms.ToArray());
            var messageData = Convert.FromBase64String(base64);

            CollectionAssert.AreEqual(
                new byte[]
            {
                0x00,     // compression = 0
                0x00,
                0x00,
                0x00,
                0x00,     // length = 0
            },
                messageData);
        }