18ca6dbcdSKrzysztof Karas# SPDX-License-Identifier: BSD-3-Clause 28ca6dbcdSKrzysztof Karas# Copyright (C) 2024 Intel Corporation 38ca6dbcdSKrzysztof Karas# All rights reserved. 48ca6dbcdSKrzysztof Karas# 58ca6dbcdSKrzysztof Karas 68ca6dbcdSKrzysztof Karas# $1 - target 78ca6dbcdSKrzysztof Karas# $2..$n app parameters 88ca6dbcdSKrzysztof Karasfunction json_config_test_start_app() { 98ca6dbcdSKrzysztof Karas local app=$1 108ca6dbcdSKrzysztof Karas shift 118ca6dbcdSKrzysztof Karas 128ca6dbcdSKrzysztof Karas [[ -n "${#app_socket[$app]}" ]] # Check app type 138ca6dbcdSKrzysztof Karas [[ -z "${app_pid[$app]}" ]] # Assert if app is not running 148ca6dbcdSKrzysztof Karas 158ca6dbcdSKrzysztof Karas local app_extra_params="" 168ca6dbcdSKrzysztof Karas if [[ $SPDK_TEST_VHOST -eq 1 || $SPDK_TEST_VHOST_INIT -eq 1 ]]; then 178ca6dbcdSKrzysztof Karas # If PWD is nfs/sshfs we can't create UNIX sockets there. Always use safe location instead. 188ca6dbcdSKrzysztof Karas app_extra_params='-S /var/tmp' 198ca6dbcdSKrzysztof Karas fi 208ca6dbcdSKrzysztof Karas 218ca6dbcdSKrzysztof Karas $SPDK_BIN_DIR/spdk_tgt ${app_params[$app]} ${app_extra_params} -r ${app_socket[$app]} "$@" & 228ca6dbcdSKrzysztof Karas app_pid["$app"]=$! 238ca6dbcdSKrzysztof Karas 248ca6dbcdSKrzysztof Karas echo "Waiting for $app to run..." 258ca6dbcdSKrzysztof Karas waitforlisten ${app_pid[$app]} ${app_socket[$app]} 268ca6dbcdSKrzysztof Karas echo "" 278ca6dbcdSKrzysztof Karas} 288ca6dbcdSKrzysztof Karas 298ca6dbcdSKrzysztof Karas# $1 - target / initiator 308ca6dbcdSKrzysztof Karasfunction json_config_test_shutdown_app() { 318ca6dbcdSKrzysztof Karas local app=$1 328ca6dbcdSKrzysztof Karas 338ca6dbcdSKrzysztof Karas # Check app type && assert app was started 348ca6dbcdSKrzysztof Karas [[ -n "${#app_socket[$app]}" ]] 358ca6dbcdSKrzysztof Karas [[ -n "${app_pid[$app]}" ]] 368ca6dbcdSKrzysztof Karas 378ca6dbcdSKrzysztof Karas # spdk_kill_instance RPC will trigger ASAN 388ca6dbcdSKrzysztof Karas kill -SIGINT ${app_pid[$app]} 398ca6dbcdSKrzysztof Karas 408ca6dbcdSKrzysztof Karas for ((i = 0; i < 30; i++)); do 418ca6dbcdSKrzysztof Karas if ! kill -0 ${app_pid[$app]} 2> /dev/null; then 428ca6dbcdSKrzysztof Karas app_pid["$app"]= 438ca6dbcdSKrzysztof Karas break 448ca6dbcdSKrzysztof Karas fi 458ca6dbcdSKrzysztof Karas sleep 0.5 468ca6dbcdSKrzysztof Karas done 478ca6dbcdSKrzysztof Karas 488ca6dbcdSKrzysztof Karas if [[ -n "${app_pid[$app]}" ]]; then 498ca6dbcdSKrzysztof Karas echo "SPDK $app shutdown timeout" 508ca6dbcdSKrzysztof Karas return 1 518ca6dbcdSKrzysztof Karas fi 528ca6dbcdSKrzysztof Karas 538ca6dbcdSKrzysztof Karas echo "SPDK $app shutdown done" 548ca6dbcdSKrzysztof Karas} 558ca6dbcdSKrzysztof Karas 56*f7239999SKrzysztof Karasfunction tgt_rpc() { 57*f7239999SKrzysztof Karas $rootdir/scripts/rpc.py -s "${app_socket[target]}" "$@" 58*f7239999SKrzysztof Karas} 59*f7239999SKrzysztof Karas 608ca6dbcdSKrzysztof Karason_error_exit() { 618ca6dbcdSKrzysztof Karas set -x 628ca6dbcdSKrzysztof Karas set +e 638ca6dbcdSKrzysztof Karas print_backtrace 648ca6dbcdSKrzysztof Karas trap - ERR 658ca6dbcdSKrzysztof Karas echo "Error on $1 - $2" 668ca6dbcdSKrzysztof Karas exit 1 678ca6dbcdSKrzysztof Karas} 68