Documentation: https://stfc.github.io/xrootd-testing-framework/
UML Class Structure Diagram For Tests
...
Test Command Generation and Returned Data:
...
Initial Table of Test Cases:
Test Case Type | Description | Test Step | Expected Result | Status |
Functionality: Read-Write |
File transferred via Xrdcp to Ceph server should be correct /contain the correct data
| 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 |
Functionality: Metadata
Verify output data format is compatible with Ceph server
Check format of previous stats
Current stat and previous stat formats should be the same
Pass or Fail
Functionality: Metadata
Ensure xrdadler32 produced checksums are in the correct format (big-endian)
Produce checksum with xrdadler32 and compare with big-endian format checksum
Produced checksum should be in big-endian format
Pass or Fail
Functionality: Read-Write
Verify deletion removes data from server (After closure with --posc)
Perform deletion with XRootD in CL
Returned Ceph_posix_unlink status should show successful deletion, without -EBUSY status
Pass or Fail
Functionality: TPC
Verify file can be transferred via third party copy (TPC) from server to server (--tpc)
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
Verify copy speed can be limited to a specified rate (--xrate)
Set a rate limit during copy/transfer, get file size and time taken for transfer to complete to obtain rate
Speed should be within range of the specified rate limit
Pass or Fail
Functionality: Read-Write, Third-Party Copy | Determine if server load is redirected to another server |
Check status of file and size on server 1, and/or load average on server for duration of reading /writing
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 |
Functionality: Read-Write, TPC
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 |
Functionality: Read-Write, TPC
Verify files with an ATLAS token can be transferred to ATLAS
Generate ATLAS token, use in XRootD config and read/write file to ATLAS
Transfer should succeed
Pass or Fail
Functionality: Read-Write, TPC
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 |
Functionality: Read-Write, TPC
Determine that XRootD sends data over DAVS protocol
Use xrdcp to send data over DAVS protocol
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 |
Functionality: Read-Write, TPC
Verify dcache/xrootd format data can be transferred to external sites to LHC1
Use xrdcp to transfer dcache/xrootd data to external LHC1 sites
Transfer should succeed
Pass or Fail
Functionality: Read-Write, TPC
Verify dcache/xrootd format data can be transferred to external sites to LHCOPN
Use xrdcp to transfer dcache/xrootd data to external LHCOPN sites
Transfer should succeed
Pass or Fail
Functionality: Read-Write, TPC
Verify files of 0 bytes are not transferred
Transfer file of 0 bytes to server
Transfer should fail (=Pass)
Pass or Fail
Performance: Read-Write, TPC
Obtain speed of reading data
Transfer file to server and obtain speed
Speed given in MB/s
Performance: Read-Write, TPC
Obtain speed of writing data
Transfer file to server and obtain speed
Speed given in MB/s
Performance: Read-Write, TPC
Check files of 64 MB can be transferred
Transfer file of 64 MB to server
Transfer to server should succeed
Pass or Fail
Performance: Read-Write, TPC
Verify transfer of files up to 4 GB
Transfer file of 4 GB to server
Transfer to server should succeed
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: | ✓ | ✓ | ✓ |