summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2024-11-18 13:52:58 +0000
committerJulian Andres Klode <jak@debian.org>2024-11-18 13:52:58 +0000
commit39de3df0774dce8f858cbce384ac63d50c632f5f (patch)
tree93b78b07910e9c072ef6f2b65f361de20da4a4d8 /test
parentdb57773a96d1108bdad78ff3d1359a88d9689912 (diff)
parentcabcaf3c326408bf71a9a83f51973214fddcefb1 (diff)
Merge branch 'fm/apt-rate-limit' into 'main'
http: use Retry-After HTTP header to optimize retries See merge request apt-team/apt!383
Diffstat (limited to 'test')
-rwxr-xr-xtest/integration/test-bug-869859-retry-downloads9
-rw-r--r--test/interactive-helper/aptwebserver.cc6
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;
}