mirror of
https://github.com/swift-server/async-http-client.git
synced 2026-06-02 07:37:34 +00:00
* Reproducer * Refactor test case * Refactor tests * Remove debugging artefacts * Fix typo * Fix formatting * Remove `promise?.succeed(())` * Add test for HTTP2 request with large header Motivation We currently don't handle large headers well which trigger a channel writability change event. Modification Add failing (but currently skipped) tests which reproduces the issue Result We can reliably reproduce the large request header issue in an integration and unit test. Note that the actual fix is not included to make reviewing easier and will come in a follow up PR. * Remove logging * Fix crash for large HTTP request headers Fix crash for when sending HTTP request headers result in a channel writability change event * Formatting and linux tests * Formatting and linux tests * Generate linux tests * Use previous default max concurrent streams value of 10 * Fix crash if request is canceled after request header is send * generate linux tests and run swift format --------- Co-authored-by: Cory Benfield <lukasa@apple.com>
153 lines
11 KiB
Swift
153 lines
11 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the AsyncHTTPClient open source project
|
|
//
|
|
// Copyright (c) 2018-2019 Apple Inc. and the AsyncHTTPClient project authors
|
|
// Licensed under Apache License v2.0
|
|
//
|
|
// See LICENSE.txt for license information
|
|
// See CONTRIBUTORS.txt for the list of AsyncHTTPClient project authors
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// HTTPClientTests+XCTest.swift
|
|
//
|
|
import XCTest
|
|
|
|
///
|
|
/// NOTE: This file was generated by generate_linux_tests.rb
|
|
///
|
|
/// Do NOT edit this file directly as it will be regenerated automatically when needed.
|
|
///
|
|
|
|
extension HTTPClientTests {
|
|
static var allTests: [(String, (HTTPClientTests) -> () throws -> Void)] {
|
|
return [
|
|
("testRequestURI", testRequestURI),
|
|
("testBadRequestURI", testBadRequestURI),
|
|
("testSchemaCasing", testSchemaCasing),
|
|
("testURLSocketPathInitializers", testURLSocketPathInitializers),
|
|
("testBadUnixWithBaseURL", testBadUnixWithBaseURL),
|
|
("testConvenienceExecuteMethods", testConvenienceExecuteMethods),
|
|
("testConvenienceExecuteMethodsOverSocket", testConvenienceExecuteMethodsOverSocket),
|
|
("testConvenienceExecuteMethodsOverSecureSocket", testConvenienceExecuteMethodsOverSecureSocket),
|
|
("testGet", testGet),
|
|
("testGetWithDifferentEventLoopBackpressure", testGetWithDifferentEventLoopBackpressure),
|
|
("testPost", testPost),
|
|
("testPostWithGenericBody", testPostWithGenericBody),
|
|
("testPostWithFoundationDataBody", testPostWithFoundationDataBody),
|
|
("testGetHttps", testGetHttps),
|
|
("testGetHttpsWithIP", testGetHttpsWithIP),
|
|
("testGetHTTPSWorksOnMTELGWithIP", testGetHTTPSWorksOnMTELGWithIP),
|
|
("testGetHttpsWithIPv6", testGetHttpsWithIPv6),
|
|
("testGetHTTPSWorksOnMTELGWithIPv6", testGetHTTPSWorksOnMTELGWithIPv6),
|
|
("testPostHttps", testPostHttps),
|
|
("testHttpRedirect", testHttpRedirect),
|
|
("testHttpHostRedirect", testHttpHostRedirect),
|
|
("testPercentEncoded", testPercentEncoded),
|
|
("testPercentEncodedBackslash", testPercentEncodedBackslash),
|
|
("testMultipleContentLengthHeaders", testMultipleContentLengthHeaders),
|
|
("testStreaming", testStreaming),
|
|
("testFileDownload", testFileDownload),
|
|
("testFileDownloadError", testFileDownloadError),
|
|
("testRemoteClose", testRemoteClose),
|
|
("testReadTimeout", testReadTimeout),
|
|
("testConnectTimeout", testConnectTimeout),
|
|
("testDeadline", testDeadline),
|
|
("testCancel", testCancel),
|
|
("testStressCancel", testStressCancel),
|
|
("testHTTPClientAuthorization", testHTTPClientAuthorization),
|
|
("testProxyPlaintext", testProxyPlaintext),
|
|
("testProxyTLS", testProxyTLS),
|
|
("testProxyPlaintextWithCorrectlyAuthorization", testProxyPlaintextWithCorrectlyAuthorization),
|
|
("testProxyPlaintextWithIncorrectlyAuthorization", testProxyPlaintextWithIncorrectlyAuthorization),
|
|
("testUploadStreaming", testUploadStreaming),
|
|
("testEventLoopArgument", testEventLoopArgument),
|
|
("testDecompression", testDecompression),
|
|
("testDecompressionHTTP2", testDecompressionHTTP2),
|
|
("testDecompressionLimit", testDecompressionLimit),
|
|
("testLoopDetectionRedirectLimit", testLoopDetectionRedirectLimit),
|
|
("testCountRedirectLimit", testCountRedirectLimit),
|
|
("testRedirectToTheInitialURLDoesThrowOnFirstRedirect", testRedirectToTheInitialURLDoesThrowOnFirstRedirect),
|
|
("testMultipleConcurrentRequests", testMultipleConcurrentRequests),
|
|
("testWorksWith500Error", testWorksWith500Error),
|
|
("testWorksWithHTTP10Response", testWorksWithHTTP10Response),
|
|
("testWorksWhenServerClosesConnectionAfterReceivingRequest", testWorksWhenServerClosesConnectionAfterReceivingRequest),
|
|
("testSubsequentRequestsWorkWithServerSendingConnectionClose", testSubsequentRequestsWorkWithServerSendingConnectionClose),
|
|
("testSubsequentRequestsWorkWithServerAlternatingBetweenKeepAliveAndClose", testSubsequentRequestsWorkWithServerAlternatingBetweenKeepAliveAndClose),
|
|
("testStressGetHttpsSSLError", testStressGetHttpsSSLError),
|
|
("testSelfSignedCertificateIsRejectedWithCorrectError", testSelfSignedCertificateIsRejectedWithCorrectError),
|
|
("testSelfSignedCertificateIsRejectedWithCorrectErrorIfRequestDeadlineIsExceeded", testSelfSignedCertificateIsRejectedWithCorrectErrorIfRequestDeadlineIsExceeded),
|
|
("testFailingConnectionIsReleased", testFailingConnectionIsReleased),
|
|
("testStressGetClose", testStressGetClose),
|
|
("testManyConcurrentRequestsWork", testManyConcurrentRequestsWork),
|
|
("testRepeatedRequestsWorkWhenServerAlwaysCloses", testRepeatedRequestsWorkWhenServerAlwaysCloses),
|
|
("testShutdownBeforeTasksCompletion", testShutdownBeforeTasksCompletion),
|
|
("testUncleanShutdownActuallyShutsDown", testUncleanShutdownActuallyShutsDown),
|
|
("testUncleanShutdownCancelsTasks", testUncleanShutdownCancelsTasks),
|
|
("testDoubleShutdown", testDoubleShutdown),
|
|
("testTaskFailsWhenClientIsShutdown", testTaskFailsWhenClientIsShutdown),
|
|
("testRaceNewRequestsVsShutdown", testRaceNewRequestsVsShutdown),
|
|
("testVaryingLoopPreference", testVaryingLoopPreference),
|
|
("testMakeSecondRequestDuringCancelledCallout", testMakeSecondRequestDuringCancelledCallout),
|
|
("testMakeSecondRequestDuringSuccessCallout", testMakeSecondRequestDuringSuccessCallout),
|
|
("testMakeSecondRequestWhilstFirstIsOngoing", testMakeSecondRequestWhilstFirstIsOngoing),
|
|
("testUDSBasic", testUDSBasic),
|
|
("testUDSSocketAndPath", testUDSSocketAndPath),
|
|
("testHTTPPlusUNIX", testHTTPPlusUNIX),
|
|
("testHTTPSPlusUNIX", testHTTPSPlusUNIX),
|
|
("testUseExistingConnectionOnDifferentEL", testUseExistingConnectionOnDifferentEL),
|
|
("testWeRecoverFromServerThatClosesTheConnectionOnUs", testWeRecoverFromServerThatClosesTheConnectionOnUs),
|
|
("testPoolClosesIdleConnections", testPoolClosesIdleConnections),
|
|
("testAvoidLeakingTLSHandshakeCompletionPromise", testAvoidLeakingTLSHandshakeCompletionPromise),
|
|
("testAsyncShutdown", testAsyncShutdown),
|
|
("testAsyncShutdownDefaultQueue", testAsyncShutdownDefaultQueue),
|
|
("testValidationErrorsAreSurfaced", testValidationErrorsAreSurfaced),
|
|
("testUploadsReallyStream", testUploadsReallyStream),
|
|
("testUploadStreamingCallinToleratedFromOtsideEL", testUploadStreamingCallinToleratedFromOtsideEL),
|
|
("testWeHandleUsSendingACloseHeaderCorrectly", testWeHandleUsSendingACloseHeaderCorrectly),
|
|
("testWeHandleUsReceivingACloseHeaderCorrectly", testWeHandleUsReceivingACloseHeaderCorrectly),
|
|
("testWeHandleUsSendingACloseHeaderAmongstOtherConnectionHeadersCorrectly", testWeHandleUsSendingACloseHeaderAmongstOtherConnectionHeadersCorrectly),
|
|
("testWeHandleUsReceivingACloseHeaderAmongstOtherConnectionHeadersCorrectly", testWeHandleUsReceivingACloseHeaderAmongstOtherConnectionHeadersCorrectly),
|
|
("testLoggingCorrectlyAttachesRequestInformationEvenAfterDuringRedirect", testLoggingCorrectlyAttachesRequestInformationEvenAfterDuringRedirect),
|
|
("testLoggingCorrectlyAttachesRequestInformation", testLoggingCorrectlyAttachesRequestInformation),
|
|
("testNothingIsLoggedAtInfoOrHigher", testNothingIsLoggedAtInfoOrHigher),
|
|
("testAllMethodsLog", testAllMethodsLog),
|
|
("testClosingIdleConnectionsInPoolLogsInTheBackground", testClosingIdleConnectionsInPoolLogsInTheBackground),
|
|
("testUploadStreamingNoLength", testUploadStreamingNoLength),
|
|
("testConnectErrorPropagatedToDelegate", testConnectErrorPropagatedToDelegate),
|
|
("testDelegateCallinsTolerateRandomEL", testDelegateCallinsTolerateRandomEL),
|
|
("testContentLengthTooLongFails", testContentLengthTooLongFails),
|
|
("testContentLengthTooShortFails", testContentLengthTooShortFails),
|
|
("testBodyUploadAfterEndFails", testBodyUploadAfterEndFails),
|
|
("testDoubleError", testDoubleError),
|
|
("testSSLHandshakeErrorPropagation", testSSLHandshakeErrorPropagation),
|
|
("testSSLHandshakeErrorPropagationDelayedClose", testSSLHandshakeErrorPropagationDelayedClose),
|
|
("testWeCloseConnectionsWhenConnectionCloseSetByServer", testWeCloseConnectionsWhenConnectionCloseSetByServer),
|
|
("testBiDirectionalStreaming", testBiDirectionalStreaming),
|
|
("testResponseAccumulatorMaxBodySizeLimitExceedingWithContentLength", testResponseAccumulatorMaxBodySizeLimitExceedingWithContentLength),
|
|
("testResponseAccumulatorMaxBodySizeLimitNotExceedingWithContentLength", testResponseAccumulatorMaxBodySizeLimitNotExceedingWithContentLength),
|
|
("testResponseAccumulatorMaxBodySizeLimitExceedingWithContentLengthButMethodIsHead", testResponseAccumulatorMaxBodySizeLimitExceedingWithContentLengthButMethodIsHead),
|
|
("testResponseAccumulatorMaxBodySizeLimitExceedingWithTransferEncodingChuncked", testResponseAccumulatorMaxBodySizeLimitExceedingWithTransferEncodingChuncked),
|
|
("testResponseAccumulatorMaxBodySizeLimitNotExceedingWithTransferEncodingChuncked", testResponseAccumulatorMaxBodySizeLimitNotExceedingWithTransferEncodingChuncked),
|
|
("testBiDirectionalStreamingEarly200", testBiDirectionalStreamingEarly200),
|
|
("testBiDirectionalStreamingEarly200DoesntPreventUsFromSendingMoreRequests", testBiDirectionalStreamingEarly200DoesntPreventUsFromSendingMoreRequests),
|
|
("testCloseConnectionAfterEarly2XXWhenStreaming", testCloseConnectionAfterEarly2XXWhenStreaming),
|
|
("testSynchronousHandshakeErrorReporting", testSynchronousHandshakeErrorReporting),
|
|
("testFileDownloadChunked", testFileDownloadChunked),
|
|
("testCloseWhileBackpressureIsExertedIsFine", testCloseWhileBackpressureIsExertedIsFine),
|
|
("testErrorAfterCloseWhileBackpressureExerted", testErrorAfterCloseWhileBackpressureExerted),
|
|
("testRequestSpecificTLS", testRequestSpecificTLS),
|
|
("testRequestWithHeaderTransferEncodingIdentityDoesNotFail", testRequestWithHeaderTransferEncodingIdentityDoesNotFail),
|
|
("testMassiveDownload", testMassiveDownload),
|
|
("testShutdownWithFutures", testShutdownWithFutures),
|
|
("testMassiveHeaderHTTP1", testMassiveHeaderHTTP1),
|
|
("testMassiveHeaderHTTP2", testMassiveHeaderHTTP2),
|
|
("testCancelingHTTP1RequestAfterHeaderSend", testCancelingHTTP1RequestAfterHeaderSend),
|
|
("testCancelingHTTP2RequestAfterHeaderSend", testCancelingHTTP2RequestAfterHeaderSend),
|
|
]
|
|
}
|
|
}
|