Download from here.
Hello, this is Amir Shehata with another quick tip on the LUTF. In this video we will take a 5-minute tour over how the LUTF directory is structured and how to configure it.
I have written a step by step walk-thru on how to build and deploy the LUTF. Please go to the link provided here or in the video transcript on the wiki for more details.
Once you have the Lustre tests rpm installed along with the other lustre rpms, you can see the LUTF installed in the standard lustre tests directory:
/usr/lib64/lustre/tests/lutf |
The LUTF directory structure is fairly straight forward.
The top level directory contains the LUTF binary and a set of other generated shared libraries and python files.
These include the C/Python wrappers which the LUTF python scripts use to call the C APIs.
Let's look at an example. You can see here two files of interest: _lnetconfig.so
and lnetconfig.py
.
The .py file is generated by SWIG and enables the LUTF python scripts to call the liblnetconfig API
The .so file is a shared library which includes the glue code that implements the liblnetconfig API calls
Configuration scripts are under the python/config
directory. These configuration scripts setup all the different elements required to run the LUTF.
Various infrastructure scripts, which implement the remote script execution feature as well as other LUTF features, are under the infra
directory.
Lustre and LNet specific infrastructure scripts, such as scripts to clean the test setup and configure LNet are located in the tests-infra
directory
Finally all the various tests suites are located under the tests
directory.
At the time of this recording, the shown test suites are available.
The LUTF requires a single YAML configuration file which specifies its environment. Let's briefly explore the configuration parameters.
If you remember I mentioned that the LUTF can run in master or agent mode. Some parameters are relevant to the agent and not the master.
Although all parameters can be specified. On startup only the parameters which matter are examined.
First off, let's look at the shell parameter. It defines how the LUTF will run. There are three modes it can run in:
The agent parameter tells the LUTF if it should run as a master or an agent
node-name specifies a symbolic name for the node. It can be any alpha-numeric value.
The LUTF agent will need to know the master's IP address or hostname which it will use to connect to the master. A symbolic name is also provided to associate with the master.
The LUTF will require a port to listen on for incoming connections as well as a port to use for the telnet server
This is what the LUTF YAML configuration looks like. A couple of other parameters relevant to the master node are:
Both the suite and the script names can contain wild cards which define a group of suites or scripts.
You can follow the shown link for more details on the configuration parameters.
Before I leave this topic, I just want to remind you that the YAML configuration file will be automatically generated for you, as I'll show you later on.
We're almost ready to run the LUTF, but first just a quick note on a couple of important naming conventions.
All test suites under the python/tests
directory must start with the literal: suite_
And all the tests under a test suite must start with the literal: test_
Otherwise the LUTF will not pick them up and you won't be able to run them.
In the next tutorial we will run the LUTF and see what it offers us.
lutf: shell: interactive # [interactive|batch|daemon] agent: false # [true|false] run as an agent or master telnet-port: 49304 # a port to telnet to, to access agent master-address: 192.14.4.3 # IP address of master or hostname master-port: 43943 # port master is listening on node-name: ost2_HOST # name to associate with the node. master-name: mds_HOST # name of master to be given to agents script: test_dlc_01.py # script name to run in batch mode. Suite name needs to be specified as well. suite: suite_dlc # suite name to run. If not present all suites are run in batch mode lutf-path: /usr/lib64/lustre/tests/lutf/ # path to lutf directory py-path: "/usr/lib64/:/usr/lib64/tests" # ':' separated lists of paths for extra python modules |