mirror of
https://github.com/ostreedev/ostree.git
synced 2025-01-25 10:04:14 +03:00
c9619a4904
Extend test-pull-repeated.sh to test error 408 as well as error 500, to ensure that the new retry-on-network-timeout code in ostree-repo-pull.c correctly retries. Rather than the 200 iterations needed for the error 500 tests, only do 5 iterations. The pull code internally does 5 retries (by default), which means a full iteration count of 25. That seems to be sufficient to make the tests reliably pass, in my testing — we can always bump it up to 200 / 5 = 40 in future if needed (to put it in parity with the error 500 tests). Signed-off-by: Philip Withnall <withnall@endlessm.com> Closes: #1594 Approved by: jlebon
70 lines
2.3 KiB
Bash
Executable File
70 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (C) 2016 Red Hat
|
|
#
|
|
# SPDX-License-Identifier: LGPL-2.0+
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2 of the License, or (at your option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, write to the
|
|
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
# Boston, MA 02111-1307, USA.
|
|
|
|
set -euo pipefail
|
|
|
|
. $(dirname $0)/libtest.sh
|
|
|
|
echo "1..2"
|
|
|
|
COMMIT_SIGN="--gpg-homedir=${TEST_GPG_KEYHOME} --gpg-sign=${TEST_GPG_KEYID_1}"
|
|
|
|
# Test pulling from a repo which gives error 500 (internal server error) a lot of the time.
|
|
setup_fake_remote_repo1 "archive" "${COMMIT_SIGN}" --random-500s=50
|
|
|
|
pushd ${test_tmpdir}
|
|
ostree_repo_init repo --mode=archive
|
|
${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin $(cat httpd-address)/ostree/gnomerepo
|
|
for x in $(seq 200); do
|
|
if ${CMD_PREFIX} ostree --repo=repo pull --mirror origin main 2>err.txt; then
|
|
echo "Success on iteration ${x}"
|
|
break;
|
|
fi
|
|
assert_file_has_content err.txt "\(500.*Internal Server Error\)\|\(HTTP 500\)"
|
|
done
|
|
|
|
${CMD_PREFIX} ostree --repo=repo fsck
|
|
${CMD_PREFIX} ostree --repo=repo rev-parse main
|
|
|
|
popd
|
|
echo "ok repeated pull after 500s"
|
|
|
|
# Now test from a repo which gives error 408 (request timeout) a lot of the time.
|
|
rm ostree-srv httpd repo -rf
|
|
setup_fake_remote_repo1 "archive" "${COMMIT_SIGN}" --random-408s=50
|
|
|
|
pushd ${test_tmpdir}
|
|
ostree_repo_init repo --mode=archive
|
|
${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin $(cat httpd-address)/ostree/gnomerepo
|
|
for x in $(seq 40); do
|
|
if ${CMD_PREFIX} ostree --repo=repo pull --mirror origin main 2>err.txt; then
|
|
echo "Success on iteration ${x}"
|
|
break;
|
|
fi
|
|
assert_file_has_content err.txt "\(408.*Request Timeout\)\|\(HTTP 408\)"
|
|
done
|
|
|
|
${CMD_PREFIX} ostree --repo=repo fsck
|
|
${CMD_PREFIX} ostree --repo=repo rev-parse main
|
|
|
|
popd
|
|
echo "ok repeated pull after 408s"
|