public void FailureResponseCode429() { var activity = CreateActivity("TestActivity"); var telemetryItem = CreateTelemetryItem(activity); List <TelemetryItem> telemetryItems = new List <TelemetryItem>(); telemetryItems.Add(telemetryItem); using var testServer = new LocalEndpoint(testEndpoint); testServer.ServerLogic = async(httpContext) => { httpContext.Response.StatusCode = 429; httpContext.Response.Headers.Add("Retry-After", "6"); await httpContext.Response.WriteAsync("Too Many Requests"); }; // Transmit var transmitter = GetTransmitter(); transmitter.TrackAsync(telemetryItems, false, CancellationToken.None).EnsureCompleted(); // Wait for maintenance job to run atleast once Thread.Sleep(15000); //Assert Assert.Single(transmitter._storage.GetBlobs()); // Delete the blob transmitter._storage.GetBlob().Lease(1000).Delete(); }
public void Success200() { var activity = CreateActivity("TestActivity"); var telemetryItem = CreateTelemetryItem(activity); List <TelemetryItem> telemetryItems = new List <TelemetryItem>(); telemetryItems.Add(telemetryItem); using var testServer = new LocalEndpoint(testEndpoint); testServer.ServerLogic = async(httpContext) => { httpContext.Response.StatusCode = 200; await httpContext.Response.WriteAsync("Ok"); }; // Transmit var transmitter = GetTransmitter(); transmitter.TrackAsync(telemetryItems, false, CancellationToken.None).EnsureCompleted(); // Wait for maintenance job to run atleast once Thread.Sleep(15000); //Assert Assert.Empty(transmitter._storage.GetBlobs()); }
public void FailureResponseCode206() { var activity1 = CreateActivity("TestActivity1"); var activity2 = CreateActivity("TestActivity1"); var activity3 = CreateActivity("TestActivity1"); var telemetryItem1 = CreateTelemetryItem(activity1); var telemetryItem2 = CreateTelemetryItem(activity1); var telemetryItem3 = CreateTelemetryItem(activity1); List <TelemetryItem> telemetryItems = new List <TelemetryItem>(); telemetryItems.Add(telemetryItem1); telemetryItems.Add(telemetryItem2); telemetryItems.Add(telemetryItem3); using var testServer = new LocalEndpoint(testEndpoint); testServer.ServerLogic = async(httpContext) => { httpContext.Response.StatusCode = 206; httpContext.Response.Headers.Add("Retry-After", "6"); await httpContext.Response.WriteAsync("{\"itemsReceived\": 3,\"itemsAccepted\": 1,\"errors\":[{\"index\": 0,\"statusCode\": 429,\"message\": \"Throttle\"},{\"index\": 1,\"statusCode\": 429,\"message\": \"Throttle\"}]}"); }; // Transmit var transmitter = GetTransmitter(); transmitter.TrackAsync(telemetryItems, false, CancellationToken.None).EnsureCompleted(); // Wait for maintenance job to run atleast once Thread.Sleep(15000); //Assert Assert.Single(transmitter._storage.GetBlobs()); var failedData = System.Text.Encoding.UTF8.GetString(transmitter._storage.GetBlob().Read()); string[] items = failedData.Split('\n'); //Assert Assert.Equal(2, items.Count()); // Delete the blob transmitter._storage.GetBlob().Lease(1000).Delete(); }
public void TransmitFromStorage() { var activity = CreateActivity("TestActivity"); var telemetryItem = CreateTelemetryItem(activity); List <TelemetryItem> telemetryItems = new List <TelemetryItem>(); telemetryItems.Add(telemetryItem); using var testServer = new LocalEndpoint(testEndpoint); testServer.ServerLogic = async(httpContext) => { httpContext.Response.StatusCode = 500; await httpContext.Response.WriteAsync("Internal Server Error"); }; // Transmit var transmitter = GetTransmitter(); transmitter.TrackAsync(telemetryItems, false, CancellationToken.None).EnsureCompleted(); // Wait for maintenance job to run atleast once Thread.Sleep(15000); //Assert Assert.Single(transmitter._storage.GetBlobs()); // reset server logic to return 200 testServer.ServerLogic = async(httpContext) => { httpContext.Response.StatusCode = 200; await httpContext.Response.WriteAsync("{\"itemsReceived\": 1,\"itemsAccepted\": 1,\"errors\":[]}"); }; transmitter.TransmitFromStorage(1, false, CancellationToken.None).EnsureCompleted(); // Assert // Blob will be deleted on successful transmission Assert.Empty(transmitter._storage.GetBlobs()); }