From ebdcf57fb088ba09db51a1f2bcbc915731d04bd2 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Wed, 20 Dec 2017 08:26:03 -0600 Subject: [PATCH] Add consolidated role for processing subunit We don't need two roles for testr and stestr. The roles have logic to check to see if .testrepository or .stestr dirs exist, and the logic after the subunit extraction is the same. Combine them into a single role which should do the right thing. Also, document it. Change-Id: I833320cf9a932d8e119645eb798ce0c93d854321 --- playbooks/unittests/post.yaml | 3 +- roles/fetch-subunit-output/README.rst | 12 +++++ roles/fetch-subunit-output/defaults/main.yaml | 2 + roles/fetch-subunit-output/tasks/main.yaml | 48 +++++++++++++++++++ roles/fetch-subunit-output/tasks/process.yaml | 19 ++++++++ 5 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 roles/fetch-subunit-output/README.rst create mode 100644 roles/fetch-subunit-output/defaults/main.yaml create mode 100644 roles/fetch-subunit-output/tasks/main.yaml create mode 100644 roles/fetch-subunit-output/tasks/process.yaml diff --git a/playbooks/unittests/post.yaml b/playbooks/unittests/post.yaml index dcf3709e8..a19836486 100644 --- a/playbooks/unittests/post.yaml +++ b/playbooks/unittests/post.yaml @@ -1,4 +1,3 @@ - hosts: all roles: - - fetch-testr-output - - fetch-stestr-output + - fetch-subunit-output diff --git a/roles/fetch-subunit-output/README.rst b/roles/fetch-subunit-output/README.rst new file mode 100644 index 000000000..1d9c992bb --- /dev/null +++ b/roles/fetch-subunit-output/README.rst @@ -0,0 +1,12 @@ +Collect subunit outputs + +**Role Variables** + +.. zuul:rolevar:: zuul_work_dir + :default: {{ zuul.project.src_dir }} + + Directory to work in + +.. zuul:rolevar:: tox_envlist + + tox environment that was used to run the tests originally. diff --git a/roles/fetch-subunit-output/defaults/main.yaml b/roles/fetch-subunit-output/defaults/main.yaml new file mode 100644 index 000000000..a0afa22c5 --- /dev/null +++ b/roles/fetch-subunit-output/defaults/main.yaml @@ -0,0 +1,2 @@ +--- +zuul_work_dir: "src/{{ zuul.project.canonical_name }}" diff --git a/roles/fetch-subunit-output/tasks/main.yaml b/roles/fetch-subunit-output/tasks/main.yaml new file mode 100644 index 000000000..195b02a5d --- /dev/null +++ b/roles/fetch-subunit-output/tasks/main.yaml @@ -0,0 +1,48 @@ +- name: Check for stestr directory + stat: + path: "{{ zuul_work_dir }}/.stestr" + register: stestr_stat + +- name: Generate stestr subunit file + shell: + cmd: ".tox/{{ tox_envlist }}/bin/stestr last --subunit > ./testrepository.subunit" + chdir: "{{ zuul_work_dir }}" + when: + - tox_envlist is defined + - stestr_stat.stat.exists + +- name: Generate stestr subunit file + shell: + cmd: "stestr last --subunit > ./testrepository.subunit" + chdir: "{{ zuul_work_dir }}" + when: + - tox_envlist is not defined + - stestr_stat.stat.exists + +- name: Check for testr directory + stat: + path: "{{ zuul_work_dir }}/.stestr" + register: testr_stat + when: not stestr_stat.stat.exists + +- name: Generate testrepository.subunit file + shell: + cmd: ".tox/{{ tox_envlist }}/bin/testr last --subunit > ./testrepository.subunit" + chdir: "{{ zuul_work_dir }}" + when: + - tox_envlist is defined + - not stestr_stat.stat.exists + - testr_stat.stat.exists + +- name: Generate testrepository.subunit file + shell: + cmd: "testr last --subunit > ./testrepository.subunit" + chdir: "{{ zuul_work_dir }}" + when: + - tox_envlist is not defined + - not stestr_stat.stat.exists + - testr_stat.stat.exists + +- name: Process and fetch subunit results + include: process.yaml + when: stestr_stat.stat.exists or testr_stat.stat.exists diff --git a/roles/fetch-subunit-output/tasks/process.yaml b/roles/fetch-subunit-output/tasks/process.yaml new file mode 100644 index 000000000..4f401bb61 --- /dev/null +++ b/roles/fetch-subunit-output/tasks/process.yaml @@ -0,0 +1,19 @@ +- name: Generate testr_results.html file + # TODO(pabelanger): We cannot depend on /usr/os-testr-env here!!! + command: "/usr/os-testr-env/bin/subunit2html ./testrepository.subunit testr_results.html" + args: + chdir: "{{ zuul_work_dir }}" + +- name: Compress testrepository.subunit file + archive: + path: "{{ zuul_work_dir }}/testrepository.subunit" + +- name: Collect test-results + synchronize: + dest: "{{ zuul.executor.log_root }}" + mode: pull + src: "{{ zuul_work_dir }}/{{ item }}" + verify_host: true + with_items: + - "*testr_results.html.gz" + - "*testrepository.subunit.gz"