Currently there is no dedicated test tool in Lustre test suites for LNet testing. Lustre Unit Test Framework (LUTF) fills that gap to provide a means for testing existing LNet features as well as new features that would be added in future. It facilitates an easy way of adding new test cases/scripts to test any new LNet feature.
This High Level Design Document describes the current LUTF design, code base, infrastructure requirements for its setup and the new features that can be added on top of the current design.
Document Link |
---|
LNet Unit Test Infrastructure (LUTF) Requirements |
This document is made up of the following sections:
Design Overview: Describes the existing infrastructure, code base and components of LUTF.
Setup and Usage: Describes how to setup and run LUTF on test nodes.
New Features: Describes the new features to be added to the current design.
The below diagram shows how LUTF interacts with LNet
Figure 1: System Level Diagram
The LUTF is designed with a Master-Agent approach to test LNet. The Master and Agent LUTF instance uses a telnet python module to communicate with each other and more than one Agent can communicate with single Master instance at the same time. The Master instance controls all the Agents connected to it. It controls the execution of the python test scripts to test LNet on Agent instances, collects the results of all the tests run on Agents and write them to a YAML file. It also controls the synchronization mechanism between test-scripts running on different Agents.
TBD: How is the LUTF build and where is it built
TBD: How the LUTF integrates in the AT
TBD: How does the AT deploy the LUTF, collect results, show results in Maloo
TBD: how does the C backend work. How does it glue with python
how are scripts deployed from the Master to the AGent
How are the scripts executed
How are the results collected
how should we execute a collection of tests. You can discuss how it's currently done, and if it can be imporved.
The LUTF is composed of two components:
C back-end infrastructure
This allows for the setup of the TCP communication between the Master and Agent nodes (lutf.c).
Master mode:
Starts a listener thread to listen to Agent connections (lutf_listener.c).
Provides a library which is SWIG wrapped and callable from python scripts (liblutf_agent.c).
Agent mode:
SWIG is used to wrap the DLC library and make it callable from Python. This allows Python test scripts to call DLC APIs directly to test LNet.