XRootD Site Testing Framework

Documentation: XRootD Testing Framework

 

 

UML Class Structure Diagram For Test Command Generation and Returned Data:

UML Diagram XRootD Testing (2).png

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: