xref: /spdk/test/nvme/nvme_rpc_timeouts.sh (revision eb53c23236cccb6b698b7ca70ee783da1c574b5f)
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