Chapter 6. Running containerized Tempest
This section contains information about running tempest from a container on the undercloud. You can run tempest against the overcloud or the undercloud. Containerized tempest requires the same resources as non-containerized tempest.
6.1. Preparing the Tempest container
Complete the following steps to download and configure your tempest container:
Change to the
/home/stack
directory:$ cd /home/stack
Download the tempest container:
$ podman pull registry.redhat.io/rhosp15-rhel8/openstack-tempest
This container includes all tempest plugins. Running tempest tests globally with this container includes tests for plugins. For example, if you run the
tempest run --regex '(*.)'
command, tempest runs all plugin tests. These tempest tests fail if your deployment does not contain configuration for all plugins. Run thetempest list-plugins
command to view all installed plugins. To exclude tests, you must include the tests that you want to exclude in a blacklist file. For more information, see Chapter 5, Using Tempest.Create directories to use for exchanging data between the host machine and the container:
$ mkdir container_tempest tempest_workspace
Copy the necessary files to the
container_tempest
directory. This directory is the file source for the container:$ cp stackrc overcloudrc tempest-deployer-input.conf container_tempest
List the available container images:
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE registry.redhat.io/rhosp15-rhel8/openstack-tempest latest 881f7ac24d8f 10 days ago 641 MB
Create an alias to facilitate easier command entry. Ensure that you use absolute paths when mounting the directories:
$ alias podman-tempest="podman run -i \ -v "$(pwd)"/container_tempest:/home/stack/container_tempest \ -v "$(pwd)"/tempest_workspace:/home/stack/tempest_workspace \ registry.redhat.io/rhosp15-rhel8/openstack-tempest \ /bin/bash"
To get a list of available tempest plugins in the container, run the following command:
$ podman-tempest -c "rpm -qa | grep tempest"
6.2. Running containerized Tempest inside the container
Create a tempest script that you can execute within the container to generate the
tempest.conf
file and run the tempest tests. The script performs the following actions:-
Set the exit status for the command
set -e
. -
Source the
overcloudrc
file if you want to run tempest against the overcloud. Source thestackrc
file if you want to run tempest against the undercloud. -
Run
tempest init
to create a tempest workspace. Use the shared directory so that the files are also accessible from the host. -
Change directory to
tempest_workspace
- Export the TEMPESTCONF environment variable for ease of use at a later stage.
-
Execute
discover-tempest-config
to generate thetempest.conf
file. For more information about the options that you can include in thediscover-tempest-config
command, rundiscover-tempest-config --help
. -
Set
--out
tohome/stack/tempest_workspace/tempest.conf
so that thetempest.conf
file is accessible from the host machine. -
Set
--deployer-input
to point to thetempest-deployer-input.conf
file in the shared directory. Run tempest tests. This example script runs the smoke test
tempest run --smoke
.$ cat <<'EOF'>> /home/stack/container_tempest/tempest_script.sh set -e source /home/stack/container_tempest/overcloudrc tempest init /home/stack/tempest_workspace pushd /home/stack/tempest_workspace export TEMPESTCONF="/usr/bin/discover-tempest-config" $TEMPESTCONF \ --out /home/stack/tempest_workspace/etc/tempest.conf \ --deployer-input /home/stack/container_tempest/tempest-deployer-input.conf \ --debug \ --create \ object-storage.reseller_admin ResellerAdmin tempest run --smoke EOF
If you already have a
tempest.conf
file and you want only to run the tempest tests, omitTEMPESTCONF
from the script and replace it with a command to copy yourtempest.conf
file from thecontainer_tempest
directory to thetempest_workspace/etc
directory:
$ cp /home/stack/container_tempest/tempest.conf /home/stack/tempest_workspace/etc/tempest.conf
-
Set the exit status for the command
Set executable privileges on the
tempest_script.sh
script:$ chmod +x container_tempest/tempest_script.sh
Run the tempest script from the container using the alias that you created in a previous step:
$ podman-tempest -c 'set -e; /home/stack/container_tempest/tempest_script.sh'
-
Inspect the
.stestr
directory for information about the test results. If you want to rerun the tempest tests, you must first remove and recreate the tempest workspace:
$ sudo rm -rf /home/stack/tempest_workspace $ mkdir /home/stack/tempest_workspace
6.3. Running Containerized Tempest outside the container
The container generates or retrieves the tempest.conf
file and runs tests. You can perform these operations from outside the container:
Source the
overcloudrc
file if you want to run tempest against the overcloud. Source thestackrc
file if you want to run tempest against the undercloud:# source /home/stack/container_tempest/overcloudrc
Run
tempest init
to create a tempest workspace. Use the shared directory so that the files are also accessible from the host:# tempest init /home/stack/tempest_workspace
Generate the
tempest.conf
file:# discover-tempest-config \ --out /home/stack/tempest_workspace/tempest.conf \ --deployer-input /home/stack/container_tempest/tempest-deployer-input-conf \ --debug \ --create \ object-storage.reseller_admin ResellerAdmin
For more information about the options that you can include in the
discover-tempest-config
command, rundiscover-tempest-config --help
.Execute tempest tests. For example, run the following command to execute the tempest smoke test using the alias you created in a previous step:
# podman-tempest -c "tempest run --smoke"
-
Inspect the
.stestr
directory for information about the test results. If you want to rerun the tempest tests, you must first remove and recreate the tempest workspace:
$ sudo rm -rf /home/stack/tempest_workspace $ mkdir /home/stack/tempest_workspace