Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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=");
        }