diff --git a/tests/provision.fmf b/tests/provision.fmf new file mode 100644 index 0000000..266a8f1 --- /dev/null +++ b/tests/provision.fmf @@ -0,0 +1,4 @@ +--- +standard-inventory-qcow2: + qemu: + m: 4G diff --git a/tests/run-test.sh b/tests/run-test.sh new file mode 100755 index 0000000..0f36a2a --- /dev/null +++ b/tests/run-test.sh @@ -0,0 +1,29 @@ +#!/bin/sh +set -eux + +cd $SOURCE +git init +make bots test/common machine + +# only install a subset to save time/space +npm install chrome-remote-interface sizzle + +. /etc/os-release +export TEST_OS="${ID}-${VERSION_ID/./-}" + +RC=0 + +for t in test/verify/check-{blueprintList,blueprintWizard,imageWizard} +do + $t \ + --enable-network \ + --machine 127.0.0.1:22 \ + --browser 127.0.0.1:9090 \ + --verbose --trace \ + || RC=$? +done + +echo $RC > "$LOGS/exitcode" +cp --verbose Test* "$LOGS" || true +# deliver test result via exitcode file +exit 0 diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..b3a2814 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,33 @@ +--- +- hosts: localhost + roles: + - role: standard-test-source + tags: + - always + + - role: standard-test-basic + tags: + - atomic + - classic + required_packages: + - cockpit-composer + - composer-cli + - nodejs + - git + - curl + - createrepo_c + - dnf-automatic + - firewalld + - git + - libvirt-daemon-config-network + - libvirt-python3 + - make + - npm + - python3 + - targetcli + - tlog + tests: + - verify: + dir: . + run: ./verify.sh + save-files: ["logs/*"] diff --git a/tests/verify.sh b/tests/verify.sh new file mode 100755 index 0000000..9b036fe --- /dev/null +++ b/tests/verify.sh @@ -0,0 +1,54 @@ +#!/bin/sh +set -eux + +# from standard-test-source +SOURCE="$(pwd)/source" +LOGS="$(pwd)/logs" +TESTS="$(pwd)/tests" +mkdir -p "$LOGS" +chmod a+w "$LOGS" + +# install browser; on RHEL, use chromium from epel +if ! rpm -q chromium-headless; 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 + # use chromium due to https://bugs.chromium.org/p/chromium/issues/detail?id=1170634 + dnf install -y chromium +fi + +# overriding osbuild-composer repo with nightly +mkdir -p /etc/osbuild-composer/repositories +cp $SOURCE/test/files/rhel-*.json /etc/osbuild-composer/repositories/ + +# Make cockpit.socket and lorax-composer start +systemctl start cockpit.socket +systemctl start osbuild-composer.socket + +# create user account for logging in +if ! id admin 2>/dev/null; then + useradd -c Administrator -G wheel admin + echo admin:foobar | chpasswd +fi + +# 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 + +cp -r $SOURCE/test/files /home/admin + +# Run tests as unprivileged user +su - -c "env SOURCE=$SOURCE LOGS=$LOGS $TESTS/run-test.sh" runtest + +RC=$(cat $LOGS/exitcode) +exit ${RC:-1}