xref: /spdk/test/ocf/management/multicore.sh (revision 7192849ed24874f3e9cc31e8a33a9b32c49b9506)
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
9spdk_pid='?'
10function start_spdk() {
11	$SPDK_BIN_DIR/iscsi_tgt &
12	spdk_pid=$!
13	trap 'killprocess $spdk_pid; exit 1' SIGINT SIGTERM EXIT
14	waitforlisten $spdk_pid
15}
16function stop_spdk() {
17	killprocess $spdk_pid
18	trap - SIGINT SIGTERM EXIT
19}
20
21start_spdk
22
23# Hotplug case
24
25$rpc_py bdev_malloc_create 1 512 -b Core0
26$rpc_py bdev_malloc_create 1 512 -b Core1
27
28$rpc_py bdev_ocf_create C1 wt Cache Core0
29$rpc_py bdev_ocf_create C2 wt Cache Core1
30
31$rpc_py bdev_ocf_get_bdevs | jq -e \
32	'any(select(.started)) == false'
33
34$rpc_py bdev_malloc_create 101 512 -b Cache
35
36$rpc_py bdev_ocf_get_bdevs | jq -e \
37	'all(select(.started)) == true'
38
39#Be sure that we will not fail delete because examine is still in progress
40waitforbdev C2
41
42# Detaching cores
43
44$rpc_py bdev_ocf_delete C2
45
46$rpc_py bdev_ocf_get_bdevs C1 | jq -e \
47	'.[0] | .started'
48
49$rpc_py bdev_ocf_create C2 wt Cache Core1
50
51$rpc_py bdev_ocf_get_bdevs C2 | jq -e \
52	'.[0] | .started'
53
54# Normal shutdown
55
56stop_spdk
57
58# Hotremove case
59start_spdk
60
61$rpc_py bdev_malloc_create 101 512 -b Cache
62$rpc_py bdev_malloc_create 101 512 -b Malloc
63$rpc_py bdev_malloc_create 1 512 -b Core
64
65$rpc_py bdev_ocf_create C1 wt Cache Malloc
66$rpc_py bdev_ocf_create C2 wt Cache Core
67
68$rpc_py bdev_ocf_get_bdevs Cache | jq \
69	'length == 2'
70
71$rpc_py bdev_malloc_delete Cache
72
73$rpc_py bdev_ocf_get_bdevs | jq -e \
74	'. == []'
75
76# Not fully initialized shutdown
77
78$rpc_py bdev_ocf_create C1 wt Malloc NonExisting
79$rpc_py bdev_ocf_create C2 wt Malloc NonExisting
80$rpc_py bdev_ocf_create C3 wt Malloc Core
81
82stop_spdk
83