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 allpool, 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_create

    See Using launch.py for more details on running tests.

    If you were to make the tragic mistake of specifying the all tag, the tests would run for a day at least.



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