Example #1
0
        public async Task HttpSource_TimesOutDownload()
        {
            // Arrange
            using (var td = TestDirectory.Create())
            {
                var expectedMilliseconds = 250;
                var server = new TcpListenerServer
                {
                    Mode          = TestServerMode.SlowResponseBody,
                    SleepDuration = TimeSpan.FromSeconds(10)
                };
                var packageSource   = new PackageSource(FakeSource);
                var handler         = new HttpClientHandler();
                var handlerResource = new HttpHandlerResourceV3(handler, handler);
                var httpSource      = new HttpSource(
                    packageSource,
                    () => Task.FromResult((HttpHandlerResource)handlerResource),
                    NullThrottle.Instance)
                {
                    HttpCacheDirectory = td
                };
                var logger = new TestLogger();

                // Act & Assert
                var actual = await Assert.ThrowsAsync <IOException>(() =>
                                                                    server.ExecuteAsync(uri => httpSource.GetJObjectAsync(
                                                                                            new HttpSourceRequest(uri, logger)
                {
                    DownloadTimeout = TimeSpan.FromMilliseconds(expectedMilliseconds)
                },
                                                                                            logger,
                                                                                            CancellationToken.None)));

                Assert.IsType <TimeoutException>(actual.InnerException);
                Assert.EndsWith(
                    $"timed out because no data was received for {expectedMilliseconds}ms.",
                    actual.Message);
            }
        }