diff options
Diffstat (limited to 'test')
| -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; } |
