Execution
Date 08 Dec 2025 13:57:07 +0000
Duration 00:24:46.17
Controller aio1.openstack.local
User root
Versions
Ansible 2.18.6
ara 1.7.4 / 1.7.4
Python 3.12.11
Summary
12 Hosts
1505 Tasks
1497 Results
32 Plays
487 Files
0 Records

File: /home/zuul/src/opendev.org/openstack/openstack-ansible-os_tempest/tasks/tempest_run.yml

---
# Copyright 2016, 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.

- name: Executing tempest and collect results
  block:
    - name: Execute tempest tests
      ansible.builtin.shell: |
        set -e
        if [ -d {{ tempest_venv_bin }} ];
        then
        . {{ tempest_venv_bin }}/activate
        fi
        tempest run \
        {% if tempest_run_concurrency is defined %}
          --concurrency {{ tempest_run_concurrency }} \
        {% else %}
          --serial \
        {% endif %}
        {% if tempest_test_worker_file_path is defined %}
          --worker-file {{ tempest_test_worker_file_path }} \
        {% endif %}
        {% if _tempest_test_excludelist | length > 0 %}
          --exclude-list {{ tempest_excludelist_file_path }} \
        {% endif %}
          --include-list {{ tempest_includelist_file_path }} > {{ tempest_log_dir }}/tempest_run.log
      args:
        chdir: "{{ tempest_workspace }}"
        executable: /bin/bash
      changed_when: false
      register: tempest_tests_run
      tags:
        # don't trigger ANSIBLE0013
        - skip_ansible_lint

  always:
    - name: Generate raw subunit results
      # Despite not using testrepository, we leave the output filename as
      # testrepository.subunit as the OpenStack Health dashboard relies on
      # subunit files with this particular name.
      # NOTE(mattt): At present we're not placing this file in a valid location
      # to be used by the OpenStack Health dashboard.
      ansible.builtin.shell: |
        set -e
        if [ -d {{ tempest_venv_bin }} ];
        then
        . {{ tempest_venv_bin }}/activate
        fi
        {{ stestr_executable }} last --subunit > {{ tempest_log_dir }}/testrepository.subunit
      args:
        chdir: "{{ tempest_workspace }}"
        executable: /bin/bash
      changed_when: false
      failed_when: false
      tags:
        # don't trigger ANSIBLE0013
        - skip_ansible_lint

    - name: Generate xml subunit results
      ansible.builtin.shell: |
        set -e
        if [ -d {{ tempest_venv_bin }} ];
        then
        . {{ tempest_venv_bin }}/activate
        fi
        subunit2junitxml {{ tempest_log_dir }}/testrepository.subunit > {{ tempest_log_dir }}/tempest_results.xml
      args:
        chdir: "{{ tempest_workspace }}"
        executable: /bin/bash
      changed_when: false
      failed_when: false
      tags:
        # don't trigger ANSIBLE0013
        - skip_ansible_lint

    - name: Generate html subunit results
      ansible.builtin.shell: |
        set -e
        if [ -d {{ tempest_venv_bin }} ];
        then
        . {{ tempest_venv_bin }}/activate
        fi
        subunit2html {{ tempest_log_dir }}/testrepository.subunit {{ tempest_log_dir }}/stestr_results.html
      args:
        chdir: "{{ tempest_workspace }}"
        executable: /bin/bash
      changed_when: false
      failed_when: false
      tags:
        # don't trigger ANSIBLE0013
        - skip_ansible_lint

    - name: Generate test-list file
      ansible.builtin.shell: |
        set -e
        if [ -d {{ tempest_venv_bin }} ];
        then
        . {{ tempest_venv_bin }}/activate
        fi
        tempest run \
          --include-list {{ tempest_includelist_file_path }} \
        {% if _tempest_test_excludelist | length > 0 %}
          --exclude-list {{ tempest_excludelist_file_path }} \
        {% endif %}
          --list-tests &> {{ tempest_log_dir }}/test_list.txt
      args:
        chdir: "{{ tempest_workspace }}"
        executable: /bin/bash
      changed_when: false
      failed_when: false

    # Copy module doesn't copy recursively with remote_src set to true
    - name: Copy stackviz-html to home directory
      ansible.builtin.shell: |
        cp -r {{ stackviz_venv_bin | dirname }}/share/stackviz-html {{ tempest_log_dir }}/stackviz
      args:
        executable: /bin/bash
      tags:
        # don't trigger ANSIBLE0013
        - skip_ansible_lint
      when: tempest_run_stackviz | bool

    - name: Collecting data from tempest run
      ansible.builtin.shell: |
        . {{ stackviz_venv_bin }}/activate
        stackviz-export -f {{ tempest_log_dir }}/testrepository.subunit --env {{ tempest_log_dir }}/stackviz/data
      args:
        chdir: "{{ tempest_workspace }}"
        executable: /bin/bash
      tags:
        # don't trigger ANSIBLE0013
        - skip_ansible_lint
      when: tempest_run_stackviz | bool

    - name: Create tempest failing tests file
      ansible.builtin.shell: |
        set -e
        if [ -d {{ tempest_venv_bin }} ];
        then
        . {{ tempest_venv_bin }}/activate
        fi
        {{ stestr_executable }} failing --list  > {{ tempest_log_dir }}/failing_tests.log
      args:
        chdir: "{{ tempest_workspace }}"
        executable: /bin/bash
      failed_when: false
      changed_when: false
      tags:
        # don't trigger ANSIBLE0013
        - skip_ansible_lint
      when: tempest_tests_run.rc != 0

    - name: Fail if tempest tests did not succeed
      ansible.builtin.assert:
        that:
          - "tempest_tests_run.rc == 0"