System tests to test viability of xrootd third-party copy between endpoints.
There are two types of test:
(a) "Full Mesh": A data file is uploaded to each endpoint, and
then transferred both ways between endpoint pairs.
(b) "Smoke": An endpoint is selected as reference; for all other
endpoints, a file is uploaded, transferred to the
reference endpoint, transferred back, and then
downloaded from the endpoint.
See also the info in the xrootd_tests script by doing:
python xrootd_tests -i
Configuration and Output
The test suite requires a .json configuration file. Some examples are given in the conf directory.
Most of the settings should be self-explanatory. For the "test-phases", "capture-streams" means that the streams from the xrootd executable will be redirected to their own log file in the indicated log directory (see under "report"). For the tpc phase, one can try with delegation, without delegation, or both.
The full-mesh version of the tests uses the upload phase to place the data file on all endpoints, and the remove phase to delete it from the endpoints.
The output from each test suite run is in the form of another .json file which records the (extended) configuration instance, plus the metadata for each task in the suite, including all out or err lines which appear to indicate errors.
The summary file is a plain text condensation of the results with some basic statistical information (percentage of successes in the case of the full mesh, number of successful hops in the smoke test), followed by a listing of the individual failures for each endpoint with the last error reported for each. See the examples directory for example output. The example.log file shows typical output from the script with the -d (debug) option.
The summary file can be emailed using the local smtp server if it exists; the 'to' takes a list of recipient addresses.
The configuration allows for automated generation of the x509 proxy (see under "gsi-settings", provided permissions for the script user are correct) and test data (see under "local-data-file") using the unix/linux 'dd' command.
Full-mesh output ranks the endpoints by their percentage of successes; the smoke test classifies them as sound (all tests passed) or problematic. The score in the smoke test is a running sum from 0 to 20 updated after each test suite run (to the config file), and reflects how reliable the endpoint is. If it passes all tests, its score is incremented by 1, up to the maximum. Failing a test decrements it by 1.
CREATING A DISTRIBUTION
The python code was written for version 2.7.
To create a distribution for standard installation, follow the instructions at:
https://packaging.python.org/tutorials/packaging-projects/
for installing pip. Note that Python.org sites stopped supporting TLS version 1.0 and 1.1, which could cause issues if you try to update pip wheel on your platform.
In this case, a suggested solution is to upgrade pip without using pip:
curl https://bootstrap.pypa.io/get-pip.py | python
Once pip is on your machine, do:
cd xrootd_tests
python setup.py sdist bdist_wheel
A local pip wheel dist is generated for local installation. To install, run:
python -m pip install dist/xrootdtests-1.0-py2-none-any.whl