/// <summary> /// Generate chunked data for testing. /// </summary> public static void Generate( int[] chunkLengths, Dictionary <string, string> trailers, out List <MemoryStream> chunks, out byte[] httpMessageBodyBlob) { // Generate chunks chunks = new List <MemoryStream>(); for (var i = 0; i < chunkLengths.Length; i++) { chunks.Add(MockData.MockNetworkStream(chunkLengths[i], seed: i)); } // Write body var httpMessageBodyStream = new MemoryStream(); foreach (var chunk in chunks) { httpMessageBodyStream.Write(chunk.Length.ToString("X", CultureInfo.InvariantCulture)); httpMessageBodyStream.Write(";some extra attributes = 1133"); httpMessageBodyStream.Write(NewLine); httpMessageBodyStream.Write(chunk.ToArray()); httpMessageBodyStream.Write(NewLine); } // Always end with a empty chunk httpMessageBodyStream.Write($"0{NewLine}"); // Write trailer foreach (var kv in trailers) { httpMessageBodyStream.Write($"{kv.Key}: {kv.Value}"); httpMessageBodyStream.Write(NewLine); } // End the chunk request body with an empty line httpMessageBodyStream.Write(NewLine); httpMessageBodyBlob = httpMessageBodyStream.ToArray(); }
static void MockUp( int testDataSize, out HttpSettings httpSettings, out MemoryStream senderData, out Mock <IHttpResponse> mockHttpResponse, out MemoryStream receiverData, out HttpResponseHeader responseHeader) { httpSettings = HttpSettings.Default; httpSettings.MaxBodySizeInMemory = 4 * 1024; senderData = MockData.MemoryStream(testDataSize); var responseHeaderTmp = new HttpResponseHeader(); responseHeader = responseHeaderTmp; mockHttpResponse = new Mock <IHttpResponse>(MockBehavior.Strict); var isHeaderSent = false; var t = mockHttpResponse.Object; mockHttpResponse .Setup(inst => inst.Header) .Returns(responseHeader); mockHttpResponse .Setup(inst => inst.IsHeaderSent) .Returns(() => isHeaderSent); mockHttpResponse .Setup(inst => inst.SendHeaderAsync()) .Returns(delegate { if (isHeaderSent) { throw new InvalidDataException(); } isHeaderSent = true; responseHeaderTmp.IsWritable = false; return(Task.FromResult(true)); }); receiverData = new MemoryStream(); }