57 lines
1.6 KiB
Text
57 lines
1.6 KiB
Text
#
|
|
# 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
|
|
}
|