5ff5dabd6e
Tis issue came up before also during we cap the Tempest version for stable branch tests(the one moved to EM state). Tempest use the tox constraints file while creating the tempest virtual env in devstack/lib/tempest, installing the tempest plugins and running the tests like in run-tempest ansible roles. If anywhere tox constraints file is used differently then venv will be recreated and installed tempest plugins will be gone from that recreated venv so tempest will not be able to run the plugins tests and fail job. Current failure: https://aca43ed1a01d95dea0ee-dcdb6cbb330bdac08ffee1284f86c919.ssl.cf2.rackcdn.com/822225/3/check/octavia-v2-dsvm-scenario/f60e4d3/job-output.txt Earlier I tried to fix it in a generic way by fetching the devstack localrc - https://review.opendev.org/c/openstack/tempest/+/774913 but this solution does not seems working as we can see it is skipped in current stable/train testing with tempest 26.1.0 Adding stable/train explicitly in list for using the stable constraint in run-tempest role also which will be in sync with what devstack/lib/tempest use. And later I will debug why generic way is not working. Because of Tempest 26.1.0 and with stestr 2.5.1 (beacause of upper constraints of stestr 2.5.1 in stable/train) which does not have new args exclude-regex so let's fallback to old arg if new arg is passed. Depends-On: https://review.opendev.org/c/openstack/devstack/+/822380 Depends-On: https://review.opendev.org/c/openstack/cinder-tempest-plugin/+/825708 Closes-Bug: #1955418 Change-Id: I105c839c38adfba1f9e22123ec3a99ffc0b5b72e
133 lines
5.2 KiB
YAML
133 lines
5.2 KiB
YAML
# NOTE(andreaf) The number of vcpus is not available on all systems.
|
|
# See https://github.com/ansible/ansible/issues/30688
|
|
# When not available, we fall back to ansible_processor_cores
|
|
- name: Get hw.logicalcpu from sysctl
|
|
shell: sysctl hw.logicalcpu | cut -d' ' -f2
|
|
register: sysctl_hw_logicalcpu
|
|
when: ansible_processor_vcpus is not defined
|
|
|
|
- name: Number of cores
|
|
set_fact:
|
|
num_cores: "{{ansible_processor_vcpus|default(sysctl_hw_logicalcpu.stdout)}}"
|
|
|
|
- name: Set concurrency for cores == 3 or less
|
|
set_fact:
|
|
default_concurrency: "{{ num_cores }}"
|
|
when: num_cores|int <= 3
|
|
|
|
- name: Limit max concurrency when more than 3 vcpus are available
|
|
set_fact:
|
|
default_concurrency: "{{ num_cores|int // 2 }}"
|
|
when: num_cores|int > 3
|
|
|
|
- name: Override target branch
|
|
set_fact:
|
|
target_branch: "{{ zuul.override_checkout }}"
|
|
when: zuul.override_checkout is defined
|
|
|
|
- name: Use stable branch upper-constraints till stable/train
|
|
set_fact:
|
|
# TOX_CONSTRAINTS_FILE is new name, UPPER_CONSTRAINTS_FILE is old one, best to set both
|
|
tempest_tox_environment: "{{ tempest_tox_environment | combine({'UPPER_CONSTRAINTS_FILE': stable_constraints_file}) | combine({'TOX_CONSTRAINTS_FILE': stable_constraints_file}) }}"
|
|
when: target_branch in ["stable/ocata", "stable/pike", "stable/queens", "stable/rocky", "stable/stein", "stable/train"]
|
|
|
|
- name: Use Configured upper-constraints for non-master Tempest
|
|
set_fact:
|
|
# TOX_CONSTRAINTS_FILE is new name, UPPER_CONSTRAINTS_FILE is old one, best to set both
|
|
tempest_tox_environment: "{{ tempest_tox_environment | combine({'UPPER_CONSTRAINTS_FILE': devstack_localrc['TEMPEST_VENV_UPPER_CONSTRAINTS']}) | combine({'TOX_CONSTRAINTS_FILE': devstack_localrc['TEMPEST_VENV_UPPER_CONSTRAINTS']}) }}"
|
|
when:
|
|
- devstack_localrc is defined
|
|
- "'TEMPEST_BRANCH' in devstack_localrc"
|
|
- "'TEMPEST_VENV_UPPER_CONSTRAINTS' in devstack_localrc"
|
|
- devstack_localrc['TEMPEST_BRANCH'] != 'master'
|
|
- devstack_localrc['TEMPEST_VENV_UPPER_CONSTRAINTS'] != 'master'
|
|
|
|
- name: Set OS_TEST_TIMEOUT if requested
|
|
set_fact:
|
|
tempest_tox_environment: "{{ tempest_tox_environment | combine({'OS_TEST_TIMEOUT': tempest_test_timeout}) }}"
|
|
when: tempest_test_timeout != ''
|
|
|
|
# TODO(kopecmartin) remove the following 'when block' after all consumers of
|
|
# the role have switched to tempest_test_exclude_list option, until then it's
|
|
# kept here for backward compatibility
|
|
- when:
|
|
- tempest_test_blacklist is defined
|
|
block:
|
|
- name: Check for test blacklist file
|
|
stat:
|
|
path: "{{ tempest_test_blacklist }}"
|
|
register:
|
|
blacklist_stat
|
|
|
|
- name: Build blacklist option
|
|
set_fact:
|
|
blacklist_option: "--blacklist-file={{ tempest_test_blacklist|quote }}"
|
|
when: blacklist_stat.stat.exists
|
|
|
|
- when:
|
|
- tempest_test_exclude_list is defined
|
|
block:
|
|
- name: Check for test exclude list file
|
|
stat:
|
|
path: "{{ tempest_test_exclude_list }}"
|
|
register:
|
|
exclude_list_stat
|
|
|
|
- name: Build exclude list option
|
|
set_fact:
|
|
exclude_list_option: "--exclude-list={{ tempest_test_exclude_list|quote }}"
|
|
when: exclude_list_stat.stat.exists
|
|
|
|
- name: stable/train workaround to fallback exclude-list to blacklist
|
|
# NOTE(gmann): stable/train use Tempest 26.1.0 and with stestr 2.5.1
|
|
# (beacause of upper constraints of stestr 2.5.1 in stable/train) which
|
|
# does not have new args exclude-list so let's fallback to old arg
|
|
# if new arg is passed.
|
|
set_fact:
|
|
exclude_list_option: "--blacklist-file={{ tempest_test_exclude_list|quote }}"
|
|
when:
|
|
- tempest_test_exclude_list is defined
|
|
- target_branch == "stable/train"
|
|
|
|
# TODO(kopecmartin) remove this after all consumers of the role have switched
|
|
# to tempest_exclude_regex option, until then it's kept here for the backward
|
|
# compatibility
|
|
- name: Build exclude regex (old param)
|
|
set_fact:
|
|
tempest_test_exclude_regex: "--black-regex={{tempest_black_regex|quote}}"
|
|
when:
|
|
- tempest_black_regex is defined
|
|
- tempest_exclude_regex is not defined
|
|
|
|
- name: Build exclude regex (new param)
|
|
set_fact:
|
|
tempest_test_exclude_regex: "--exclude-regex={{tempest_exclude_regex|quote}}"
|
|
when:
|
|
- tempest_black_regex is not defined
|
|
- tempest_exclude_regex is defined
|
|
- target_branch != "stable/train"
|
|
|
|
- name: stable/train workaround to fallback exclude-regex to black-regex
|
|
# NOTE(gmann): stable/train use Tempest 26.1.0 and with stestr 2.5.1
|
|
# (beacause of upper constraints of stestr 2.5.1 in stable/train) which
|
|
# does not have new args exclude-regex so let's fallback to old arg
|
|
# if new arg is passed.
|
|
set_fact:
|
|
tempest_test_exclude_regex: "--black-regex={{tempest_exclude_regex|quote}}"
|
|
when:
|
|
- tempest_black_regex is not defined
|
|
- tempest_exclude_regex is defined
|
|
- target_branch == "stable/train"
|
|
|
|
- name: Run Tempest
|
|
command: tox -e {{tox_envlist}} {{tox_extra_args}} -- {{tempest_test_regex|quote}} \
|
|
{{blacklist_option|default('')}} {{exclude_list_option|default('')}} \
|
|
--concurrency={{tempest_concurrency|default(default_concurrency)}} \
|
|
{{tempest_test_exclude_regex|default('')}}
|
|
args:
|
|
chdir: "{{devstack_base_dir}}/tempest"
|
|
register: tempest_run_result
|
|
become: true
|
|
become_user: tempest
|
|
environment: "{{ tempest_tox_environment }}"
|