public async Task DestinationThrows_Reported() { var source = new MemoryStream(new byte[10]); var destination = new ThrowStream(); var proxyTelemetryContext = new StreamCopyTelemetryContext( direction: "upstream", clusterId: "be1", routeId: "rt1", destinationId: "d1"); var sut = new StreamCopier(_metrics, in proxyTelemetryContext); var(result, error) = await sut.CopyAsync(source, destination, CancellationToken.None); Assert.Equal(StreamCopyResult.OutputError, result); Assert.IsAssignableFrom <IOException>(error); }
public async Task Cancelled_Reported() { var source = new MemoryStream(new byte[10]); var destination = new MemoryStream(); var proxyTelemetryContext = new StreamCopyTelemetryContext( direction: "upstream", clusterId: "be1", routeId: "rt1", destinationId: "d1"); var sut = new StreamCopier(_metrics, in proxyTelemetryContext); var(result, error) = await sut.CopyAsync(source, destination, new CancellationToken(canceled : true)); Assert.Equal(StreamCopyResult.Canceled, result); Assert.IsAssignableFrom <OperationCanceledException>(error); }
public async Task CopyAsync_Works() { const int SourceSize = (128 * 1024) - 3; var sourceBytes = Enumerable.Range(0, SourceSize).Select(i => (byte)(i % 256)).ToArray(); var source = new MemoryStream(sourceBytes); var destination = new MemoryStream(); var proxyTelemetryContext = new StreamCopyTelemetryContext( direction: "upstream", clusterId: "be1", routeId: "rt1", destinationId: "d1"); var sut = new StreamCopier(_metrics, in proxyTelemetryContext); await sut.CopyAsync(source, destination, CancellationToken.None); Assert.Equal(sourceBytes, destination.ToArray()); Assert.Equal("StreamCopyBytes=131069;direction=upstream;clusterId=be1;routeId=rt1;destinationId=d1;protocol=", _metricCreator.MetricsLogged[0]); Assert.Equal("StreamCopyIops=2;direction=upstream;clusterId=be1;routeId=rt1;destinationId=d1;protocol=", _metricCreator.MetricsLogged[1]); }
public async Task CopyAsync_Works() { // Arrange const int SourceSize = (128 * 1024) - 3; var sourceBytes = Enumerable.Range(0, SourceSize).Select(i => (byte)(i % 256)).ToArray(); var source = new MemoryStream(sourceBytes); var destination = new MemoryStream(); var proxyTelemetryContext = new StreamCopyTelemetryContext( direction: "upstream", backendId: "be1", routeId: "rt1", endpointId: "ep1"); var sut = new StreamCopier(_metrics, in proxyTelemetryContext); // Act await sut.CopyAsync(source, destination, CancellationToken.None); // Assert destination.ToArray().Should().BeEquivalentTo(sourceBytes); _metricCreator.MetricsLogged.Should().BeEquivalentTo( "StreamCopyBytes=131069;direction=upstream;backendId=be1;routeId=rt1;endpointId=ep1;protocol=", "StreamCopyIops=2;direction=upstream;backendId=be1;routeId=rt1;endpointId=ep1;protocol="); }