...
This document is made up of the following sections:
- Use Cases
- Design Overview
- Building the LUTF
- LUTF-Autotest Integration
- Infrastructure
...
Use Case | Description |
---|---|
Single node configuration |
All tests are run on one node. |
Multi-node/no File system testing |
These tests require node synchronization. For example if a script is configuring node A, node B can not start traffic until node A has finished configuration. |
Multi-node/File system testing |
These tests require node synchronization. |
Error Injection testing |
These tests require node synchronization. |
LNet Operations
...
- LNet Configuration steps
- Via API directly. LUTF will provide a C/Python API to call the liblnetconfig API
- Via lnetctl utility. LUTF will provide a simple wrapper class to call lnetctl.
- Provisioning/Unprovisioning a File System
- LUTF will provide an API to provision a file system.
- LUTF will provide an API to clean the clustre and get it in a state ready for next test
- LUTF will do this automatically before running a test. It'll ensure that the clustre has no FS mounted and no lustre modules loaded.
- This way a test starts from a clean slate
- LUTF will provide a way to override this feature
- VerificationVerificaition
- This will be the responsibility of each test
- Running traffic using selftest
- LUTF will provide a wrapper class to run selftest, so that the test writer doesn't need to know about selftest specific scripts.
...
- Provide a python interface to run scripts
- Automatically figure out all the suites
- Automatically figure out all the tests in each suite
- Provide a method to run a script.
Code Block # Manually running the lutf # lutf.sh is a wrapper script to run the lutf. It can be called manually or through Auster. # Takes the following parameters # -c config: configuration file with all the environment variable in the same # format as what Auster takes. If not provided it'll assume environment variables are already set. # -s: run in shell mode (IE access to python shell) # if not provided then run in daemon mode. # lutf.sh will have the default communication ports hard coded in the script and will start the agents and the master # >> pdsh -w <hostname> <lutf agent start command> # >> <lutf bin> <paramters> >> ./lutf.sh # when you enter LUTF python interface. It'lll have an lutf library already imported # environment for test lutf.get_environment() # get connected agents lutf.get_agents() #print all available suites lutf.suites #print all available scripts in the suite lutf.suites['suite name'].scripts # reload the suites and the scripts if it has changed lutf.suites.reload() # run a script lutf.suites['suite name'].scripts['script name'].run() # reload a script after making changes lutf.suites['suite name'].scripts['script name'].reload()
- Provision LNet configuration
- Provision FS configuration
- When running a test script it always makes sure it cleans the clustre
- Grab common logs
- lctl dk
- syslog
- crash log
...
If the LUTF is built it will be packaged in the lustre-tests
rpm and installed in /usr/lib64/lustre/tests/lutf
.
Tasks
Task | Description |
---|---|
C infrastructure |
|
OLD INFORMATION
TODO: Below is old infromation stil being cleaned up
...