summaryrefslogtreecommitdiffstats
path: root/src/spdk/test/pmem/common.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
commit483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch)
treee5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/spdk/test/pmem/common.sh
parentInitial commit. (diff)
downloadceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.tar.xz
ceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.zip
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/spdk/test/pmem/common.sh')
-rw-r--r--src/spdk/test/pmem/common.sh107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/spdk/test/pmem/common.sh b/src/spdk/test/pmem/common.sh
new file mode 100644
index 00000000..add36719
--- /dev/null
+++ b/src/spdk/test/pmem/common.sh
@@ -0,0 +1,107 @@
+BASE_DIR=$(readlink -f $(dirname $0))
+[[ -z "$TEST_DIR" ]] && TEST_DIR="$(cd $BASE_DIR/../../ && pwd)"
+rpc_py="$TEST_DIR/scripts/rpc.py "
+
+source $TEST_DIR/test/common/autotest_common.sh
+
+# Prints error message and return error code, closes vhost app and remove
+# pmem pool file
+# input: error message, error code
+function error()
+{
+ local error_code=${2:-1}
+ echo "==========="
+ echo -e "ERROR: $1"
+ echo "error code: $error_code"
+ echo "==========="
+ vhost_kill
+ pmem_clean_pool_file
+ return $error_code
+}
+
+# check if there is pool file & remove it
+# input: path to pool file
+# default: $TEST_DIR/test/pmem/pool_file
+function pmem_clean_pool_file()
+{
+ local pool_file=${1:-$TEST_DIR/test/pmem/pool_file}
+
+ if [ -f $pool_file ]; then
+ echo "Deleting old pool_file"
+ rm $pool_file
+ fi
+}
+
+# create new pmem file
+# input: path to pool file, size in MB, block_size
+# default: $TEST_DIR/test/pmem/pool_file 32 512
+function pmem_create_pool_file()
+{
+ local pool_file=${1:-$TEST_DIR/test/pmem/pool_file}
+ local size=${2:-32}
+ local block_size=${3:-512}
+
+ pmem_clean_pool_file $pool_file
+ echo "Creating new pool file"
+ if ! $rpc_py create_pmem_pool $pool_file $size $block_size; then
+ error "Creating pool_file failed!"
+ fi
+
+ if [ ! -f $pool_file ]; then
+ error "Creating pool_file failed!"
+ fi
+}
+
+function pmem_unmount_ramspace
+{
+ if [ -d "$TEST_DIR/test/pmem/ramspace" ]; then
+ if mount | grep -q "$TEST_DIR/test/pmem/ramspace"; then
+ umount $TEST_DIR/test/pmem/ramspace
+ fi
+
+ rm -rf $TEST_DIR/test/pmem/ramspace
+ fi
+}
+
+function pmem_print_tc_name
+{
+ echo ""
+ echo "==============================================================="
+ echo "Now running: $1"
+ echo "==============================================================="
+}
+
+function vhost_start()
+{
+ local vhost_pid
+
+ $TEST_DIR/app/vhost/vhost &
+ if [ $? != 0 ]; then
+ echo -e "ERROR: Failed to launch vhost!"
+ return 1
+ fi
+
+ vhost_pid=$!
+ echo $vhost_pid > $TEST_DIR/test/pmem/vhost.pid
+ waitforlisten $vhost_pid
+}
+
+function vhost_kill()
+{
+ local vhost_pid_file="$TEST_DIR/test/pmem/vhost.pid"
+ local vhost_pid="$(cat $vhost_pid_file)"
+
+ if [[ ! -f $TEST_DIR/test/pmem/vhost.pid ]]; then
+ echo -e "ERROR: No vhost pid file found!"
+ return 1
+ fi
+
+ if ! kill -s INT $vhost_pid; then
+ echo -e "ERROR: Failed to exit vhost / invalid pid!"
+ rm $vhost_pid_file
+ return 1
+ fi
+
+ sleep 1
+ rm $vhost_pid_file
+}