Running DAOS Functional Tests
Tests are run using a test framework called Avocado. The version known to work with the existing tests is 69.3; if you yum install on Boro that should be the version you get.
To install and run tests from RPMs, see Manually Running Functional Tests from RPMs.
To install and run tests from a local build, see Use the local workspace for running functional tests.
Tests are in $PREFIX/lib/daos/TESTING/ftest.
In an RPM env, $PREFIX=/usr
In local build env, $PREFIX=myrepo/install.
Sub-directories contain categories of tests. E.g. the pool directory contains tests related to pools.
A given group of tests is implemented as a combination of a python file (.py) and a yaml file (.yaml). For example, in the pool directory there is a SimpleCreateDeleteTest.py and SimplecreateDeleteTest.yaml. The python contains the test code that drives the test, and the yaml file contains the test parameters. A single function in the python file can execute a large number of test cases because it's run for different combinations of inputs as found in the yaml file.
For tests that run on multiple servers, these two files need to be accessible by remote server nodes:
daos_avocado_test.yaml
daos_server.attach_info_tmp
In a local build env, they are located in myrepo/install/tmp.
In RPM env, they are located at DAOS_TEST_SHARED_DIR if this env variable is set; otherwise, by default thy will be installed at ~/daos_test This directory will be automatically created if it does not exist..
Before running a test, you must identify the number of cluster nodes that are required. To do this, open the yaml file for the test you want to run ($PREFIX/lib/daos/TESTING/ftest/*/*.yaml). You’ll see placeholders for machine names. E.g. server-A. If the test requires more than 1 host you’ll see server-A and server-B, etc. You'll need to have enough servers/clients depending on how many are specified in the yaml.
Tests are started with the launch.py script in the $PREFIX/lib/daos/TESTING/ftest directory along with a test tag. Groups of tests are identified by tags. For example, tests in $PREFIX/lib/daos/TESTING/ftest/pool/simple_create_delete_test.py are tagged with all, pool, and simple_create. The all tag is associated with all tests, the pool tag is associated with most pool-related tests, and the simple_create tag is associated with only the tests in this file. To run the simple_create tests, execute:
./launch.py -ts boro-xx -tc boro-xx simple_createSee Using launch.py for more details on running tests.
TODO:
Add section and instructions for generating a public/private key pair and using ssh-copy-id to install it on all machines you will be using in the test suite.
Add instructions on how to add passwordless sudo on the accounts the launcher will be run on for the target hosts.
Add instructions based on Distro of which files to copy from utils/systemd into /usr/lib/systemd to allow the test harness to use systemctl and how to modify them to run as your user.
Move these instructions into a file doc/dev/testing.md to make it accessible to other developers.
Add instructions on creating /etc/daos paths needed since test harness does not use sudo on mkdir commands even though it uses sudo on cp commands.
Add instructions to create all of the necessary groups needed by the unit files