From 10fb74025d9b9b0fe124918ccbead7965c801d85 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 9 Mar 2018 13:26:07 -0500 Subject: [PATCH] tests/str: Rework invocation Let's make our `run.sh` generically support any playbook. This is prep for writing further tests in Ansible. Along with that, rework the Ansible so that `tests.yml` is a playbook, and then the other bits are just task lists. It's easier to read. I also started to add a `use_git_build` variable with the idea that we'll be able to run these same tests against an upstream image by setting that variable off. Closes: #1493 Approved by: jlebon --- .papr.yml | 2 +- tests/fedora-str/overlay-git.yml | 56 +++++++++----------- tests/fedora-str/{run.sh => playbook-run.sh} | 7 ++- tests/fedora-str/sysinstall-tests.yml | 37 ++++++------- tests/fedora-str/tests.yml | 12 ++++- 5 files changed, 57 insertions(+), 57 deletions(-) rename tests/fedora-str/{run.sh => playbook-run.sh} (81%) diff --git a/.papr.yml b/.papr.yml index bb84e689..da06fa95 100644 --- a/.papr.yml +++ b/.papr.yml @@ -15,7 +15,7 @@ tests: - ./tests/fedora-str/provision.sh # TODO: enhance papr to have caching, a bit like https://docs.travis-ci.com/user/caching/ - curl -Lo fedora-atomic-host.qcow2 https://getfedora.org/atomic_qcow2_latest - - env "TEST_SUBJECTS=$(pwd)/fedora-atomic-host.qcow2" ./tests/fedora-str/run.sh + - env "TEST_SUBJECTS=$(pwd)/fedora-atomic-host.qcow2" ./tests/fedora-str/playbook-run.sh tests/fedora-str/tests.yml artifacts: - tests/fedora-str/artifacts/fedora-atomic-host.qcow2.log diff --git a/tests/fedora-str/overlay-git.yml b/tests/fedora-str/overlay-git.yml index 41d12846..dc0623db 100644 --- a/tests/fedora-str/overlay-git.yml +++ b/tests/fedora-str/overlay-git.yml @@ -1,31 +1,27 @@ ---- -- hosts: localhost - tags: - - atomic - remote_user: root - tasks: - - command: ostree --version - changed_when: False - register: ostree_orig_version - - set_fact: - ostree_orig_version_yaml: "{{ ostree_orig_version.stdout | from_yaml }}" - - name: Copy locally built RPMs - synchronize: src=x86_64/ dest=/root/x86_64/ archive=yes - - shell: ostree admin unlock || true - # Install the RPMs we already have. For the test suite we use rpm2cpio - # since it depends on libsoup, but we're not using that yet for the sysinstalled tests - - shell: > - /usr/bin/rpm -Fvh /root/x86_64/*.rpm && \ - cd / && rpm2cpio /root/x86_64/ostree-tests-2*.rpm | cpio -div - - command: ostree --version - register: ostree_new_version - - set_fact: - ostree_new_version_yaml: "{{ ostree_new_version.stdout | from_yaml }}" - - name: "Fail if we didn't change the ostree version" - when: ostree_orig_version_yaml['libostree']['Git'] == ostree_new_version_yaml['libostree']['Git'] - fail: - msg: "Failed to change ostree version" +# Run "admin unlock" and add locally built RPMs, then +# copy the whole tests/ directory into the VM. +- command: ostree --version + changed_when: False + register: ostree_orig_version +- set_fact: + ostree_orig_version_yaml: "{{ ostree_orig_version.stdout | from_yaml }}" +- name: Copy locally built RPMs + synchronize: src=x86_64/ dest=/root/x86_64/ archive=yes +- shell: ostree admin unlock || true +# Install the RPMs we already have. For the test suite we use rpm2cpio +# since it depends on libsoup, but we're not using that yet for the sysinstalled tests +- shell: > + /usr/bin/rpm -Fvh /root/x86_64/*.rpm && \ + cd / && rpm2cpio /root/x86_64/ostree-tests-2*.rpm | cpio -div +- command: ostree --version + register: ostree_new_version +- set_fact: + ostree_new_version_yaml: "{{ ostree_new_version.stdout | from_yaml }}" +- name: "Fail if we didn't change the ostree version" + when: ostree_orig_version_yaml['libostree']['Git'] == ostree_new_version_yaml['libostree']['Git'] + fail: + msg: "Failed to change ostree version" - # Next copy all of the tests/ directory - - name: Copy test data - synchronize: src=../../ dest=/root/tests/ archive=yes +# Next copy all of the tests/ directory +- name: Copy test data + synchronize: src=../../ dest=/root/tests/ archive=yes diff --git a/tests/fedora-str/run.sh b/tests/fedora-str/playbook-run.sh similarity index 81% rename from tests/fedora-str/run.sh rename to tests/fedora-str/playbook-run.sh index 8714a85b..1499d085 100755 --- a/tests/fedora-str/run.sh +++ b/tests/fedora-str/playbook-run.sh @@ -1,9 +1,8 @@ #!/usr/bin/bash +# A thin wrapper for ansible-playbook which has a nice check for +# TEST_SUBJECTS being set. set -xeuo pipefail -dn=$(cd $(dirname $0) && pwd) -cd ${dn} - # https://fedoraproject.org/wiki/CI/Tests if test -z "${TEST_SUBJECTS:-}"; then cat < /root/installed-tests.log - register: sysinstalled_result - failed_when: False - - name: Fetch sysinstalled results - fetch: - src: /root/installed-tests.log - dest: artifacts/installed-tests.log - flat: yes - - name: Assert that sysinstalled tests succeeded - when: sysinstalled_result.rc != 0 - fail: - msg: "sysinstalled tests failed" +# Run the system installed tests +- import_tasks: overlay-git.yml + when: use_git_build +# Down the line perhaps do each log file separately? +- name: Run sysinstalled tests + shell: /root/tests/installed/run.sh &> /root/installed-tests.log + register: sysinstalled_result + failed_when: False +- name: Fetch sysinstalled results + fetch: + src: /root/installed-tests.log + dest: artifacts/installed-tests.log + flat: yes +- name: Assert that sysinstalled tests succeeded + when: sysinstalled_result.rc != 0 + fail: + msg: "sysinstalled tests failed" diff --git a/tests/fedora-str/tests.yml b/tests/fedora-str/tests.yml index 7a78adb3..0c60fd07 100644 --- a/tests/fedora-str/tests.yml +++ b/tests/fedora-str/tests.yml @@ -1,2 +1,10 @@ -- include: overlay-git.yml -- include: sysinstall-tests.yml +# This entrypoint right now just runs the sysinstalled-tests. +--- +- hosts: localhost + tags: + - atomic + remote_user: root + vars: + use_git_build: True + tasks: + - import_tasks: sysinstall-tests.yml