Blob Blame History Raw
#
# Library of shared functions for Cassandra image tests.
#
# Always use sourced from a specific container testfile

test -n "${IMAGE_NAME-}" || false 'make sure $IMAGE_NAME is defined'
test -n "${VERSION-}" || false 'make sure $VERSION is defined'

# get_version_number [version_string]
# --------------------
# Extracts the version number from provided version string.
# e.g. 3.0upg => 3.0
function get_version_number() {
    echo $1 | sed -e 's/^\([0-9.]*\).*/\1/'
}

function cassandra_cmd() {
    docker run --rm $IMAGE_NAME cqlsh $CONTAINER_IP -u "$USER" -p "$PASS" -e "${@}"
}

function test_connection() {
    local name=$1 ; shift
    CONTAINER_IP=$(ct_get_cip $name)
    echo "  Testing Cassandra connection to $CONTAINER_IP..."
    local max_attempts=30
    local sleep_time=2
    for i in $(seq $max_attempts); do
        echo "    Trying to connect..."
        set +e
        cassandra_cmd "show version"
        status=$?
        set -e
        if [ $status -eq 0 ]; then
            sleep $sleep_time
            cassandra_cmd "show version" || continue
            echo "  Success!"
            return 0
        fi
        sleep $sleep_time
    done
    echo "  Giving up: Failed to connect. Logs:"
    docker logs $(ct_get_cid $name)
    return 1
}

function test_general() {
    local name=$1 ; shift
    CONTAINER_ARGS="-e CASSANDRA_ADMIN_PASSWORD=$PASS"
    ct_create_container $name
    CONTAINER_IP=$(ct_get_cip $name)
    test_connection $name
    echo "  Testing scl usage"
    ct_scl_usage_old $name 'cassandra -v' $(get_version_number $VERSION)
    test_cassandra $name
    cid=$(ct_get_cid $name)
    docker stop $cid
}