This wiki is obsolete, see the NorduGrid web pages for up to date information.


From NorduGrid
Jump to navigationJump to search

Hopi service

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)

Test cases

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:

  1. 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.
  2. 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).
  3. 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.
  4. Upload files with different sizes using HTTP/PUT (curl, arccp), time the transfer, check if the file can be downloaded.
  5. Download the same 100MB file simultaneously with 10 clients
  6. 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.