#!/bin/bash -ex

# this should be run from the src directory in the ceph.git

CEPH_SRC=$(pwd)
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$CEPH_SRC/.libs"
export PYTHONPATH="$CEPH_SRC/pybind:$CEPH_SRC/test/pybind"
for x in $CEPH_SRC/build/lib* ; do
  export PYTHONPATH="${PYTHONPATH}:${x}"
done
PATH="$CEPH_SRC:$PATH"

recreate_pool() {
    POOL_NAME=$1
    PG_NUM=100
    ceph osd pool delete $POOL_NAME $POOL_NAME --yes-i-really-really-mean-it
    ceph osd pool create $POOL_NAME $PG_NUM
}

run_cli_tests() {
    recreate_pool rbd
    $CEPH_SRC/../qa/workunits/rbd/import_export.sh
    recreate_pool rbd
    $CEPH_SRC/../qa/workunits/rbd/copy.sh
    recreate_pool rbd
    $CEPH_SRC/../qa/workunits/rbd/journal.sh
}

# tests that do not depend on image format / features
run_generic_tests() {
    $CEPH_SRC/../qa/workunits/rbd/verify_pool.sh

    recreate_pool rbd
    $CEPH_SRC/../qa/workunits/rbd/journal.sh
    recreate_pool rbd
    $CEPH_SRC/../qa/workunits/rbd/test_admin_socket.sh
}

run_api_tests() {
    # skip many_snaps since it takes several minutes
    nosetests -v test_rbd -e '.*many_snaps'
    # ceph_test_librbd creates its own pools
    ceph_test_librbd
}

ceph_test_cls_rbd
run_generic_tests
run_api_tests
run_cli_tests

export RBD_CREATE_ARGS="--image-format 2"
run_cli_tests

for i in 0 1 61 109
do
    export RBD_FEATURES=$i
    run_api_tests
done

echo OK
