Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This document is made up of the following sections:

  • Use Cases
  • Design Overview
  • Building the LUTF
  • LUTF-Autotest Integration
  • Infrastructure

...

Use CaseDescription
Single node configuration
  • Exercise the liblnetconfig  API directly to configure LNet
  • Exercise the lnetctl  utility to configure LNet

All tests are run on one node.

Multi-node/no File system testing
  • Configure one or more nodes
  • Run lnet_selftest
  • Ensure traffic conforms to configuration
  • Repeat the above

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
  • Start file system traffic
  • Perform some configuration changes which would change LNet behaviour
  • Ensure that configuration changes are honoured

These tests require node synchronization.

Error Injection testing
  • Either with file system mount mounted or not
  • Inject various types of errors on different nodes on the setup
  • Monitor statistics to determine how LNet is handling faults

These tests require node synchronization.

LNet Operations

...

  1. LNet Configuration steps
    1. Via API directly. LUTF will provide a C/Python API to call the liblnetconfig API
    2. Via lnetctl utility. LUTF will provide a simple wrapper class to call lnetctl.
  2. Provisioning/Unprovisioning a File System
    1. LUTF will provide an API to provision a file system.
    2. LUTF will provide an API to clean the clustre and get it in a state ready for next test
      1. LUTF will do this automatically before running a test. It'll ensure that the clustre has no FS mounted and no lustre modules loaded.
      1. This way a test starts from a clean slate
      2. LUTF will provide a way to override this feature
  3. VerificationVerificaition
    1. This will be the responsibility of each test
  4. Running traffic using selftest
    1. LUTF will provide a wrapper class to run selftest, so that the test writer doesn't need to know about selftest specific scripts.

...

  1. Provide a python interface to run scripts
    1. Automatically figure out all the suites
    2. Automatically figure out all the tests in each suite
    3. Provide a method to run a script.
      1. 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()
  2. Provision LNet configuration
  3. Provision FS configuration
  4. When running a test script it always makes sure it cleans the clustre
  5. Grab common logs
    1. lctl dk
    2. syslog
    3. 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

TaskDescription
C infrastructure
  • lutf binary
  • listener thread
  • Heart beat
  • python integration
  • IPC







OLD INFORMATION

TODO: Below is old infromation stil being cleaned up

...