test/browser: run tests inside the tasks container
This simplifies the "outside" setup quite a bit and gives us the same tasks container that test runs on the Cockpit CI run under. This change also implicitly changes the test browser to chromium (which is no longer an issue — we just use it from the tasks container).
This commit is contained in:
parent
e112794936
commit
2e8b932ece
4 changed files with 30 additions and 46 deletions
|
|
@ -1,25 +1,14 @@
|
|||
#!/bin/sh
|
||||
set -eux
|
||||
|
||||
export TEST_BROWSER=${TEST_BROWSER:-firefox}
|
||||
|
||||
TESTS="$(realpath $(dirname "$0"))"
|
||||
export SOURCE="$(realpath $TESTS/../..)"
|
||||
export LOGS="${TMT_TEST_DATA:-$(pwd)/logs}"
|
||||
mkdir -p "$LOGS"
|
||||
chmod a+w "$LOGS"
|
||||
cd "${0%/*}/../.."
|
||||
|
||||
# HACK: https://bugzilla.redhat.com/show_bug.cgi?id=2033020
|
||||
dnf update -y pam || true
|
||||
|
||||
# install firefox (available everywhere in Fedora and RHEL)
|
||||
# we don't need the H.264 codec, and it is sometimes not available (rhbz#2005760)
|
||||
dnf install --disablerepo=fedora-cisco-openh264 -y --setopt=install_weak_deps=False firefox
|
||||
|
||||
# nodejs 10 is too old for current Cockpit test API
|
||||
if grep -q platform:el8 /etc/os-release; then
|
||||
dnf module switch-to -y nodejs:16
|
||||
fi
|
||||
# allow test to set up things on the machine
|
||||
mkdir -p /root/.ssh
|
||||
curl https://raw.githubusercontent.com/cockpit-project/bots/main/machine/identity.pub >> /root/.ssh/authorized_keys
|
||||
chmod 600 /root/.ssh/authorized_keys
|
||||
|
||||
# create user account for logging in
|
||||
if ! id admin 2>/dev/null; then
|
||||
|
|
@ -33,25 +22,19 @@ 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/main/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
|
||||
|
||||
systemctl enable --now cockpit.socket
|
||||
sh test/vm.install
|
||||
|
||||
# Run tests as unprivileged user
|
||||
# once we drop support for RHEL 8, use this:
|
||||
# runuser -u runtest --whitelist-environment=TEST_BROWSER,TEST_ALLOW_JOURNAL_MESSAGES,TEST_AUDIT_NO_SELINUX,SOURCE,LOGS $TESTS/run-test.sh
|
||||
runuser -u runtest --preserve-environment env USER=runtest HOME=$(getent passwd runtest | cut -f6 -d:) $TESTS/run-test.sh
|
||||
|
||||
RC=$(cat $LOGS/exitcode)
|
||||
exit ${RC:-1}
|
||||
# Run tests in the cockpit tasks container, as unprivileged user
|
||||
CONTAINER="$(cat .cockpit-ci/container)"
|
||||
exec podman \
|
||||
run \
|
||||
--rm \
|
||||
--shm-size=1024m \
|
||||
--security-opt=label=disable \
|
||||
--volume="${TMT_TEST_DATA}":/logs:rw,U --env=LOGS=/logs \
|
||||
--volume="$(pwd)":/source:rw,U --env=SOURCE=/source \
|
||||
"${CONTAINER}" \
|
||||
sh /source/test/browser/run-test.sh
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue