Exemple #1
0
        /// <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();
        }
Exemple #2
0
        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();
        }