summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Lebon <jlebon@redhat.com>2016-08-25 15:34:34 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2016-08-31 16:52:12 +0000
commit661e4636f51823d56412fa09ae75697d9294057b (patch)
treeeba883ba62ed5c2c3d56ef4c3f2aa3160284c848
parentc4c030cc79728820eee6cd19d58f9826a0eab734 (diff)
downloadostree-661e4636f51823d56412fa09ae75697d9294057b.tar.gz
tests: add tests for contenturl and mirrorlist
Closes: #469 Approved by: cgwalters
-rw-r--r--Makefile-tests.am2
-rwxr-xr-xtests/test-pull-contenturl.sh75
-rwxr-xr-xtests/test-pull-mirrorlist.sh106
3 files changed, 183 insertions, 0 deletions
diff --git a/Makefile-tests.am b/Makefile-tests.am
index 80f60add..7d3f4011 100644
--- a/Makefile-tests.am
+++ b/Makefile-tests.am
@@ -88,6 +88,8 @@ dist_test_scripts = \
tests/test-refs.sh \
tests/test-demo-buildsystem.sh \
tests/test-switchroot.sh \
+ tests/test-pull-contenturl.sh \
+ tests/test-pull-mirrorlist.sh \
$(NULL)
if BUILDOPT_FUSE
diff --git a/tests/test-pull-contenturl.sh b/tests/test-pull-contenturl.sh
new file mode 100755
index 00000000..16dcbe4f
--- /dev/null
+++ b/tests/test-pull-contenturl.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+#
+# Copyright (C) 2016 Red Hat, Inc.
+#
+# 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=""
+if has_gpgme; then
+ COMMIT_SIGN="--gpg-homedir=${TEST_GPG_KEYHOME} --gpg-sign=${TEST_GPG_KEYID_1}"
+fi
+
+setup_fake_remote_repo1 "archive-z2" "${COMMIT_SIGN}"
+
+# create a summary
+${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/gnomerepo \
+ summary -u ${COMMIT_SIGN}
+
+# Let's bring up an identical server in which meta files are missing
+cd ${test_tmpdir}
+mkdir httpd-content
+cd httpd-content
+cp -a ${test_tmpdir}/ostree-srv ostree
+
+# delete all the meta stuff from here
+rm ostree/gnomerepo/summary
+if has_gpgme; then
+ rm ostree/gnomerepo/summary.sig
+ find ostree/gnomerepo/objects -name '*.commitmeta' | xargs rm
+fi
+
+# delete all the content stuff from there
+find ${test_tmpdir}/ostree-srv/gnomerepo/objects \
+ ! -name '*.commitmeta' -type f | xargs rm
+
+${CMD_PREFIX} ostree trivial-httpd --autoexit --daemonize \
+ -p ${test_tmpdir}/httpd-content-port
+content_port=$(cat ${test_tmpdir}/httpd-content-port)
+echo "http://127.0.0.1:${content_port}" > ${test_tmpdir}/httpd-content-address
+
+cd ${test_tmpdir}
+mkdir repo
+${CMD_PREFIX} ostree --repo=repo init
+if has_gpgme; then VERIFY=true; else VERIFY=false; fi
+${CMD_PREFIX} ostree --repo=repo remote add origin \
+ --set=gpg-verify=$VERIFY --set=gpg-verify-summary=$VERIFY \
+ --contenturl=$(cat httpd-content-address)/ostree/gnomerepo \
+ $(cat httpd-address)/ostree/gnomerepo
+${CMD_PREFIX} ostree --repo=repo pull origin:main
+
+echo "ok pull objects from contenturl"
+
+if ! has_gpgme; then
+ echo "ok don't pull sigs from contenturl # SKIP not compiled with gpgme"
+else
+ echo "ok don't pull sigs from contenturl"
+fi
diff --git a/tests/test-pull-mirrorlist.sh b/tests/test-pull-mirrorlist.sh
new file mode 100755
index 00000000..454014ca
--- /dev/null
+++ b/tests/test-pull-mirrorlist.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+#
+# Copyright (C) 2016 Red Hat, Inc.
+#
+# 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..3"
+
+setup_fake_remote_repo1 "archive-z2"
+
+setup_mirror () {
+ name=$1; shift
+
+ cd ${test_tmpdir}
+ mkdir $name
+ cd $name
+ cp -a ${test_tmpdir}/ostree-srv ostree
+
+ ${CMD_PREFIX} ostree trivial-httpd --autoexit --daemonize \
+ -p ${test_tmpdir}/${name}-port
+ port=$(cat ${test_tmpdir}/${name}-port)
+ echo "http://127.0.0.1:${port}" > ${test_tmpdir}/${name}-address
+}
+
+setup_mirror content_mirror1
+setup_mirror content_mirror2
+setup_mirror content_mirror3
+
+# Let's delete a file from 1 so that it falls back on 2
+cd ${test_tmpdir}/content_mirror1/ostree/gnomerepo
+filez=$(find objects/ -name '*.filez' | head -n 1)
+rm ${filez}
+
+# Let's delete a file from 1 and 2 so that it falls back on 3
+cd ${test_tmpdir}/content_mirror1/ostree/gnomerepo
+filez=$(find objects/ -name '*.filez' | head -n 1)
+rm ${filez}
+cd ${test_tmpdir}/content_mirror2/ostree/gnomerepo
+rm ${filez}
+
+# OK, let's just shove the mirrorlist in the first httpd
+cat > ${test_tmpdir}/ostree-srv/mirrorlist <<EOF
+
+# comment with empty lines around
+
+http://example.com/nonexistent
+
+$(cat ${test_tmpdir}/content_mirror1-address)/ostree/gnomerepo
+$(cat ${test_tmpdir}/content_mirror2-address)/ostree/gnomerepo
+$(cat ${test_tmpdir}/content_mirror3-address)/ostree/gnomerepo
+
+EOF
+
+# first let's try just url
+
+cd ${test_tmpdir}
+mkdir repo
+${CMD_PREFIX} ostree --repo=repo init
+${CMD_PREFIX} ostree --repo=repo remote add origin --no-gpg-verify \
+ mirrorlist=$(cat httpd-address)/ostree/mirrorlist
+${CMD_PREFIX} ostree --repo=repo pull origin:main
+
+echo "ok pull objects from mirrorlist"
+
+# now let's try contenturl only mirrorlist
+
+cd ${test_tmpdir}
+rm -rf repo
+mkdir repo
+${CMD_PREFIX} ostree --repo=repo init
+${CMD_PREFIX} ostree --repo=repo remote add origin --no-gpg-verify \
+ --contenturl=mirrorlist=$(cat httpd-address)/ostree/mirrorlist \
+ $(cat httpd-address)/ostree/gnomerepo
+${CMD_PREFIX} ostree --repo=repo pull origin:main
+
+echo "ok pull objects from contenturl mirrorlist"
+
+# both
+
+cd ${test_tmpdir}
+rm -rf repo
+mkdir repo
+${CMD_PREFIX} ostree --repo=repo init
+${CMD_PREFIX} ostree --repo=repo remote add origin --no-gpg-verify \
+ --contenturl=mirrorlist=$(cat httpd-address)/ostree/mirrorlist \
+ mirrorlist=$(cat httpd-address)/ostree/mirrorlist
+${CMD_PREFIX} ostree --repo=repo pull origin:main
+
+echo "ok pull objects from split urls mirrorlists"