tests: Use gating test code from upstream releases

These now regularly run upstream through packit, and thus are reasonably
well gated.

We unfortunately can't switch from STI to FMF completely, as in RHEL the
tests are part of the container-tools module, which uses STI. But the
remaining two ansible files change very rarely, getting rid of the
browser.sh and runt-est.sh duplication gives us most of the benefit
already.
This commit is contained in:
Martin Pitt 2021-02-23 11:29:55 +01:00
parent 079905143b
commit 93e376265a
3 changed files with 1 additions and 106 deletions

View File

@ -1,74 +0,0 @@
#!/bin/sh
set -eux
TESTS="$(realpath $(dirname "$0"))"
if [ -d source ]; then
# path for standard-test-source
SOURCE="$(pwd)/source"
else
SOURCE="$(realpath $TESTS/..)"
fi
LOGS="$(pwd)/logs"
mkdir -p "$LOGS"
chmod a+w "$LOGS"
# install browser; on RHEL, use chromium from epel
# HACK: chromium-headless ought to be enough, but version 88 has a crash: https://bugs.chromium.org/p/chromium/issues/detail?id=1170634
if ! rpm -q chromium; then
if grep -q 'ID=.*rhel' /etc/os-release; then
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf config-manager --enable epel
fi
dnf install -y chromium
fi
# HACK: systemd kills the services after 90s
# See https://github.com/containers/podman/issues/8751
sed -i 's/Type=notify/Type=exec/' /usr/lib/systemd/system/podman.service
sed -i 's/Type=notify/Type=exec/' /usr/lib/systemd/user/podman.service
# create user account for logging in
if ! id admin 2>/dev/null; then
useradd -c Administrator -G wheel admin
echo admin:foobar | chpasswd
fi
# set root's password
echo root:foobar | chpasswd
# avoid sudo lecture during tests
su -c 'echo foobar | sudo --stdin whoami' - admin
# create user account for running the test
if ! id runtest 2>/dev/null; then
useradd -c 'Test runner' runtest
# allow test to set up things on the machine
mkdir -p /root/.ssh
curl https://raw.githubusercontent.com/cockpit-project/bots/master/machine/identity.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
fi
chown -R runtest "$SOURCE"
# disable core dumps, we rather investigate them upstream where test VMs are accessible
echo core > /proc/sys/kernel/core_pattern
# grab a few images to play with; tests run offline, so they cannot download images
podman rmi --all
podman pull quay.io/libpod/busybox
podman pull quay.io/libpod/alpine
podman pull quay.io/cockpit/registry:2
# copy images for user podman tests; podman insists on user session
loginctl enable-linger $(id -u admin)
for img in quay.io/libpod/busybox quay.io/libpod/alpine quay.io/cockpit/registry:2; do
podman save $img | sudo -i -u admin podman load
done
loginctl disable-linger $(id -u admin)
systemctl enable --now cockpit.socket podman.socket
# Run tests as unprivileged user
su - -c "env SOURCE=$SOURCE LOGS=$LOGS $TESTS/run-test.sh" runtest
RC=$(cat $LOGS/exitcode)
exit ${RC:-1}

View File

@ -24,5 +24,5 @@
tests: tests:
- cockpit-podman: - cockpit-podman:
dir: . dir: .
run: "{{ test_script_dir | default('.') }}/browser.sh" run: "{{ test_script_dir | default('.') }}/source/plans/browser.sh"
save-files: ["logs/*"] save-files: ["logs/*"]

View File

@ -1,31 +0,0 @@
#!/bin/sh
set -eux
# tests need cockpit's bots/ libraries and test infrastructure
cd $SOURCE
git init
make bots test/common
# only install a subset to save time/space
rm -f package-lock.json # otherwise the command below installs *everything*, argh
npm install chrome-remote-interface sizzle
. /etc/os-release
export TEST_OS="${ID}-${VERSION_ID/./-}"
# HACK: upstream does not yet know about rawhide
if [ "$TEST_OS" = "fedora-34" ]; then
export TEST_OS=fedora-33
fi
export TEST_AUDIT_NO_SELINUX=1
# FIXME: Internal Server Error: statfs /tmp/bin: no such file or directory
EXCLUDES="--exclude TestApplication.testRunImageUser"
RC=0
test/common/run-tests --nondestructive --machine 127.0.0.1:22 --browser 127.0.0.1:9090 $EXCLUDES || RC=$?
echo $RC > "$LOGS/exitcode"
cp --verbose Test* "$LOGS" || true
# deliver test result via exitcode file
exit 0