From: Colin Walters Date: Fri, 9 Mar 2018 18:26:07 +0000 (-0500) Subject: tests/str: Rework invocation X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~25^2~18 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=10fb74025d9b9b0fe124918ccbead7965c801d85;p=ostree.git 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 --- 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/playbook-run.sh b/tests/fedora-str/playbook-run.sh new file mode 100755 index 00000000..1499d085 --- /dev/null +++ b/tests/fedora-str/playbook-run.sh @@ -0,0 +1,24 @@ +#!/usr/bin/bash +# A thin wrapper for ansible-playbook which has a nice check for +# TEST_SUBJECTS being set. +set -xeuo pipefail + +# 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