+++ /dev/null
-#!/bin/bash -x
-
-#
-# test_common.sh
-#
-# Common routines for tests
-#
-#
-# Environment variables that affect tests:
-# KEEP_TEMPDIR If set, the tempdir will not be deleted
-# when the test is over.
-#
-
-# Clean up the temporary directory
-cleanup() {
- if [ -n ${TEMPDIR} ]; then
- rm -rf "${TEMPDIR}"
- fi
-}
-
-# Create a temporary directory where test files will be stored.
-setup_tempdir() {
- TEMPDIR=`mktemp -d`
- if [ -z $KEEP_TEMPDIR ]; then
- trap cleanup INT TERM EXIT
- fi
-}
-
-# Standard initialization function for tests
-init() {
- setup_tempdir
- cd `dirname $0`/..
-}
-
-# Exit with an error message.
-die() {
- echo $@
- exit 1
-}
-
-# Test that flag is set (the element is found in the list)
-is_set()
-{
- local flag=$1; shift
- local flags="$@"
- local i
-
- for i in ${flags}; do
- if [ "${flag}" = "${i}" ]; then
- return 0
- fi
- done
- return 1
-}
-
-# Stop an OSD started by vstart
-stop_osd() {
- osd_index=$1
- pidfile="out/osd.$osd_index.pid"
- if [ -e $pidfile ]; then
- if kill `cat $pidfile` ; then
- poll_cmd "eval test -e $pidfile ; echo \$?" "1" 1 30
- [ $? -eq 1 ] && return 0
- echo "ceph-osd process did not terminate correctly"
- else
- echo "kill `cat $pidfile` failed"
- fi
- else
- echo "ceph-osd process $osd_index is not running"
- fi
- return 1
-}
-
-# Restart an OSD started by vstart
-restart_osd() {
- osd_index=$1
- ./ceph-osd -i $osd_index -c ceph.conf &
-}
-
-# Ask the user a yes/no question and get the response
-yes_or_no_choice() {
- while true; do
- echo -n "${1} [y/n] "
- read ans
- case "${ans}" in
- y|Y|yes|YES|Yes) return 0 ;;
- n|N|no|NO|No) return 1 ;;
- *) echo "Please type yes or no."
- echo ;;
- esac
- done
-}
-
-# Block until the user says "continue" or "c"
-continue_prompt() {
- prompt=${1:-"to go on"}
- while true; do
- echo "Please type 'c' or 'continue' ${prompt}."
- read ans
- case "${ans}" in
- c|continue) return 0 ;;
- *) echo ;;
- esac
- done
-}
-
-# Write a bunch of objects to rados
-write_objects() {
- start_ver=$1
- stop_ver=$2
- num_objs=$3
- obj_size=$4
- pool=$5
- [ -d "${TEMPDIR}" ] || die "must setup_tempdir"
- for v in `seq $start_ver $stop_ver`; do
- chr=`perl -e "print chr(48+$v)"`
- head -c $obj_size /dev/zero | tr '\0' "$chr" > $TEMPDIR/ver$v
- for i in `seq -w 1 $num_objs`; do
- ./rados -c ./ceph.conf -p $pool put obj$i $TEMPDIR/ver$v || die "radostool failed"
- done
- done
-}
-
-read_objects() {
- ver=$1
- num_objs=$2
- obj_size=$3
- [ -d "${TEMPDIR}" ] || die "must setup_tempdir"
- chr=`perl -e "print chr(48+$ver)"`
- head -c $obj_size /dev/zero | tr '\0' "$chr" > $TEMPDIR/exemplar
- for i in `seq -w 1 $num_objs`; do
- ./rados -c ./ceph.conf -p $pool get obj$i $TEMPDIR/out$i || die "radostool failed"
- cmp $TEMPDIR/out$i $TEMPDIR/exemplar || die "got back incorrect obj$i"
- done
-}
-
-poll_cmd() {
- command=$1
- search_str=$2
- polling_interval=$3
- total_time=$4
-
- t=0
- while [ $t -lt $total_time ]; do
- $command | grep "$search_str"
- [ $? -eq 0 ] && return 1
- sleep $polling_interval
- t=$(($t+$polling_interval))
- done
-
- return 0
-}
-
-dump_osd_store() {
- set +x
- echo "dumping osd store..."
- find ./dev/osd* -type f | grep obj | grep head$ | sort | while read file; do
- echo $file
- head -c 10 $file
- echo
- done
-}
-
-start_recovery() {
- CEPH_NUM_OSD=$1
- osd=0
- while [ $osd -lt $CEPH_NUM_OSD ]; do
- ./ceph -c ./ceph.conf tell osd.$osd debug kick_recovery_wq 0
- osd=$((osd+1))
- done
-}
-
-init