1# SPDX-License-Identifier: BSD-3-Clause 2# Copyright (C) 2024 Intel Corporation 3# All rights reserved. 4# 5 6# $1 - target 7# $2..$n app parameters 8function json_config_test_start_app() { 9 local app=$1 10 shift 11 12 [[ -n "${#app_socket[$app]}" ]] # Check app type 13 [[ -z "${app_pid[$app]}" ]] # Assert if app is not running 14 15 local app_extra_params="" 16 if [[ $SPDK_TEST_VHOST -eq 1 || $SPDK_TEST_VHOST_INIT -eq 1 ]]; then 17 # If PWD is nfs/sshfs we can't create UNIX sockets there. Always use safe location instead. 18 app_extra_params='-S /var/tmp' 19 fi 20 21 $SPDK_BIN_DIR/spdk_tgt ${app_params[$app]} ${app_extra_params} -r ${app_socket[$app]} "$@" & 22 app_pid["$app"]=$! 23 24 echo "Waiting for $app to run..." 25 waitforlisten ${app_pid[$app]} ${app_socket[$app]} 26 echo "" 27} 28 29# $1 - target / initiator 30function json_config_test_shutdown_app() { 31 local app=$1 32 33 # Check app type && assert app was started 34 [[ -n "${#app_socket[$app]}" ]] 35 [[ -n "${app_pid[$app]}" ]] 36 37 # spdk_kill_instance RPC will trigger ASAN 38 kill -SIGINT ${app_pid[$app]} 39 40 for ((i = 0; i < 30; i++)); do 41 if ! kill -0 ${app_pid[$app]} 2> /dev/null; then 42 app_pid["$app"]= 43 break 44 fi 45 sleep 0.5 46 done 47 48 if [[ -n "${app_pid[$app]}" ]]; then 49 echo "SPDK $app shutdown timeout" 50 return 1 51 fi 52 53 echo "SPDK $app shutdown done" 54} 55 56function tgt_rpc() { 57 $rootdir/scripts/rpc.py -s "${app_socket[target]}" "$@" 58} 59 60on_error_exit() { 61 set -x 62 set +e 63 print_backtrace 64 trap - ERR 65 echo "Error on $1 - $2" 66 exit 1 67} 68