public async Task SendingRequestProducesEvents() { var options = new HttpPipelineOptions(new HttpClientTransport(new HttpClient(new MockHttpMessageHandler()))); options.LoggingPolicy = LoggingPolicy.Shared; var pipeline = options.Build("test", "1.0.0"); using (var request = pipeline.CreateRequest()) { request.SetRequestLine(HttpVerb.Get, new Uri("https://contoso.a.io")); var response = await pipeline.SendRequestAsync(request, CancellationToken.None); Assert.AreEqual(500, response.Status); } Assert.True(_listener.EventData.Any(e => e.EventId == 3 && e.EventName == "ProcessingRequest" && GetStringProperty(e, "request").Contains("https://contoso.a.io"))); Assert.True(_listener.EventData.Any(e => e.EventId == 4 && e.EventName == "ProcessingResponse" && GetStringProperty(e, "response").Contains("500"))); Assert.True(_listener.EventData.Any(e => e.EventId == 6 && e.EventName == "ErrorResponse" && (int)GetProperty(e, "status") == 500)); }
public static HttpPipelineOptions CreateDefaultPipelineOptions() { var options = new HttpPipelineOptions(HttpClientTransport.Shared); options.LoggingPolicy = LoggingPolicy.Shared; options.RetryPolicy = s_defaultRetryPolicy; return(options); }
private static (ConfigurationClient service, TestPool <byte> pool) CreateTestService(MockHttpClientTransport transport) { HttpPipelineOptions options = ConfigurationClient.CreateDefaultPipelineOptions(); var testPool = new TestPool <byte>(); options.AddService(testPool, typeof(ArrayPool <byte>)); options.Transport = transport; var service = new ConfigurationClient(connectionString, options); return(service, testPool); }
public ConfigurationClient(string connectionString, HttpPipelineOptions options) { if (connectionString == null) { throw new ArgumentNullException(nameof(connectionString)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } _pipeline = options.Build(ComponentName, ComponentVersion); ParseConnectionString(connectionString, out _baseUri, out _credential, out _secret); }
protected static Task <Response> SendRequest(MockTransport mockTransport, HttpPipelinePolicy policy) { var options = new HttpPipelineOptions(mockTransport); options.RetryPolicy = policy; var pipeline = options.Build(typeof(FixedRetryPolicyTests).Assembly); var httpPipelineRequest = pipeline.CreateRequest(); httpPipelineRequest.SetRequestLine(HttpVerb.Get, new Uri("http://example.com/")); return(pipeline.SendRequestAsync(httpPipelineRequest, CancellationToken.None)); }
public void Basics() { var options = new HttpPipelineOptions(new MockTransport(500, 1)); options.RetryPolicy = new CustomRetryPolicy(); options.LoggingPolicy = new LoggingPolicy(); var listener = new TestEventListener(); listener.EnableEvents(EventLevel.LogAlways); var pipeline = options.Build("test", "1.0.0"); using (var message = pipeline.CreateMessage(cancellation: default))
public async Task Basics() { var options = new HttpPipelineOptions(new MockTransport(500, 1)); options.RetryPolicy = new CustomRetryPolicy(); var pipeline = options.Build("test", "1.0.0"); var request = pipeline.CreateRequest(); request.SetRequestLine(HttpVerb.Get, new Uri("https://contoso.a.io")); var response = await pipeline.SendRequestAsync(request, CancellationToken.None); Assert.AreEqual(1, response.Status); }
public ConfigurationClient(string connectionString, HttpPipelineOptions options) { if (connectionString == null) { throw new ArgumentNullException(nameof(connectionString)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } ParseConnectionString(connectionString, out _baseUri, out var credential, out var secret); options.AddPerCallPolicy(ClientRequestIdPolicy.Singleton); options.AddPerCallPolicy(new AuthenticationPolicy(credential, secret)); _pipeline = options.Build(ComponentName, ComponentVersion); }
public async Task ComponentNameAndVersionReadFromAssembly() { string userAgent = null; var mockTransport = new MockTransport( req => { Assert.True(req.TryGetHeader("User-Agent", out userAgent)); return(new MockResponse(200)); }); var pipeline = new HttpPipelineOptions(mockTransport).Build(typeof(PipelineTests).Assembly); var request = pipeline.CreateRequest(); request.SetRequestLine(HttpVerb.Get, new Uri("https://contoso.a.io")); await pipeline.SendRequestAsync(request, CancellationToken.None); var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); Assert.AreEqual(userAgent, $"azsdk-net-base-test/{assemblyVersion} ({RuntimeInformation.FrameworkDescription}; {RuntimeInformation.OSDescription})"); }
public async Task SendingRequestProducesEvents() { var handler = new MockHttpClientHandler(httpRequestMessage => { var response = new HttpResponseMessage((HttpStatusCode)500); response.Content = new ByteArrayContent(new byte[] { 6, 7, 8, 9, 0 }); response.Headers.Add("Custom-Response-Header", "Improved value"); return(Task.FromResult(response)); }); var transport = new HttpClientTransport(new HttpClient(handler)); var options = new HttpPipelineOptions(transport) { LoggingPolicy = LoggingPolicy.Shared }; var pipeline = options.Build("test", "1.0.0"); string requestId; using (var request = pipeline.CreateRequest()) { request.SetRequestLine(HttpVerb.Get, new Uri("https://contoso.a.io")); request.AddHeader("Date", "3/26/2019"); request.AddHeader("Custom-Header", "Value"); request.Content = HttpPipelineRequestContent.Create(new byte[] { 1, 2, 3, 4, 5 }); requestId = request.RequestId; var response = await pipeline.SendRequestAsync(request, CancellationToken.None); Assert.AreEqual(500, response.Status); } var e = _listener.SingleEventById(1); Assert.AreEqual(EventLevel.Informational, e.Level); Assert.AreEqual("Request", e.EventName); Assert.AreEqual(requestId, e.GetProperty <string>("requestId")); Assert.AreEqual("https://contoso.a.io/", e.GetProperty <string>("uri")); Assert.AreEqual("GET", e.GetProperty <string>("method")); StringAssert.Contains($"Date:3/26/2019{Environment.NewLine}", e.GetProperty <string>("headers")); StringAssert.Contains($"Custom-Header:Value{Environment.NewLine}", e.GetProperty <string>("headers")); e = _listener.SingleEventById(2); Assert.AreEqual(EventLevel.Verbose, e.Level); Assert.AreEqual("RequestContent", e.EventName); Assert.AreEqual(requestId, e.GetProperty <string>("requestId")); CollectionAssert.AreEqual(new byte[] { 1, 2, 3, 4, 5 }, e.GetProperty <byte[]>("content")); e = _listener.SingleEventById(5); Assert.AreEqual(EventLevel.Informational, e.Level); Assert.AreEqual("Response", e.EventName); Assert.AreEqual(requestId, e.GetProperty <string>("requestId")); Assert.AreEqual(e.GetProperty <int>("status"), 500); StringAssert.Contains($"Custom-Response-Header:Improved value{Environment.NewLine}", e.GetProperty <string>("headers")); e = _listener.SingleEventById(6); Assert.AreEqual(EventLevel.Verbose, e.Level); Assert.AreEqual("ResponseContent", e.EventName); Assert.AreEqual(requestId, e.GetProperty <string>("requestId")); CollectionAssert.AreEqual(new byte[] { 6, 7, 8, 9, 0 }, e.GetProperty <byte[]>("content")); e = _listener.SingleEventById(8); Assert.AreEqual(EventLevel.Error, e.Level); Assert.AreEqual("ErrorResponse", e.EventName); Assert.AreEqual(requestId, e.GetProperty <string>("requestId")); Assert.AreEqual(e.GetProperty <int>("status"), 500); StringAssert.Contains($"Custom-Response-Header:Improved value{Environment.NewLine}", e.GetProperty <string>("headers")); e = _listener.SingleEventById(9); Assert.AreEqual(EventLevel.Informational, e.Level); Assert.AreEqual("ErrorResponseContent", e.EventName); Assert.AreEqual(requestId, e.GetProperty <string>("requestId")); CollectionAssert.AreEqual(new byte[] { 6, 7, 8, 9, 0 }, e.GetProperty <byte[]>("content")); }
public async Task SendingRequestProducesEvents() { var handler = new MockHttpClientHandler(httpRequestMessage => { var response = new HttpResponseMessage((HttpStatusCode)500); response.Content = new ByteArrayContent(new byte[] { 6, 7, 8, 9, 0 }); response.Headers.Add("Custom-Response-Header", "Improved value"); return(Task.FromResult(response)); }); var transport = new HttpClientTransport(new HttpClient(handler)); var options = new HttpPipelineOptions(transport) { LoggingPolicy = LoggingPolicy.Shared }; var pipeline = options.Build("test", "1.0.0"); string requestId; using (var request = pipeline.CreateRequest()) { request.SetRequestLine(HttpVerb.Get, new Uri("https://contoso.a.io")); request.AddHeader("Date", "3/26/2019"); request.AddHeader("Custom-Header", "Value"); request.Content = HttpPipelineRequestContent.Create(new byte[] { 1, 2, 3, 4, 5 }); requestId = request.RequestId; var response = await pipeline.SendRequestAsync(request, CancellationToken.None); Assert.AreEqual(500, response.Status); } Assert.True(_listener.EventData.Any(e => e.EventId == 1 && e.Level == EventLevel.Informational && e.EventName == "Request" && GetStringProperty(e, "requestId").Equals(requestId) && GetStringProperty(e, "uri").Equals("https://contoso.a.io/") && GetStringProperty(e, "method").Equals("GET") && GetStringProperty(e, "headers").Contains($"Date:3/26/2019{Environment.NewLine}") && GetStringProperty(e, "headers").Contains($"Custom-Header:Value{Environment.NewLine}") )); Assert.True(_listener.EventData.Any(e => e.EventId == 2 && e.Level == EventLevel.Verbose && e.EventName == "RequestContent" && GetStringProperty(e, "requestId").Equals(requestId) && ((byte[])GetProperty(e, "content")).SequenceEqual(new byte[] { 1, 2, 3, 4, 5 })) ); Assert.True(_listener.EventData.Any(e => e.EventId == 5 && e.Level == EventLevel.Informational && e.EventName == "Response" && GetStringProperty(e, "requestId").Equals(requestId) && (int)GetProperty(e, "status") == 500 && GetStringProperty(e, "headers").Contains($"Custom-Response-Header:Improved value{Environment.NewLine}") )); Assert.True(_listener.EventData.Any(e => e.EventId == 6 && e.Level == EventLevel.Verbose && e.EventName == "ResponseContent" && GetStringProperty(e, "requestId").Equals(requestId) && ((byte[])GetProperty(e, "content")).SequenceEqual(new byte[] { 6, 7, 8, 9, 0 })) ); Assert.True(_listener.EventData.Any(e => e.EventId == 8 && e.Level == EventLevel.Error && e.EventName == "ErrorResponse" && GetStringProperty(e, "requestId").Equals(requestId) && (int)GetProperty(e, "status") == 500 && GetStringProperty(e, "headers").Contains($"Custom-Response-Header:Improved value{Environment.NewLine}") )); Assert.True(_listener.EventData.Any(e => e.EventId == 9 && e.Level == EventLevel.Informational && e.EventName == "ErrorResponseContent" && GetStringProperty(e, "requestId").Equals(requestId) && ((byte[])GetProperty(e, "content")).SequenceEqual(new byte[] { 6, 7, 8, 9, 0 })) ); }