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