The test results are here: NOX/Tests/HopiResults
The Hopi service is a HTTP(S) server supporting GET and PUT methods and capable of generating a HTML listing of files. It's main configuration parameter is the document root directory.
It also has a slave mode which is used in the Chelonia storage system tied to the Shepherd service. In the slave mode: 1. there is no HTML listing generated; 2. the files are removed after download; 3. upload is only possible to an existing file, which will be removed after the upload. (The Shepherd service keeps a second hardlink of each file in a seperate directory, so that's why it makes sense to remove files after transfer.)
The Hopi service can be the only service in a message chain, in that case it does not need to have a Plexer, and the URLs will not contain any extra path; or the Hopi could be after the Plexer, in that case all the URLs contians a fixed path (e.g. https://localhost:60000/hopi/). Both of the two cases should be tested.
Because Hopi is a HTTP(S) server, any HTTP client can be used (for HTTPS maybe needs more configuration)
- web browser (needs importing the client credentials into the browser)
- curl/wget (needs specifying the client credentials as command line argument)
- arccp (the client credentials comes from the userconfig)
Run all these tests with the following 4 cases:
- A: without TLS, without Plexer
- B: without TLS, with Plexer
- C: with TLS, without Plexer
- D: with TLS, with Plexer
The test cases:
- Run the Hopi service with an empty directory (e.g. /tmp/hopi) as document root. Get the HTML listing with a browser, with curl and with arccp.
- Create a directory within the documentroot (e.g. /tmp/hopi/dir), copy 2 files into it (/tmp/hopi/dir/file1, /tmp/hopi/dir/file2), copy a file next to it (/tmp/hopi/file). Get the HTML listing of the documentroot, and then the 'dir' directory (with a browser, with curl and with arccp).
- Copy files with different sizes into the documentroot (e.g. 1kB, 10kB, 100kB, 1MB, 10MB, 100MB, 1GB), download them with curl and arccp, time the transfer.
- Upload files with different sizes using HTTP/PUT (curl, arccp), time the transfer, check if the file can be downloaded.
- Download the same 100MB file simultaneously with 10 clients
- Upload 10 100MB files simultaneously
Slave mode test cases:
- Check if the HTML file listing is really not working.
- Copy a file into the documentroot (e.g. /tmp/hopi/file), download it twice with a browser, curl, arccp - the second attempt should fail.
- Try to upload a file with HTTP/PUT (curl, arccp) to a nonexistent path (e.g. 'not_there') - it should fail.
- Touch an empty file (e.g. /tmp/hopi/put_here), and upload a file twice with HTTP/PUT (curl, arccp), the second attempt should fail.