Compiling
Install build dependencies
SL6/CentOS7
sudo yum install openssl-devel libxml2-devel gsoap-devel \
doxygen cmake abi-compliance-checker
Ubuntu
sudo apt-get install abi-compliance-checker cmake debhelper doxygen \
gsoap libgridsite-dev libssl-dev libxml2-dev pkg-config
How to build
Here is how to do a simple build of davix - have a look at the next section if you need to tweak some configuration option in cmake.
git clone https://github.com/cern-fts/davix.git
cd davix
git submodule update --recursive --init
mkdir build && cd build
cmake ..
make
Build options
Unit tests
You can run the tests with make test
.
Functional tests
Running functional tests requires authentication credentials, so they are not enabled by default. As a first step,
add -DFUNCTIONAL_TESTS=TRUE
to cmake.
You will see that davix no longer compiles - it expects to find the file credentials/creds.cmake
. This
is the file which orchestrates which functional tests are run.
Here is an example - this is the file which runs our nightly build functional tests.
Passwords were removed for obvious reasons.
### tests using a proxy
test_with_proxy("davs://dpmhead-rc.cern.ch/dpm/cern.ch/home/dteam/davix-tests")
test_with_proxy("davs://prometheus.desy.de/VOs/dteam/davix-tests")
### AWS S3
set(accesskey xxx)
set(secretkey xxx)
set(url https://some-bucket.s3.amazonaws.com/davix-tests)
set(alt https://s3-ap-southeast-2.amazonaws.com/some-bucket/davix-tests)
set(region ap-southeast-2)
# test v2
test_s3(${accesskey} ${secretkey} ${url} "" noalt)
test_s3(${accesskey} ${secretkey} ${alt} "" alt)
# test v4
test_s3(${accesskey} ${secretkey} ${url} ${region} noalt)
test_s3(${accesskey} ${secretkey} ${alt} ${region} alt)
### CERN ceph
set(accesskey xxx)
set(secretkey xxx)
set(url s3s://some-bucket.cs3.cern.ch/davix-tests)
test_s3(${accesskey} ${secretkey} ${url} "" noalt)
### Azure
set(azurekey xxx)
set(url https://some-user.blob.core.windows.net/some-bucket/davix-tests)
test_azure(${azurekey} ${url})
Since this file contains sensitive information, access to it should be restricted and it should never be committed to the source repository.
The test_with_proxy
function uses the default grid-style proxy, /tmp/x509_u$uid
. It should be
generated beforehand.
To run the tests automatically, use the script under test/run-tests.sh
. This script further
expects the existence of credentials/obtain-proxy.sh
, which is run to generate a proxy
without any user intervention. Here is an example:
#!/usr/bin/env bash
echo "certificate_password_goes_here" | voms-proxy-init --cert $PWD/credentials/cert.p12 -pwstdin --voms dteam
Using test/run-tests.sh
, you can run automatic functional tests in jenkins, for example.
Generating the documentation
We use doxygen for the API documentation and sphinx for this how-to guide. Run make doc
to generate both.