open-cas-linux/test/smoke_test/cas_options
Robert Baldyga dff8f2f7b2 Update smoke_tests
As now exported object path is not printed for cores that do not have
active exported object, there are needed some changes in tests that
relied on previous behavior.

Replace exported object based lookup with cache_id/core_id pair.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-28 12:43:57 +02:00

388 lines
15 KiB
Bash

#!/bin/bash
#
# Copyright(c) 2012-2021 Intel Corporation
# SPDX-License-Identifier: BSD-3-Clause
#
# Whenever adding new options (required or optional), add them to the variable below.
# Every option might be mentioned more than once - it doesn't really matter at this point
export ALL_OPTIONS="
CACHE_ID_OPTION CORE_ID_OPTION NEGATIVE_TEST_OPTION SILENT_COMMAND_OPTION DONT_FAIL_ON_ERROR_OPTION
CACHE_DEVICE_OPTION
CACHE_LOAD_METADATA_OPTION CACHE_FORCE_OPTION
CACHE_DONT_FLUSH_DATA_OPTION
CORE_DEVICE_OPTION
NUMBER_OF_CACHE_PARTITIONS NUMBER_OF_CORE_PARTITIONS MAKE_FILE_SYSTEM
PARTITION_ID_OPTION PRIORITY_OPTION MIN_SIZE_OPTION MAX_SIZE_OPTION CLEANING_POLICY_OPTION
CACHE_ID_OPTION CORE_ID_OPTION MOUNTPOINT_ID_OPTION
TARGET_DEVICE_OPTION PARTITION_IDS_OPTION PARTITION_SIZE_OPTION PARTITION_ID_OPTION PARTITIONS_AMOUNT_OPTION
CLEAN_POL_NS_OPTION WAKE_UP_OPTION STALE_TIME_OPTION FLUSH_BUFFERS_OPTION ACTIVITY_THRESH_OPTION
PROMO_POL_NS_OPTION PROMO_POL_VALUE THRESHOLD_OPTION TRIGGER_OPTION THRESHOLD_VALUE TRIGGER_VALUE THRESHOLD_VALUE_ERROR TRIGGER_VALUE_ERROR
TARGET_DEVICE_OPTION FILESYSTEM_TYPE
IO_CLASS_ID IO_CLASS_PRIORITY IO_CLASS_SIZE_MIN IO_CLASS_SIZE_MAX IO_CLASS_NAME IO_CLASS_CACHE_MODE
CHECK_IS_NVME_ATOMIC TURN_OFF_NVME_DEVICE TURN_ON_NVME_DEVICE
DEVICE_ID_OPTION DEMANDED_STATE_OPTION
STAT_UNIT_OPTION STAT_NAME_OPTION
STORE_CONFIG_OPTION
CLEAN_POL_OPTION
PROMO_POL_OPTION
KERNEL_VER_OPTION KERNEL_MAJOR_OPTION
FIO_MAJOR_OPTION FIO_MINOR_OPTION
"
# Specify ONLY required options here. The name of the variable should start with
# uppercase function's name + "_REQUIRED_OPTIONS".
export START_CACHE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
export STOP_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION"
export ADD_CORE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_DEVICE_OPTION"
export TRY_ADD_CORE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION CORE_DEVICE_OPTION"
export CHECK_CACHE_STATE_REQUIRED_OPTIONS="CACHE_ID_OPTION DEMANDED_STATE_OPTION"
export CHECK_CORE_STATE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION DEMANDED_STATE_OPTION"
export CHECK_DEVICE_IN_CORE_POOL_REQUIRED_OPTIONS="DEVICE_ID_OPTION"
export REMOVE_CORE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION"
export REMOVE_PARTITIONS_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION"
export FLUSH_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION"
export FLUSH_CORE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION"
export SET_CLEANING_POLICY_REQUIRED_OPTIONS="CACHE_ID_OPTION CLEAN_POL_OPTION"
export GET_CLEANING_POLICY_REQUIRED_OPTIONS="CACHE_ID_OPTION"
export SET_PROMOTION_POLICY_REQUIRED_OPTIONS="CACHE_ID_OPTION PROMO_POL_OPTION"
export CHECK_PROMOTION_POLICY_REQUIRED_OPTIONS="CACHE_ID_OPTION PROMO_POL_OPTION"
export SET_FLUSH_PARAMS_REQUIRED_OPTIONS="CACHE_ID_OPTION CLEAN_POL_NS_OPTION"
export GET_FLUSH_PARAMS_REQUIRED_OPTIONS="CACHE_ID_OPTION CLEAN_POL_NS_OPTION"
export SET_PROMOTION_PARAMS_REQUIRED_OPTIONS="CACHE_ID_OPTION PROMO_POL_NS_OPTION"
export CHECK_PROMOTION_PARAMS_REQUIRED_OPTIONS="CACHE_ID_OPTION PROMO_POL_NS_OPTION"
export CHECK_IS_NVME_ATOMIC_REQUIRED_OPTIONS="DEVICE_OPTION"
export CREATE_PARTITION_REQUIRED_OPTIONS="CACHE_ID_OPTION PARTITION_ID_OPTION PRIORITY_OPTION MIN_SIZE_OPTION MAX_SIZE_OPTION CLEANING_POLICY_OPTION"
export MOUNT_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION CORE_ID_OPTION"
export MAKE_PRIMARY_PARTITIONS_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION PARTITION_IDS_OPTION PARTITION_SIZE_OPTION"
export MAKE_EXTENDED_PARTIION_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION PARTITION_ID_OPTION PARTITION_SIZE_OPTION"
export MAKE_LOGICAL_PARTIIONS_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION PARTITIONS_AMOUNT_OPTION PARTITION_SIZE_OPTION"
export MAKE_FILESYSTEM_REQUIRED_OPTIONS="TARGET_DEVICE_OPTION FILESYSTEM_TYPE"
export TURN_OFF_DEVICE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
export TURN_ON_DEVICE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
export TURN_OFF_NVME_DEVICE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
export TURN_ON_NVME_DEVICE_REQUIRED_OPTIONS="CACHE_DEVICE_OPTION"
export START_DUAL_LEVEL_CACHE_REQUIRED_OPTIONS="CACHE_ID_OPTION CACHE_DEVICE_OPTION"
export IO_CLASS_LIST_REQUIRED_OPTIONS="CACHE_ID_OPTION"
export IO_CLASS_LOAD_REQUIRED_OPTIONS="CACHE_ID_OPTION CSV_FILE"
export IO_CLASS_STATS_CSV_REQUIRED_OPTIONS="CACHE_ID_OPTION CSV_FILE"
export IO_CLASS_EXT_ADD_REQUIRED_OPTIONS="CACHE_ID_OPTION IO_CLASS_ID IO_CLASS_PRIORITY IO_CLASS_SIZE_MIN IO_CLASS_SIZE_MAX IO_CLASS_NAME IO_CLASS_CACHE_MODE"
export IO_CLASS_EXT_MODIFY_REQUIRED_OPTIONS="CACHE_ID_OPTION IO_CLASS_ID"
export IO_CLASS_EXT_REMOVE_REQUIRED_OPTIONS="CACHE_ID_OPTION IO_CLASS_ID"
export STATS_REQUIRED_OPTIONS="CACHE_ID_OPTION"
export GET_STATS_VALUE_REQUIRED_OPTIONS="CACHE_ID_OPTION STAT_NAME_OPTION"
export CHECK_KERNEL_VER_REQUIRED_OPTIONS="KERNEL_VER_OPTION KERNEL_MAJOR_OPTION"
export CHECK_FIO_VER_REQUIRED_OPTIONS="FIO_MAJOR_OPTION FIO_MINOR_OPTION"
# Clearing the variables below is not really needed, but it makes the whole
# thing much more clear. Unlike the REQUIRED_OPTIONS, we specify all
# possible parameters here for every function.
# Please note that some options are shared between many functions, so
# make sure the option is set to a correct value before invoking one
# function after another.
############################################################
# OPTIONS SHARED BETWEEN ALL FUNCTIONS #
############################################################
NEGATIVE_TEST_OPTION=""
SILENT_COMMAND_OPTION=""
DONT_FAIL_ON_ERROR_OPTION=""
############################################################
# CLEAR CONFIG #
############################################################
STORE_CONFIG_OPTION=""
############################################################
# START CACHE #
############################################################
CACHE_ID_OPTION=""
CACHE_DEVICE_OPTION=""
# Optional
CACHE_FORCE_OPTION=""
CACHE_LOAD_METADATA_OPTION=""
SEQ_CUTOFF_SIZE=""
############################################################
# STOP CACHE #
############################################################
CACHE_ID_OPTION=""
# Optional
CACHE_DONT_FLUSH_DATA_OPTION=""
############################################################
# ADD CORE #
############################################################
CACHE_ID_OPTION=""
CORE_DEVICE_OPTION=""
############################################################
# REMOVE CORE #
############################################################
CACHE_ID_OPTION=""
CORE_ID_OPTION=""
############################################################
# CHECK DEVICE STATE #
############################################################
DEVICE_ID_OPTION=""
DEMANDED_STATE_OPTION=""
############################################################
# FORMAT NVME #
############################################################
NVME_FORMAT_MODE_OPTION=""
DEVICE_OPTION=""
NVME_FORMAT_FORCE_OPTION=""
############################################################
# CHECK_IS_NVME_ATOMIC #
############################################################
DEVICE_OPTION=""
############################################################
# INIT #
############################################################
NUMBER_OF_CACHE_PARTITIONS=""
NUMBER_OF_CORE_PARTITIONS=""
MAKE_FILE_SYSTEM=""
CACHE_FORCE_OPTION=""
CACHE_MODE_OPTION=""
CACHE_LOAD_METADATA_OPTION=""
############################################################
# ITERATION #
############################################################
NUMBER_OF_CACHE_PARTITIONS=""
NUMBER_OF_CORE_PARTITIONS=""
MAKE_FILE_SYSTEM=""
CACHE_FORCE_OPTION=""
CACHE_MODE_OPTION=""
CACHE_LOAD_METADATA_OPTION=""
############################################################
# DEINIT #
############################################################
NUMBER_OF_CACHE_PARTITIONS=""
NUMBER_OF_CORE_PARTITIONS=""
############################################################
# FLUSH CACHE #
############################################################
CACHE_ID_OPTION=""
############################################################
# FLUSH CORE #
############################################################
CACHE_ID_OPTION=""
CORE_ID_OPTION=""
############################################################
# MOUNT CACHE #
############################################################
CACHE_ID_OPTION=""
CORE_ID_OPTION=""
############################################################
# MAKE PRIMARY PARTITIONS #
############################################################
TARGET_DEVICE_OPTION=""
PARTITION_IDS_OPTION=""
PARTITION_SIZE_OPTION=""
############################################################
# MAKE EXTENDED PARTITION #
############################################################
TARGET_DEVICE_OPTION=""
PARTITION_ID_OPTION=""
PARTITION_SIZE_OPTION=""
############################################################
# MAKE LOGICAL PARTITIONS #
############################################################
TARGET_DEVICE_OPTION=""
PARTITION_SIZE_OPTION=""
PARTITIONS_AMOUNT_OPTION=""
############################################################
# MAKE FILESYSTEM #
############################################################
TARGET_DEVICE_OPTION=""
FILESYSTEM_TYPE=""
############################################################
# IO CLASS LIST #
############################################################
CACHE_ID_OPTION=""
# Optional
CSV_FILE=""
############################################################
# IO CLASS LOAD #
############################################################
CACHE_ID_OPTION=""
CSV_FILE=""
############################################################
# IO CLASS EXT ADD #
############################################################
CACHE_ID_OPTION=""
IO_CLASS_ID=""
IO_CLASS_PRIORITY=""
IO_CLASS_SIZE_MIN=""
IO_CLASS_SIZE_MAX=""
IO_CLASS_NAME=""
IO_CLASS_CACHE_MODE=""
############################################################
# IO CLASS EXT MODIFY #
############################################################
CACHE_ID_OPTION=""
IO_CLASS_ID=""
#Optional
IO_CLASS_PRIORITY=""
IO_CLASS_SIZE_MIN=""
IO_CLASS_SIZE_MAX=""
IO_CLASS_NAME=""
IO_CLASS_CACHE_MODE=""
############################################################
# IO CLASS EXT REMOVE #
############################################################
CACHE_ID_OPTION=""
IO_CLASS_ID=""
############################################################
# IO CLASS STATS CSV #
############################################################
CACHE_ID_OPTION=""
CSV_FILE=""
############################################################
# STATS #
############################################################
CACHE_ID_OPTION=""
############################################################
# GET_STATS_VALUE #
############################################################
DEVICE_ID_OPTION=""
STAT_NAME_OPTION=""
#Optional
STAT_UNIT_OPTION=""
CORE_ID_OPTION=""
IO_CLASS_ID=""
############################################################
# SET_CLEANING_POLICY #
############################################################
DEVICE_ID_OPTION=""
CLEAN_POLICY_OPTION=""
############################################################
# GET_CLEANING_POLICY #
############################################################
DEVICE_ID_OPTION=""
############################################################
# SET_FLUSH_PARAMS #
############################################################
DEVICE_ID_OPTION=""
CLEAN_POLICY_NS_OPTION=""
#Optional
WAKE_UP_OPTION=""
STALE_TIME_OPTION=""
FLUSH_BUFFERS_OPTION=""
ACTIVITY_THRESH_OPTION=""
############################################################
# GET_FLUSH_PARAMS #
############################################################
DEVICE_ID_OPTION=""
CLEAN_POLICY_NS_OPTION=""
############################################################
# SET_PROMOTION_POLICY #
############################################################
DEVICE_ID_OPTION=""
PROMO_POL_OPTION=""
############################################################
# CHECK_PROMOTION_POLICY #
############################################################
DEVICE_ID_OPTION=""
PROMO_POL_OPTION=""
############################################################
# SET_PROMOTION_PARAMS #
############################################################
DEVICE_ID_OPTION=""
PROMO_POL_NS_OPTION=""
#Optional
THRESHOLD_OPTION=""
TRIGGER_OPTION=""
############################################################
# CHECK_PROMOTION_PARAMS #
############################################################
DEVICE_ID_OPTION=""
PROMO_POL_NS_OPTION=""
#Optional
THRESHOLD_OPTION=""
TRIGGER_OPTION=""
############################################################
# CHECK KERNEL VER #
############################################################
KERNEL_VER_OPTION=""
KERNEL_MAJOR_OPTION=""
############################################################
# CHECK FIO VER #
############################################################
FIO_MAJOR_OPTION=""
FIO_MINOR_OPTION=""
############################################################
# FUNCTIONS #
############################################################
# This function is what exports and sets all the options above.
# All options should be automatically cleared after using them in API.
clear_options() {
for OPTION in $ALL_OPTIONS ; do
export $OPTION=""
done
}
# This should be used in all API/system functions to check if all required
# options are set. It doesn't check the syntax at all - only if option is set.
check_options() {
FUNCTION_NAME=$(echo $1 | tr [:lower:] [:upper:])
OPTIONS_NAME="${FUNCTION_NAME}_REQUIRED_OPTIONS"
OPTIONS_TO_CHECK="${!OPTIONS_NAME}"
for OPTION in $OPTIONS_TO_CHECK ; do
if [ -z "${!OPTION}" ] ; then
echo -n "Required option $OPTION is not set "
echo_red "[ERROR]"
end_test 1
fi
done
}
export -f clear_options
export -f check_options
export CAS_OPTIONS_LOADED="1"
echo "--- Open CAS options library loaded ---"