XRootD Site Testing Framework
Documentation: XRootD Testing Framework
UML Class Structure Diagram For Test Command Generation and Returned Data:
Initial Table of Test Cases:
Test Case Type | Description | Test Step | Expected Result | Status |
Functionality: Read-Write
| Verify local file can be transferred to server | Transfer file, obtain and compare checksum of local file to server-side file | Both checksum values should be the same | Pass or Fail |
Verify copy speed can be limited to a specified rate (--xrate) | Set a rate limit during copy/transfer. Measure file size and time taken for transfer to complete to calculate rate | Calculated rate should be within 10% of the set rate limit | Pass or Fail | |
Verify incomplete transfer removes file from server (–posc) | Transfer 100 KB file to server using –posc, and set rate limit to 50 KB/s with –xrate. Have transfer timeout at 1 second. Obtain checksum for filename on server. | Return code for transfer should fail (!= 0), and checksum value should be None | Pass or Fail | |
Verify files of 0 bytes are not transferred | Transfer file of 0 bytes to server, and stat for checksum | Transfer appears to succeed with return code = 0, but checksum of 0 bytes file on server should be None | Pass or Fail | |
Functionality: Third-Party Copy | Verify file on server A can be transferred to B, and back via third-party copy (TPC) (--tpc) | Transfer initial local file to server A. Transfer file from server A to B and obtain checksum value for file on server B. Transfer file from server B to A and obtain checksum from server A. Compare both server checksums | Both checksum values should be the same | Pass or Fail |
Functionality: Read-Write, Third-Party Copy | Determine if server load is redirected to another server | Transfer a file of size that exceeds maximum load of one server to echo-internal-manager01.gridpp.rl.ac.uk. Obtain stdout and check that the file was transferred to multiple endpoints. | Stdout should show confirmation of load redirection | Pass or Fail |
Verify end server is reached after global server redirection | Obtain end URL from log and end server’s URL | End URL should match end server URL | Pass or Fail | |
Verify files without ATLAS tokens cannot be transferred to ATLAS | Clear token environmental variable and transfer file to ATLAS | Return code for transfer should fail (!= 0) | Pass or Fail | |
Verify data in file on destination matches data in file on source | Use cat or tail to return part of file contents from destination, and compare with equivalent part from source file | Returned contents should match | Pass or Fail | |
Verify deleted file is deleted from server | Transfer file to server. Delete file from server and obtain checksum from server | Checksum should be None | Pass | |
Functionality: Metadata
| Verify output data format is compatible with server and protocol | Transfer local file to server. Stat the file on the server and obtain metadata categories. Compare to standard list of categories for the protocol
| Obtained and standard categories should be the same | Pass or Fail |
Ensure xrdadler32 produced checksums are in the correct format (big-endian) | Transfer local file to server. Obtain Adler32 checksum of local file using xrdadler32, and produce a big endian and little endian version. Obtain checksum from server-side file | Checksum from server should match the big endian checksum computed from local file | Pass or Fail | |
Performance: Read-Write | Test rate of transfer for bulk files of size 64 MB, 100 MB, 1 GB and 4 GB | Transfer multiple copies of the file using gfal-copy bulk. Measure time taken for transfer. Repeat transfer 5 times and use average time to calculate rate | Transfer should succeed and rate should be within +/- 10% of expected rate limit | Pass or Fail |
Test rate of bulk deletion for files of size 64 MB, 100 MB, 1 GB and 4 GB | Transfer a directory of same sized files to server. Use gfal-rm bulk to delete the multiple files from destination directory. Measure time taken for deletion and calculate rate | Deletion should succeed and rate should be within +/- 10% of expected rate limit | Pass or Fail | |
Performance: Read-Write, Third-Party Copy | Verify transfer and average rate for large files (8 GB) | Transfer file of 8 GB to server. Measure time taken for transfer to complete. Repeat transfer 5 times and compute average of time taken to obtain rate | Transfer to server should succeed and rate should be within +/- 10% of expected rate limit | Pass or Fail |
Test average rate of deletion for large files (8 GB) | Transfer 8 GB file to server. Remove file from server and measure time taken for deletion to complete. Repeat 5 times and compute average time to obtain rate | Deletion should succeed and rate should be within +/- 10% of expected rate limit | Pass or Fail |
Matrix of test cases (Site + Protocol combinations):
Sites | Protocols | ||
root | davs | https | |
RAL: | ✓ | ✓ | ✓ |
LHCOPN: | ✓ | ✓ | ✓ |
LHC1: | ✓ | ✓ | ✓ |