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: Download the tempest container: 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 the tempest 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: Copy the necessary files to the container_tempest directory. This directory is the file source for the container: List the available container images: Create an alias to facilitate easier command entry. Ensure that you use absolute paths when mounting the directories: To get a list of available tempest plugins in the container, run the following command: 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 the stackrc 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 the tempest.conf file. For more information about the options that you can include in the discover-tempest-config command, run discover-tempest-config --help . Set --out to home/stack/tempest_workspace/tempest.conf so that the tempest.conf file is accessible from the host machine. Set --deployer-input to point to the tempest-deployer-input.conf file in the shared directory. Run tempest tests. This example script runs the smoke test tempest run --smoke . If you already have a tempest.conf file and you want only to run the tempest tests, omit TEMPESTCONF from the script and replace it with a command to copy your tempest.conf file from the container_tempest directory to the tempest_workspace/etc directory: Set executable privileges on the tempest_script.sh script: Run the tempest script from the container using the alias that you created in a step: 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: 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 the stackrc 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: Generate the tempest.conf file: For more information about the options that you can include in the discover-tempest-config command, run discover-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 step: 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:

Commands:
cd /home/stack
podman pull registry.redhat.io/rhosp-rhel8/openstack-tempest:16.0
mkdir container_tempest tempest_workspace
cp stackrc overcloudrc tempest-deployer-input.conf container_tempest
podman images REPOSITORY TAG IMAGE ID CREATED SIZE registry.redhat.io/rhosp-rhel8/openstack-tempest latest 881f7ac24d8f 10 days ago 641 MB
alias podman-tempest="podman run -i --privileged=true -v "USD(pwd)"/container_tempest:/home/stack/container_tempest:z -v "USD(pwd)"/tempest_workspace:/home/stack/tempest_workspace:z registry.redhat.io/rhosp-rhel8/openstack-tempest:16.0 /bin/bash"
podman-tempest -c "rpm -qa | grep tempest"
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" USDTEMPESTCONF --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
cp /home/stack/container_tempest/tempest.conf /home/stack/tempest_workspace/etc/tempest.conf
chmod +x container_tempest/tempest_script.sh
podman-tempest -c 'set -e; /home/stack/container_tempest/tempest_script.sh'
sudo rm -rf /home/stack/tempest_workspace mkdir /home/stack/tempest_workspace
source /home/stack/container_tempest/overcloudrc
tempest init /home/stack/tempest_workspace
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
podman-tempest -c "tempest run --smoke"
sudo rm -rf /home/stack/tempest_workspace mkdir /home/stack/tempest_workspace