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
This commit is contained in:
Monty Taylor 2017-12-20 08:26:03 -06:00
parent 57fbc6e96e
commit ebdcf57fb0
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
5 changed files with 82 additions and 2 deletions

View File

@ -1,4 +1,3 @@
- hosts: all
roles:
- fetch-testr-output
- fetch-stestr-output
- fetch-subunit-output

View File

@ -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.

View File

@ -0,0 +1,2 @@
---
zuul_work_dir: "src/{{ zuul.project.canonical_name }}"

View File

@ -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

View File

@ -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"