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.