1#!/usr/bin/env bash 2# SPDX-License-Identifier: BSD-3-Clause 3# All rights reserved. 4# 5 6## Test goal: Confirm that rpc setting of bdev_nvme_set_options timeout values is working 7## Test steps: 8# 1. Run the target with default settings, and use "rpc.py save_config" to check them. 9# Defaults are: action_on_timeout=none, timeout_us=0, and timeout_admin_us=0 10# 2. Use "rpc.py bdev_nvme_set_options" to set the timeout values. Capture the 11# modified settings using save_config. 12# 3. Compare the default settings to the modified settings to make sure they got changed. 13 14testdir=$(readlink -f $(dirname $0)) 15rootdir=$(readlink -f $testdir/../..) 16source $rootdir/scripts/common.sh 17source $rootdir/test/common/autotest_common.sh 18 19rpc_py=$rootdir/scripts/rpc.py 20 21tmpfile_default_settings=/tmp/settings_default_$$ 22tmpfile_modified_settings=/tmp/settings_modified_$$ 23 24$SPDK_BIN_DIR/spdk_tgt -m 0x3 & 25spdk_tgt_pid=$! 26trap 'kill -9 ${spdk_tgt_pid}; rm -f ${tmpfile_default_settings} ${tmpfile_modified_settings} ; exit 1' SIGINT SIGTERM EXIT 27waitforlisten $spdk_tgt_pid 28 29echo Checking default timeout settings: 30$rpc_py save_config > $tmpfile_default_settings 31 32echo Making settings changes with rpc: 33# Set action_on_timeout, timeout_us, and timeout_admin_us to non-default values 34$rpc_py bdev_nvme_set_options --timeout-us=12000000 --timeout-admin-us=24000000 --action-on-timeout=abort 35 36echo Check default vs. modified settings: 37$rpc_py save_config > $tmpfile_modified_settings 38settings_to_check="action_on_timeout timeout_us timeout_admin_us" 39for setting in $settings_to_check; do 40 setting_before=$(grep ${setting} ${tmpfile_default_settings} | awk '{print $2}' | sed 's/[^a-zA-Z0-9]//g') 41 setting_modified=$(grep ${setting} ${tmpfile_modified_settings} | awk '{print $2}' | sed 's/[^a-zA-Z0-9]//g') 42 if [ "$setting_before" == "$setting_modified" ]; then 43 echo SETTING $setting NOT MODIFIED BY RPC. 44 echo Default value = $setting_before, value after setting = $setting_modified. FAIL TEST. 45 exit 1 46 else 47 echo Setting $setting is changed as expected. 48 fi 49done 50 51# CLEANUP: kill target process and clean up temp files 52trap - SIGINT SIGTERM EXIT 53rm -f ${tmpfile_default_settings} ${tmpfile_modified_settings} 54killprocess $spdk_tgt_pid 55 56echo RPC TIMEOUT SETTING TEST PASSED. 57