Consolidate run & post playbooks for all tests

When zuul executes jobs it adds all the post plays together
and executes them in the inherited sequence. This is causing
some confusion in our cross-repo testing where the logs are
trying to be collected twice as the cross-repo test is based
on the standard functional test.

Instead of defining two sets of plays we can consolidate them
into a single set, eliminating the confusion and repetition.

At the same time we also do not try to collect logs if the
script to prepare them was not able to execute, and we fix
the conditional for the ARA report generation so that it
works properly with the value being given it by zuul which
is a boolean word. To make sure it still works outside of
Zuul we leave the conditional which uses the standard success
return code of 0.

Change-Id: Id5027415f33a7a41650332a983cb87fab7ba2a4a
This commit is contained in:
Jesse Pretorius 2017-10-31 15:37:03 +00:00
parent 56a4eb8ade
commit 05d3ff4f5a
6 changed files with 43 additions and 68 deletions

View File

@ -90,11 +90,11 @@ ${RSYNC_CMD} "${TESTING_HOME}/.ara/ansible.sqlite" "${WORKING_DIR}/logs/" || tru
# when the test result is a failure. The ARA sqlite database is
# still available for self generation if desired for successful
# tests.
if [[ "${TEST_EXIT_CODE}" != "0" ]]; then
echo "Generating ARA report due to non-zero exit code (${TEST_EXIT_CODE})."
if [[ "${TEST_EXIT_CODE}" != "0" ]] && [[ "${TEST_EXIT_CODE}" != "true" ]]; then
echo "Generating ARA report."
${ARA_CMD} "${WORKING_DIR}/logs/ara" || true
else
echo "Not generating ARA report due to test pass."
echo "Not generating ARA report."
fi
# Get a dmesg output so we can look for kernel failures

View File

@ -167,6 +167,4 @@
of the ``tox_env`` variable. The OpenStack-Ansible repo
to execute the tests from must be specified in the
``osa_test_repo`` variable.
run: zuul.d/playbooks/cross-repo-run.yml
post-run: zuul.d/playbooks/cross-repo-post.yml
nodeset: ubuntu-xenial

View File

@ -1,36 +0,0 @@
---
# Copyright 2017, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- hosts: all
tasks:
- name: Run log collection script
shell: |
echo "TEST_EXIT_CODE: ${TEST_EXIT_CODE}"
if [[ -d "tests/common" ]]; then
source tests/common/test-log-collect.sh
else
echo "The common tests repo has not been cloned yet. Logs cannot be collected without it."
fi
args:
executable: "/bin/bash"
chdir: "{{ ansible_user_dir }}/src/git.openstack.org/{{ osa_test_repo }}"
environment:
TEST_EXIT_CODE: "{{ zuul_success }}"
- name: Copy logs back to the executor
synchronize:
src: "{{ ansible_user_dir }}/src/git.openstack.org/{{ osa_test_repo }}/logs/"
dest: "{{ zuul.executor.log_root }}"
mode: pull

View File

@ -1,23 +0,0 @@
---
# Copyright 2017, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- hosts: all
tasks:
- name: Run testing script
shell: |
./run_tests.sh {{ tox_env }}
args:
executable: "/bin/bash"
chdir: "{{ ansible_user_dir }}/src/git.openstack.org/{{ osa_test_repo }}"

View File

@ -15,6 +15,18 @@
- hosts: all
tasks:
- name: Set current test repo (cross-repo)
set_fact:
current_test_repo: "git.openstack.org/{{ osa_test_repo }}"
when:
- osa_test_repo is defined
- name: Set current test repo (non-cross-repo)
set_fact:
current_test_repo: "{{ zuul.project.canonical_name }}"
when:
- osa_test_repo is not defined
- name: Run log collection script
shell: |
echo "TEST_EXIT_CODE: ${TEST_EXIT_CODE}"
@ -25,12 +37,24 @@
fi
args:
executable: "/bin/bash"
chdir: "{{ ansible_user_dir }}/src/{{ zuul.project.canonical_name }}"
chdir: "{{ ansible_user_dir }}/src/{{ current_test_repo }}"
environment:
TEST_EXIT_CODE: "{{ zuul_success }}"
TEST_EXIT_CODE: "{{ zuul_success | lower }}"
- name: Check whether a logs folder exists
stat:
path: "{{ ansible_user_dir }}/src/{{ current_test_repo }}/logs"
get_attributes: no
get_checksum: no
get_md5: no
get_mime: no
register: logs_folder
- name: Copy logs back to the executor
synchronize:
src: "{{ ansible_user_dir }}/src/{{ zuul.project.canonical_name }}/logs/"
src: "{{ ansible_user_dir }}/src/{{ current_test_repo }}/logs/"
dest: "{{ zuul.executor.log_root }}"
mode: pull
when:
- logs_folder.stat is defined
- logs_folder.stat.exists | bool

View File

@ -15,9 +15,21 @@
- hosts: all
tasks:
- name: Set current test repo (cross-repo)
set_fact:
current_test_repo: "git.openstack.org/{{ osa_test_repo }}"
when:
- osa_test_repo is defined
- name: Set current test repo (non-cross-repo)
set_fact:
current_test_repo: "{{ zuul.project.canonical_name }}"
when:
- osa_test_repo is not defined
- name: Run testing script
shell: |
./run_tests.sh {{ tox_env }}
args:
executable: "/bin/bash"
chdir: "{{ ansible_user_dir }}/src/{{ zuul.project.canonical_name }}"
chdir: "{{ ansible_user_dir }}/src/{{ current_test_repo }}"