From ae0525a7764456494369c7e41359dfb55b085406 Mon Sep 17 00:00:00 2001 From: Sagi Shnaidman Date: Tue, 7 Feb 2017 21:46:52 +0200 Subject: [PATCH] Set tempest result separately in file Don't exit with error automatically, write down tempest status in file for later parsing and set variable tempest_status. Change-Id: I986587ceadf58b13e9a2aeadb62f81c522e29b82 --- roles/validate-tempest/README.md | 1 + roles/validate-tempest/defaults/main.yml | 1 + roles/validate-tempest/tasks/post-tempest.yml | 37 +------------------ .../tasks/tempest-results.yml | 37 +++++++++++++++++++ .../validate-tempest/tasks/tempest-status.yml | 16 ++++++++ 5 files changed, 57 insertions(+), 35 deletions(-) create mode 100644 roles/validate-tempest/tasks/tempest-results.yml create mode 100644 roles/validate-tempest/tasks/tempest-status.yml diff --git a/roles/validate-tempest/README.md b/roles/validate-tempest/README.md index d3941fa04..49154bf19 100644 --- a/roles/validate-tempest/README.md +++ b/roles/validate-tempest/README.md @@ -26,6 +26,7 @@ Role Variables * `tempest_tests_file`: path to file - path to file with tests to run * `tempest_until_failure`: false/true - default is false, repeat the run again and again until failure occurs * `tempest_failing`: false/true - default is false, run only tests known to be failing +* `tempest_exit_on_failure`: true/false - whether to exit from role with tempest exit code (default: true) Dependencies ------------ diff --git a/roles/validate-tempest/defaults/main.yml b/roles/validate-tempest/defaults/main.yml index 4fda70b81..3df926c5b 100644 --- a/roles/validate-tempest/defaults/main.yml +++ b/roles/validate-tempest/defaults/main.yml @@ -29,3 +29,4 @@ skip_file: skip_file tempest_isolated: false tempest_until_failure: false tempest_failing: false +tempest_exit_on_failure: true diff --git a/roles/validate-tempest/tasks/post-tempest.yml b/roles/validate-tempest/tasks/post-tempest.yml index bfd5b53e2..69354776f 100644 --- a/roles/validate-tempest/tasks/post-tempest.yml +++ b/roles/validate-tempest/tasks/post-tempest.yml @@ -1,36 +1,3 @@ --- -- name: Fetch nostests results - fetch: - src: "{{ working_dir }}/tempest/tempest.xml" - dest: "{{ lookup('env', 'PWD') }}/nosetests.xml" - flat: yes - -- name: Generate subunit results file - shell: | - find '{{ working_dir }}/tempest/.testrepository/' -regex '.*/[0-9]+' \ - | while read name; do cat "$name"; done \ - > '{{ working_dir }}/tempest/results.subunit' - -- name: Generate HTML results file - shell: | - subunit2html $(find {{ working_dir }}/tempest/.testrepository -name [0-9] \ - | head -1) {{ working_dir }}/tempest/tempest.html \ - 2>&1 >> {{ tempest_log_file }} - ignore_errors: yes - -- name: Fetch subunit results - fetch: - src: "{{ working_dir }}/tempest/results.subunit" - dest: "{{ lookup('env', 'PWD') }}/results.subunit" - flat: yes - -- name: Fetch HTML results - fetch: - src: "{{ working_dir }}/tempest/tempest.html" - dest: "{{ lookup('env', 'PWD') }}/tempest.html" - flat: yes - ignore_errors: yes - -- name: Exit with tempest result code - shell: tail -10 {{ tempest_log_file }}; exit {{ tempest_result.rc }} - when: 'tempest_result.rc != 0' +- include: tempest-status.yml +- include: tempest-results.yml diff --git a/roles/validate-tempest/tasks/tempest-results.yml b/roles/validate-tempest/tasks/tempest-results.yml new file mode 100644 index 000000000..3bc25bd75 --- /dev/null +++ b/roles/validate-tempest/tasks/tempest-results.yml @@ -0,0 +1,37 @@ +--- +- name: Fetch nostests results + fetch: + src: "{{ working_dir }}/tempest/tempest.xml" + dest: "{{ lookup('env', 'PWD') }}/nosetests.xml" + flat: yes + +- name: Generate subunit results file + shell: | + find '{{ working_dir }}/tempest/.testrepository/' -regex '.*/[0-9]+' \ + | while read name; do cat "$name"; done \ + > '{{ working_dir }}/tempest/results.subunit' + +- name: Fetch subunit results + fetch: + src: "{{ working_dir }}/tempest/results.subunit" + dest: "{{ lookup('env', 'PWD') }}/results.subunit" + flat: yes + +- ignore_errors: true + block: + + - name: Generate HTML results file + shell: | + subunit2html $(find {{ working_dir }}/tempest/.testrepository -name [0-9] \ + | head -1) {{ working_dir }}/tempest/tempest.html \ + 2>&1 >> {{ tempest_log_file }} + + - name: Fetch HTML results + fetch: + src: "{{ working_dir }}/tempest/tempest.html" + dest: "{{ lookup('env', 'PWD') }}/tempest.html" + flat: yes + +- name: Exit with tempest result code if configured + shell: tail -10 {{ tempest_log_file }}; exit {{ tempest_result.rc }} + when: tempest_result.rc != 0 and tempest_exit_on_failure|bool diff --git a/roles/validate-tempest/tasks/tempest-status.yml b/roles/validate-tempest/tasks/tempest-status.yml new file mode 100644 index 000000000..44b5ee72f --- /dev/null +++ b/roles/validate-tempest/tasks/tempest-status.yml @@ -0,0 +1,16 @@ +--- +- name: Tempest failed if rc code is not 0 + set_fact: + tempest_status: failed + when: tempest_result.rc != 0 + +- name: Write down tempest result + shell: > + echo '{ "tempest_status": "{{ tempest_status|default('passed') }}" }' > + "{{ local_working_dir }}/tempest_status.json" + +- name: import tempest_status from file + include_vars: "{{ local_working_dir }}/tempest_status.json" + +- name: echo tempest status + debug: var=tempest_status