xref: /spdk/test/ocf/management/create-destruct.sh (revision b30d57cdad6d2bc75cc1e4e2ebbcebcb0d98dcfa)
1#!/usr/bin/env bash
2
3curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
4rootdir=$(readlink -f $curdir/../../..)
5source $rootdir/test/common/autotest_common.sh
6
7rpc_py=$rootdir/scripts/rpc.py
8
9function bdev_check_claimed() {
10	if [ "$($rpc_py get_bdevs -b "$@" | jq '.[0].claimed')" = "true" ]; then
11		return 0
12	else
13		return 1
14	fi
15}
16
17$SPDK_BIN_DIR/iscsi_tgt &
18spdk_pid=$!
19
20trap 'killprocess $spdk_pid; exit 1' SIGINT SIGTERM EXIT
21
22waitforlisten $spdk_pid
23
24$rpc_py bdev_malloc_create 101 512 -b Malloc0
25$rpc_py bdev_malloc_create 101 512 -b Malloc1
26
27$rpc_py bdev_ocf_create PartCache wt Malloc0 NonExisting
28
29$rpc_py bdev_ocf_get_bdevs PartCache | jq -e \
30	'.[0] | .started == false and .cache.attached and .core.attached == false'
31
32$rpc_py bdev_ocf_get_bdevs NonExisting | jq -e \
33	'.[0] | .name == "PartCache"'
34
35if ! bdev_check_claimed Malloc0; then
36	echo >&2 "Base device expected to be claimed now"
37	exit 1
38fi
39
40$rpc_py bdev_ocf_delete PartCache
41if bdev_check_claimed Malloc0; then
42	echo >&2 "Base device is not expected to be claimed now"
43	exit 1
44fi
45
46$rpc_py bdev_ocf_create FullCache wt Malloc0 Malloc1 --cache-line-size 8
47
48$rpc_py bdev_ocf_get_bdevs FullCache | jq -e \
49	'.[0] | .started and .cache.attached and .core.attached'
50
51if ! (bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1); then
52	echo >&2 "Base devices expected to be claimed now"
53	exit 1
54fi
55
56$rpc_py bdev_ocf_delete FullCache
57if bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1; then
58	echo >&2 "Base devices are not expected to be claimed now"
59	exit 1
60fi
61
62$rpc_py bdev_ocf_create HotCache wt Malloc0 Malloc1 --cache-line-size 16
63
64if ! (bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1); then
65	echo >&2 "Base devices expected to be claimed now"
66	exit 1
67fi
68
69$rpc_py bdev_malloc_delete Malloc0
70
71if bdev_check_claimed Malloc1; then
72	echo >&2 "Base device is not expected to be claimed now"
73	exit 1
74fi
75
76status=$($rpc_py get_bdevs)
77gone=$(echo $status | jq 'map(select(.name == "HotCache")) == []')
78if [[ $gone == false ]]; then
79	echo >&2 "OCF bdev is expected to unregister"
80	exit 1
81fi
82
83# check if shutdown of running CAS bdev is ok
84$rpc_py bdev_ocf_create PartCache wt NonExisting Malloc1
85
86trap - SIGINT SIGTERM EXIT
87
88killprocess $spdk_pid
89