From fa44df3627463eed328494b1ff525905f4438f93 Mon Sep 17 00:00:00 2001 From: Matt Dumm Date: Tue, 15 Jun 2021 22:45:11 +0000 Subject: [PATCH] test/nvme: A simple test confirming we can change nvme timeout settings via rpc Signed-off-by: Matt Dumm Change-Id: I1ceb90864eaef9ae131fe7ed13f3ed20384af1b6 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8352 Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Reviewed-by: Ziye Yang Reviewed-by: Aleksey Marchuk Reviewed-by: Michael Haeuptle Reviewed-by: Shuhei Matsumoto --- test/nvme/nvme_rpc_timeouts.sh | 53 ++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 test/nvme/nvme_rpc_timeouts.sh diff --git a/test/nvme/nvme_rpc_timeouts.sh b/test/nvme/nvme_rpc_timeouts.sh new file mode 100755 index 000000000..257737e3c --- /dev/null +++ b/test/nvme/nvme_rpc_timeouts.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +## Test goal: Confirm that rpc setting of bdev_nvme_set_options timeout values is working +## Test steps: +# 1. Run the target with default settings, and use "rpc.py save_config" to check them. +# Defaults are: action_on_timeout=none, timeout_us=0, and timeout_admin_us=0 +# 2. Use "rpc.py bdev_nvme_set_options" to set the timeout values. Capture the +# modified settings using save_config. +# 3. Compare the default settings to the modified settings to make sure they got changed. + +testdir=$(readlink -f $(dirname $0)) +rootdir=$(readlink -f $testdir/../..) +source $rootdir/scripts/common.sh +source $rootdir/test/common/autotest_common.sh + +rpc_py=$rootdir/scripts/rpc.py + +tmpfile_default_settings=/tmp/settings_default_$$ +tmpfile_modified_settings=/tmp/settings_modified_$$ + +$SPDK_BIN_DIR/spdk_tgt -m 0x3 & +spdk_tgt_pid=$! +trap 'kill -9 ${spdk_tgt_pid}; rm -f ${tmpfile_default_settings} ${tmpfile_modified_settings} ; exit 1' SIGINT SIGTERM EXIT +waitforlisten $spdk_tgt_pid + +echo Checking default timeout settings: +$rpc_py save_config > $tmpfile_default_settings + +echo Making settings changes with rpc: +# Set action_on_timeout, timeout_us, and timeout_admin_us to non-default values +$rpc_py bdev_nvme_set_options --timeout-us=12000000 --timeout-admin-us=24000000 --action-on-timeout=abort + +echo Check default vs. modified settings: +$rpc_py save_config > $tmpfile_modified_settings +settings_to_check="action_on_timeout timeout_us timeout_admin_us" +for setting in $settings_to_check; do + setting_before=$(grep ${setting} ${tmpfile_default_settings} | awk '{print $2}' | sed 's/[^a-zA-Z0-9]//g') + setting_modified=$(grep ${setting} ${tmpfile_modified_settings} | awk '{print $2}' | sed 's/[^a-zA-Z0-9]//g') + if [ "$setting_before" == "$setting_modified" ]; then + echo SETTING $setting NOT MODIFIED BY RPC. + echo Default value = $setting_before, value after setting = $setting_modified. FAIL TEST. + exit 1 + else + echo Setting $setting is changed as expected. + fi +done + +# CLEANUP: kill target process and clean up temp files +trap - SIGINT SIGTERM EXIT +rm -f ${tmpfile_default_settings} ${tmpfile_modified_settings} +killprocess $spdk_tgt_pid + +echo RPC TIMEOUT SETTING TEST PASSED.