public async Task GetContainerStatsAsyncWithInvalidResponseReturnsNull(string responseContent) { // Arrange var serializerProvider = new EcsTaskMetadataSerializerProvider(); var baseAddressProviderMock = new Mock <IEcsTaskMetadataBaseAddressProvider>(MockBehavior.Strict); baseAddressProviderMock .SetupGet(o => o.BaseAddress) .Returns(new Uri(BASE_ADDRESS, UriKind.Absolute)); using var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(responseContent, Encoding.UTF8, "application/json"), }; var httpRequestMessages = new List <HttpRequestMessage>(); var httpMessageHandlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict); httpMessageHandlerMock .As <IDisposable>() .Setup(o => o.Dispose()); httpMessageHandlerMock .Protected() .As <IHttpMessageHandlerProtectedMembers>() .Setup(o => o.Dispose(It.IsAny <bool>())); httpMessageHandlerMock .Protected() .As <IHttpMessageHandlerProtectedMembers>() .Setup(o => o.SendAsync(Capture.In(httpRequestMessages), It.IsAny <CancellationToken>())) .ReturnsAsync(httpResponseMessage); using var httpClient = new HttpClient(httpMessageHandlerMock.Object); var client = new EcsTaskMetadataClient(httpClient, baseAddressProviderMock.Object, serializerProvider, new Logger <EcsTaskMetadataClient>(this.loggerFactory)); // Act var stats = await client.GetContainerStatsAsync(CancellationToken.None).ConfigureAwait(true); // Assert Assert.Null(stats); var httpRequestMessage = Assert.Single(httpRequestMessages); Assert.NotNull(httpRequestMessage); Assert.Equal("http://localhost/v3/stats", httpRequestMessage?.RequestUri?.AbsoluteUri); }
public async Task GetContainerStatsAsyncWithOkResponseReturnsNotNull() { // Arrange var serializerProvider = new EcsTaskMetadataSerializerProvider(); var baseAddressProviderMock = new Mock <IEcsTaskMetadataBaseAddressProvider>(MockBehavior.Strict); baseAddressProviderMock .SetupGet(o => o.BaseAddress) .Returns(new Uri(BASE_ADDRESS, UriKind.Absolute)); using var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent( "{\"cpu_stats\":{\"cpu_usage\":{\"total_usage\":2000},\"system_cpu_usage\":200000}," + "\"memory_stats\":{\"limit\":25000,\"usage\":2500},\"precpu_stats\":{\"cpu_usage\":" + "{\"total_usage\":1000},\"system_cpu_usage\":100000}}", Encoding.UTF8, "application/json"), }; var httpRequestMessages = new List <HttpRequestMessage>(); var httpMessageHandlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict); httpMessageHandlerMock .As <IDisposable>() .Setup(o => o.Dispose()); httpMessageHandlerMock .Protected() .As <IHttpMessageHandlerProtectedMembers>() .Setup(o => o.Dispose(It.IsAny <bool>())); httpMessageHandlerMock .Protected() .As <IHttpMessageHandlerProtectedMembers>() .Setup(o => o.SendAsync(Capture.In(httpRequestMessages), It.IsAny <CancellationToken>())) .ReturnsAsync(httpResponseMessage); using var httpClient = new HttpClient(httpMessageHandlerMock.Object); var client = new EcsTaskMetadataClient(httpClient, baseAddressProviderMock.Object, serializerProvider, new Logger <EcsTaskMetadataClient>(this.loggerFactory)); // Act var stats = await client.GetContainerStatsAsync(CancellationToken.None).ConfigureAwait(true); // Assert Assert.NotNull(stats); Assert.NotNull(stats !.CpuStats); Assert.NotNull(stats !.CpuStats !.CpuUsage); Assert.True(stats !.CpuStats !.CpuUsage !.TotalUsage.HasValue); Assert.Equal((ulong)2000, stats !.CpuStats !.CpuUsage !.TotalUsage !.Value); Assert.True(stats !.CpuStats !.SystemCpuUsage.HasValue); Assert.Equal((ulong)200000, stats !.CpuStats !.SystemCpuUsage !.Value); Assert.NotNull(stats !.MemoryStats); Assert.True(stats !.MemoryStats !.Limit.HasValue); Assert.Equal((ulong)25000, stats !.MemoryStats !.Limit !.Value); Assert.True(stats !.MemoryStats !.Usage.HasValue); Assert.Equal((ulong)2500, stats !.MemoryStats !.Usage !.Value); Assert.NotNull(stats !.PreviousCpuStats); Assert.NotNull(stats !.PreviousCpuStats !.CpuUsage); Assert.True(stats !.PreviousCpuStats !.CpuUsage !.TotalUsage.HasValue); Assert.Equal((ulong)1000, stats !.PreviousCpuStats !.CpuUsage !.TotalUsage !.Value); Assert.True(stats !.PreviousCpuStats !.SystemCpuUsage.HasValue); Assert.Equal((ulong)100000, stats !.PreviousCpuStats !.SystemCpuUsage !.Value); var httpRequestMessage = Assert.Single(httpRequestMessages); Assert.NotNull(httpRequestMessage); Assert.Equal("http://localhost/v3/stats", httpRequestMessage?.RequestUri?.AbsoluteUri); }