public async Task PayloadSender_WhenLengthNotSet_AndNoData_SendsZeroLengthEnd() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var header = new Header() { Type = PayloadTypes.Stream, Id = Guid.NewGuid(), PayloadLength = 555, End = false, }; var stream = new MemoryStream(new byte[100]); stream.Position = 100; var done = new TaskCompletionSource <string>(); sender.SendPayload(header, stream, false, (Header sentHeader) => { Assert.Equal(0, sentHeader.PayloadLength); Assert.True(sentHeader.End); done.SetResult("done"); return(Task.CompletedTask); }); await done.Task; Assert.Single(transport.Buffers); }
public async Task PayloadSender_WhenLengthSet_Sends() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var header = new Header() { Type = PayloadTypes.Stream, Id = Guid.NewGuid(), PayloadLength = 55, End = false, }; var stream = new MemoryStream(new byte[100]); TaskCompletionSource <string> done = new TaskCompletionSource <string>(); sender.SendPayload(header, stream, true, (Header sentHeader) => { Assert.AreEqual(55, sentHeader.PayloadLength); Assert.IsFalse(sentHeader.End); done.SetResult("done"); return(Task.CompletedTask); }); await done.Task; Assert.AreEqual(2, transport.Buffers.Count); Assert.AreEqual(55, stream.Position); }
public void PayloadSender_Connect_ShouldFail() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); Assert.Throws <InvalidOperationException>(() => sender.Connect(transport)); }
public async Task ResponseDisassembler_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var disassembler = new ResponseDisassembler(sender, Guid.NewGuid(), StreamingResponse.OK()); await disassembler.DisassembleAsync(); Assert.AreEqual(2, transport.Buffers.Count); }
public async Task RequestDisassembler_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var disassembler = new RequestDisassembler(sender, Guid.NewGuid(), StreamingRequest.CreateGet("/a/b/c")); await disassembler.DisassembleAsync(); Assert.Equal(2, transport.Buffers.Count); }
public async Task SendResponseAsync() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var ops = new SendOperations(sender); var content = new StringContent("/a/b", Encoding.ASCII); var response = StreamingResponse.CreateResponse(HttpStatusCode.OK, content); await ops.SendResponseAsync(Guid.NewGuid(), response); Assert.Equal(4, transport.Buffers.Count); }
public async Task RequestDisassembler_WithJsonStream_Sends() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var ops = new SendOperations(sender); var request = StreamingRequest.CreatePost("/a/b"); request.AddStream(new StringContent("abc", Encoding.ASCII)); await ops.SendRequestAsync(Guid.NewGuid(), request); Assert.AreEqual(4, transport.Buffers.Count); }
public async Task ResponseDisassembler_With_HttpContent_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var content = new StringContent("{'a': 55}", Encoding.UTF8, "application/json"); var response = StreamingResponse.CreateResponse(System.Net.HttpStatusCode.OK, content); var disassembler = new ResponseDisassembler(sender, Guid.NewGuid(), response); await disassembler.DisassembleAsync(); Assert.Equal(2, transport.Buffers.Count); }
public async Task RequestDisassembler_WithVariableStream_Sends() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var ops = new SendOperations(sender); var request = StreamingRequest.CreatePost("/a/b"); var stream = new PayloadStream(new PayloadStreamAssembler(null, Guid.NewGuid(), "blah", 100)); stream.Write(new byte[100], 0, 100); request.AddStream(new StreamContent(stream)); await ops.SendRequestAsync(Guid.NewGuid(), request); Assert.AreEqual(5, transport.Buffers.Count); }
public async Task HttpContentStreamDisassembler_ObjectContent_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var content = new ResponseMessageStream(Guid.NewGuid()) { Content = new StringContent("{'a': 55}", Encoding.UTF8, "application/json"), }; var disassembler = new ResponseMessageStreamDisassembler(sender, content); await disassembler.DisassembleAsync(); Assert.AreEqual(2, transport.Buffers.Count); }
public async Task HttpContentStreamDisassembler_StringContent_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var content = new ResponseMessageStream(Guid.NewGuid()) { Content = new StringContent("blah blah blah", Encoding.ASCII), }; var disassembler = new ResponseMessageStreamDisassembler(sender, content); await disassembler.DisassembleAsync(); Assert.Equal(2, transport.Buffers.Count); }
public async Task HttpContentStreamDisassembler_ObjectContent_SendsAsFixedLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var content = new ResponseMessageStream(Guid.NewGuid()) { Content = new ObjectContent(typeof(string), "{'a': 55}", new JsonMediaTypeFormatter()), }; var disassembler = new ResponseMessageStreamDisassembler(sender, content); await disassembler.DisassembleAsync(); Assert.AreEqual(2, transport.Buffers.Count); }
public async Task HttpContentStreamDisassembler_StreamContent_SendsAsVariableLength() { var sender = new PayloadSender(); var transport = new MockTransportSender(); sender.Connect(transport); var stream = new PayloadStream(new PayloadStreamAssembler(null, Guid.NewGuid(), "blah", 100)); var content = new ResponseMessageStream(Guid.NewGuid()) { Content = new StreamContent(stream), }; stream.Write(new byte[100], 0, 100); var disassembler = new ResponseMessageStreamDisassembler(sender, content); await disassembler.DisassembleAsync(); Assert.AreEqual(3, transport.Buffers.Count); }