diff options
| author | Felix Moessbauer <felix.moessbauer@siemens.com> | 2024-11-13 15:48:43 +0100 |
|---|---|---|
| committer | Felix Moessbauer <felix.moessbauer@siemens.com> | 2024-11-18 13:44:49 +0100 |
| commit | cabcaf3c326408bf71a9a83f51973214fddcefb1 (patch) | |
| tree | 93b78b07910e9c072ef6f2b65f361de20da4a4d8 | |
| parent | 7b9dea5a7c43fd91bcd23d1585d39a726d098285 (diff) | |
http: add test for Retry-After handling
When enabling Acquire::Retries::HandleRetryAfter, the value of the
Retry-After http header is honored and the retry is not executed earlier
than this point in time (except if that is longer than the max delay
time). The added test checks if the request is delayed at least by the
requested time.
Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
| -rwxr-xr-x | test/integration/test-bug-869859-retry-downloads | 9 | ||||
| -rw-r--r-- | test/interactive-helper/aptwebserver.cc | 6 |
2 files changed, 15 insertions, 0 deletions
diff --git a/test/integration/test-bug-869859-retry-downloads b/test/integration/test-bug-869859-retry-downloads index 4e169b3b9..333ce816e 100755 --- a/test/integration/test-bug-869859-retry-downloads +++ b/test/integration/test-bug-869859-retry-downloads @@ -51,6 +51,15 @@ Err:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/testpkg_1_all.deb 429 Unknown HTTP code" apt download testpkg -o acquire::retries=3 -o debug::acquire::retries=true -q testfailure test -f testpkg_1_all.deb +msgmsg 'Retry 429 TooManyRequests after Retry-After time' +webserverconfig 'aptwebserver::failrequest' '429' +webserverconfig 'aptwebserver::failrequest::retryafter' '5' +webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '1' +testsecondsgreaterequal 5 testsuccess apt download testpkg -o acquire::retries=1 -o acquire::retries::handleretryafter=true -o debug::acquire::retries=true -q +webserverconfig 'aptwebserver::failrequest::retryafter' '0' +testsuccess test -f testpkg_1_all.deb +rm -f testpkg_1_all.deb + msgmsg 'Success in the third try' webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '2' testsuccess apt download testpkg -o acquire::retries=3 -o acquire::retries::delay=false diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc index a61161512..7df4e87ac 100644 --- a/test/interactive-helper/aptwebserver.cc +++ b/test/interactive-helper/aptwebserver.cc @@ -773,10 +773,16 @@ static void * handleClient(int const client, size_t const id) /*{{{*/ // automatic retry can be tested with this { int failrequests = _config->FindI("aptwebserver::failrequest::" + filename, 0); + int retryafter = _config->FindI("aptwebserver::failrequest::retryafter", 0); if (failrequests != 0) { --failrequests; _config->Set(("aptwebserver::failrequest::" + filename).c_str(), failrequests); + if (retryafter != 0) + { + std::string retryafter_hdr = "Retry-After: " + std::to_string(retryafter); + headers.push_back(retryafter_hdr); + } sendError(log, client, _config->FindI("aptwebserver::failrequest", 400), *m, sendContent, "Server is configured to fail this file.", headers); continue; } |
