public void Response(HttpPipelineResponse response)
 {
     if (IsEnabled(EventLevel.Informational, EventKeywords.None))
     {
         Response(response.RequestId, response.Status, FormatHeaders(response.Headers));
     }
 }
        public async Task NonSeekableResponsesErrorsAreLoggedInTextBlocks()
        {
            HttpPipelineResponse response = await SendRequest(
                isSeekable : false,
                mockResponse => mockResponse.AddHeader(new HttpHeader("Content-Type", "text/xml"))
                );

            EventWrittenEventArgs[] errorContentEvents = _listener.EventsById(ErrorResponseContentTextBlockEvent).ToArray();

            Assert.AreEqual(2, errorContentEvents.Length);

            Assert.AreEqual(EventLevel.Informational, errorContentEvents[0].Level);
            Assert.AreEqual("ErrorResponseContentTextBlock", errorContentEvents[0].EventName);
            Assert.AreEqual(response.RequestId, errorContentEvents[0].GetProperty <string>("requestId"));
            Assert.AreEqual(0, errorContentEvents[0].GetProperty <int>("blockNumber"));
            Assert.AreEqual("Hello ", errorContentEvents[0].GetProperty <string>("content"));

            Assert.AreEqual(EventLevel.Informational, errorContentEvents[1].Level);
            Assert.AreEqual("ErrorResponseContentTextBlock", errorContentEvents[1].EventName);
            Assert.AreEqual(response.RequestId, errorContentEvents[1].GetProperty <string>("requestId"));
            Assert.AreEqual(1, errorContentEvents[1].GetProperty <int>("blockNumber"));
            Assert.AreEqual("world", errorContentEvents[1].GetProperty <string>("content"));

            CollectionAssert.IsEmpty(_listener.EventsById(ErrorResponseContentEvent));
        }
 public async Task ResponseContentAsync(HttpPipelineResponse response, CancellationToken cancellationToken)
 {
     if (IsEnabled(EventLevel.Verbose, EventKeywords.None))
     {
         ResponseContent(response.RequestId, await FormatContentAsync(response.ResponseContentStream));
     }
 }
 public async Task ErrorResponseContentTextAsync(HttpPipelineResponse response, Encoding encoding, CancellationToken cancellationToken)
 {
     if (IsEnabled(EventLevel.Informational, EventKeywords.None))
     {
         ErrorResponseContentText(response.RequestId, await FormatContentStringAsync(response.ResponseContentStream, encoding).ConfigureAwait(false));
     }
 }
示例#5
0
        public async Task OriginalContentStreamIsReturnedIfNotAsync()
        {
            var content = new AsyncContent()
            {
                MemoryStream = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 })
            };
            var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = content
            };
            var mockHandler = new MockHttpClientHandler(httpRequestMessage => Task.FromResult(httpResponseMessage));

            var transport = new HttpClientTransport(new HttpClient(mockHandler));
            HttpPipelineRequest request = transport.CreateRequest(null);

            request.SetRequestLine(HttpPipelineMethod.Get, new Uri("http://example.com:340"));

            HttpPipelineResponse response = await ExecuteRequest(request, transport);

            byte[] data = new byte[5];

            content.CreateContentReadStreamAsyncCompletionSource.SetResult(null);
            Stream stream = response.ResponseContentStream;

            Assert.AreSame(content.MemoryStream, stream);
        }
示例#6
0
        public Response(HttpPipelineResponse httpResponse)
        {
            if (httpResponse == null)
            {
                throw new ArgumentNullException(nameof(httpResponse));
            }

            _httpResponse = httpResponse;
        }
        public async Task SeekableTextResponsesErrorsAreLoggedInText()
        {
            HttpPipelineResponse response = await SendRequest(
                isSeekable : true,
                mockResponse => mockResponse.AddHeader(new HttpHeader("Content-Type", "text/xml"))
                );

            EventWrittenEventArgs errorContentEvent = _listener.SingleEventById(ErrorResponseContentTextEvent);

            Assert.AreEqual(EventLevel.Informational, errorContentEvent.Level);
            Assert.AreEqual("ErrorResponseContentText", errorContentEvent.EventName);
            Assert.AreEqual(response.RequestId, errorContentEvent.GetProperty <string>("requestId"));
            Assert.AreEqual("Hello world", errorContentEvent.GetProperty <string>("content"));
        }
示例#8
0
        public async Task ContentStreamIsReturnedSynchronously()
        {
            var content = new AsyncContent()
            {
                MemoryStream = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 })
            };
            var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = content
            };
            var mockHandler = new MockHttpClientHandler(httpRequestMessage => Task.FromResult(httpResponseMessage));

            var transport = new HttpClientTransport(new HttpClient(mockHandler));
            HttpPipelineRequest request = transport.CreateRequest(null);

            request.SetRequestLine(HttpPipelineMethod.Get, new Uri("http://example.com:340"));

            HttpPipelineResponse response = await ExecuteRequest(request, transport);

            byte[]     data      = new byte[5];
            Stream     stream    = response.ResponseContentStream;
            Task <int> firstRead = stream.ReadAsync(data, 0, 5);

            Assert.False(firstRead.IsCompleted);

            content.CreateContentReadStreamAsyncCompletionSource.SetResult(null);
            Assert.AreEqual(5, await firstRead);

            // Exercise stream features
            stream.Position = 3;
            stream.Seek(-1, SeekOrigin.Current);
            var secondReadLength = await stream.ReadAsync(data, 0, 5);

            Assert.AreEqual(3, secondReadLength);
            Assert.False(stream.CanWrite);
            Assert.True(stream.CanSeek);
            Assert.True(stream.CanRead);
            Assert.Throws <NotSupportedException>(() => stream.Write(null, 0, 0));
            Assert.Throws <NotSupportedException>(() => stream.SetLength(5));
        }
        public async Task NonSeekableResponsesErrorsAreLoggedInBlocks()
        {
            HttpPipelineResponse response = await SendRequest(isSeekable : false);

            EventWrittenEventArgs[] errorContentEvents = _listener.EventsById(ErrorResponseContentBlockEvent).ToArray();

            Assert.AreEqual(2, errorContentEvents.Length);

            Assert.AreEqual(EventLevel.Informational, errorContentEvents[0].Level);
            Assert.AreEqual("ErrorResponseContentBlock", errorContentEvents[0].EventName);
            Assert.AreEqual(response.RequestId, errorContentEvents[0].GetProperty <string>("requestId"));
            Assert.AreEqual(0, errorContentEvents[0].GetProperty <int>("blockNumber"));
            CollectionAssert.AreEqual(new byte[] { 72, 101, 108, 108, 111, 32 }, errorContentEvents[0].GetProperty <byte[]>("content"));

            Assert.AreEqual(EventLevel.Informational, errorContentEvents[1].Level);
            Assert.AreEqual("ErrorResponseContentBlock", errorContentEvents[1].EventName);
            Assert.AreEqual(response.RequestId, errorContentEvents[1].GetProperty <string>("requestId"));
            Assert.AreEqual(1, errorContentEvents[1].GetProperty <int>("blockNumber"));
            CollectionAssert.AreEqual(new byte[] { 119, 111, 114, 108, 100 }, errorContentEvents[1].GetProperty <byte[]>("content"));

            CollectionAssert.IsEmpty(_listener.EventsById(ErrorResponseContentEvent));
        }
 public void ResponseDelay(HttpPipelineResponse response, long delayMilliseconds)
 {
     ResponseDelayCore(delayMilliseconds);
 }
 public void ErrorResponse(HttpPipelineResponse response)
 => ErrorResponse(response.Status);
 public void ProcessingResponse(HttpPipelineResponse response)
 => ProcessingResponse(response.ToString());