1#!/usr/bin/env bash 2# SPDX-License-Identifier: BSD-3-Clause 3# Copyright (C) 2024 Intel Corporation 4# All rights reserved. 5# 6 7rootdir=$(readlink -f $(dirname $0)/../..) 8source "$rootdir/test/common/autotest_common.sh" 9source "$rootdir/test/nvmf/common.sh" 10source "$rootdir/test/json_config/common.sh" 11 12declare -A app_pid=([target]="") 13declare -A app_socket=([target]='/var/tmp/spdk_tgt.sock') 14declare -A configs_path=([target]="$rootdir/test/json_config/tgt_config.json") 15 16cleanup() { 17 if [[ -n "${app_pid[target]}" ]]; then 18 killprocess ${app_pid[target]} 19 fi 20 rm -f "${configs_path[@]}" 21} 22 23trap 'cleanup' ERR EXIT 24 25echo "INFO: launching target and waiting for RPC..." 26json_config_test_start_app target --wait-for-rpc 27 28waitforlisten ${app_pid[target]} ${app_socket[target]} 29tgt_rpc rpc_get_methods -c | grep -q "framework_start_init" 30 31# Ensure we are not in SPDK_RPC_RUNTIME yet. 32NOT tgt_rpc bdev_get_bdevs &> /dev/null 33 34# Set additional configuration. 35tgt_rpc bdev_set_options -d -p 8192 -c 128 36 37tgt_rpc framework_start_init 38 39echo "Waiting for target to run..." 40waitforlisten ${app_pid[target]} ${app_socket[target]} 41tgt_rpc framework_wait_init 42 43# We must be in SPDK_RPC_RUNTIME now. 44tgt_rpc bdev_get_bdevs &> /dev/null 45 46tgt_rpc save_config > ${configs_path[target]} 47 48json_config_test_shutdown_app target 49 50json_config_test_start_app target --wait-for-rpc --json ${configs_path[target]} 51waitforlisten ${app_pid[target]} ${app_socket[target]} 52tgt_rpc rpc_get_methods -c | grep -q "framework_start_init" 53 54# Override configuration provided with JSON file. 55expected_auto_examine="true" 56expected_io_pool_size="16384" 57expected_io_cache_size="256" 58tgt_rpc bdev_set_options -e -p $expected_io_pool_size -c $expected_io_cache_size 59tgt_rpc framework_start_init 60 61# Check if the configuration override was successful. 62jq_args='.[] | select(.method=="bdev_set_options").params' 63bdev_set_options_params=$(tgt_rpc framework_get_config bdev | jq -r "$jq_args") 64set_auto_examine=$(echo $bdev_set_options_params | jq .bdev_auto_examine) 65set_io_pool_size=$(echo $bdev_set_options_params | jq .bdev_io_pool_size) 66set_io_cache_size=$(echo $bdev_set_options_params | jq .bdev_io_cache_size) 67 68[ "$set_auto_examine" = "$expected_auto_examine" ] 69[ "$set_io_pool_size" = "$expected_io_pool_size" ] 70[ "$set_io_cache_size" = "$expected_io_cache_size" ] 71 72echo "INFO: shutting down applications..." 73json_config_test_shutdown_app target 74 75echo "Success" 76