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