xref: /spdk/test/json_config/common.sh (revision f7239999057de4230ebcd6b1ce421a0fb4357ed4)
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