create testcase for src OpenIPMI rpm python3-openipmi

This commit is contained in:
2026-04-07 11:49:56 +08:00
parent c605d16af1
commit 0e6dab9b19
4 changed files with 412 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-07
# @License : Mulan PSL v2
# @Desc : 测试python3-openipmi软件包是否能够正确安装。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 设置环境变量
SCRIPT_NAME="test_python3-openipmi_function_install"
PACKAGE_NAME="python3-openipmi"
# 日志函数
LOG_INFO() {
echo "[INFO] $1"
}
LOG_ERROR() {
echo "[ERROR] $1" >&2
}
# 检查软件包是否在yum源中
check_package_in_repo() {
LOG_INFO "检查yum源中是否存在${PACKAGE_NAME}软件包"
dnf list available ${PACKAGE_NAME} 2>/dev/null | grep -q ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "yum源中不存在${PACKAGE_NAME}软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在${PACKAGE_NAME}软件包"
exit 255
fi
LOG_INFO "yum源中存在${PACKAGE_NAME}软件包"
}
# 检查软件包是否已安装
check_package_installed() {
LOG_INFO "检查${PACKAGE_NAME}软件包是否已安装"
rpm -q ${PACKAGE_NAME} >/dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "${PACKAGE_NAME}软件包已安装"
return 0
else
LOG_INFO "${PACKAGE_NAME}软件包未安装"
return 1
fi
}
# 安装软件包
install_package() {
LOG_INFO "安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}软件包失败"
LOG_INFO "${PACKAGE_NAME}软件包安装成功"
}
# 卸载软件包
uninstall_package() {
LOG_INFO "卸载${PACKAGE_NAME}软件包"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}软件包失败"
LOG_INFO "${PACKAGE_NAME}软件包卸载成功"
}
# 测试软件包功能
test_package_function() {
LOG_INFO "测试${PACKAGE_NAME}软件包功能"
# 检查ipmitool命令是否存在
which ipmitool >/dev/null 2>&1
CHECK_RESULT $? 0 0 "ipmitool命令不存在"
# 测试ipmitool基本命令
ipmitool -V >/dev/null 2>&1
CHECK_RESULT $? 0 0 "ipmitool命令执行失败"
LOG_INFO "ipmitool命令测试成功"
# 测试python3-openipmi模块
python3 -c "import pyipmi; print("pyipmi module imported successfully")" 2>/dev/null
CHECK_RESULT $? 0 0 "python3-openipmi模块导入失败"
LOG_INFO "python3-openipmi模块测试成功"
}
# 主函数
main() {
LOG_INFO "开始测试${PACKAGE_NAME}软件包安装功能"
# 检查软件包是否在yum源中
check_package_in_repo
# 检查软件包是否已安装
local was_installed=0
check_package_installed
if [ $? -eq 0 ]; then
was_installed=1
LOG_INFO "测试前${PACKAGE_NAME}软件包已安装,测试后保持安装状态"
else
was_installed=0
LOG_INFO "测试前${PACKAGE_NAME}软件包未安装,测试后需要卸载"
fi
# 如果未安装,则安装软件包
if [ ${was_installed} -eq 0 ]; then
install_package
fi
# 测试软件包功能
test_package_function
# 环境清理
LOG_INFO "开始环境清理"
if [ ${was_installed} -eq 0 ]; then
uninstall_package
else
LOG_INFO "保持${PACKAGE_NAME}软件包安装状态"
fi
LOG_INFO "${PACKAGE_NAME}软件包安装功能测试完成"
}
# 执行主函数
main "$@"
}
main "$@"

View File

@@ -0,0 +1,66 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-07
# @License : Mulan PSL v2
# @Desc : 测试能否列出python3-openipmi软件包提供的可用模块或功能。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义变量
PACKAGE_NAME="python3-openipmi"
MODULE_LIST_COMMAND="python3 -c \"import openipmi; print(dir(openipmi))\""
INSTALLED_FLAG=0
# 检查软件包是否已在yum源中
LOG_INFO "检查yum源中是否存在软件包 $PACKAGE_NAME"
dnf list available $PACKAGE_NAME > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到软件包 $PACKAGE_NAME"
exit 255
fi
# 检查是否已安装软件包
LOG_INFO "检查系统是否已安装 $PACKAGE_NAME"
rpm -q $PACKAGE_NAME > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "软件包 $PACKAGE_NAME 已安装"
INSTALLED_FLAG=1
else
LOG_INFO "软件包 $PACKAGE_NAME 未安装,开始安装"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
INSTALLED_FLAG=0
fi
# 测试能否列出python3-openipmi软件包提供的可用模块或功能
LOG_INFO "测试能否列出 $PACKAGE_NAME 软件包提供的可用模块或功能"
eval $MODULE_LIST_COMMAND > /dev/null 2>&1
CHECK_RESULT $? 0 0 "列出 $PACKAGE_NAME 模块失败"
# 清理环境:如果之前未安装,则卸载软件包
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "清理环境:卸载 $PACKAGE_NAME"
dnf remove -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 失败"
else
LOG_INFO "保持 $PACKAGE_NAME 安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,113 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-07
# @License : Mulan PSL v2
# @Desc : 测试python3-openipmi软件包是否能够被正确卸载。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色输出
LOG_INFO() {
echo -e "\033[1;34m[INFO]\033[0m $1"
}
LOG_ERROR() {
echo -e "\033[1;31m[ERROR]\033[0m $1"
}
# 检查软件包是否在yum源中
check_package_in_repo() {
dnf list available "$1" &> /dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $1 不在yum源中"
exit 255
fi
}
# 检查命令参数是否存在
check_command_option() {
if ! $1 --help 2>&1 | grep -q "$2"; then
LOG_ERROR "命令 $1 不支持参数 $2"
exit 255
fi
}
# 检查软件包是否已安装
check_installed() {
rpm -q "$1" &> /dev/null
return $?
}
# 记录初始安装状态
initial_installed=false
LOG_INFO "开始测试python3-openipmi软件包的卸载功能"
# 检查软件包是否在yum源中
LOG_INFO "检查python3-openipmi是否在yum源中"
check_package_in_repo python3-openipmi
# 检查当前是否已安装
LOG_INFO "检查python3-openipmi是否已安装"
if check_installed python3-openipmi; then
LOG_INFO "python3-openipmi已安装测试结束后保持安装状态"
initial_installed=true
else
LOG_INFO "python3-openipmi未安装将进行安装测试"
fi
# 如果未安装,则先安装
if [ "$initial_installed" = false ]; then
LOG_INFO "安装python3-openipmi软件包"
dnf install -y python3-openipmi
CHECK_RESULT $? 0 0 "安装python3-openipmi失败"
# 验证安装
LOG_INFO "验证python3-openipmi是否安装成功"
check_installed python3-openipmi
CHECK_RESULT $? 0 0 "验证python3-openipmi安装失败"
fi
# 测试卸载功能
LOG_INFO "测试卸载python3-openipmi软件包"
dnf remove -y python3-openipmi
CHECK_RESULT $? 0 0 "卸载python3-openipmi失败"
# 验证卸载
LOG_INFO "验证python3-openipmi是否卸载成功"
check_installed python3-openipmi
CHECK_RESULT $? 1 0 "python3-openipmi卸载后仍然存在"
# 环境恢复
LOG_INFO "恢复测试环境"
if [ "$initial_installed" = true ]; then
LOG_INFO "重新安装python3-openipmi以恢复原始状态"
dnf install -y python3-openipmi
CHECK_RESULT $? 0 0 "恢复python3-openipmi安装失败"
# 验证恢复
LOG_INFO "验证环境恢复状态"
check_installed python3-openipmi
CHECK_RESULT $? 0 0 "环境恢复失败python3-openipmi未正确安装"
else
LOG_INFO "测试环境已恢复python3-openipmi保持未安装状态"
fi
LOG_INFO "python3-openipmi卸载功能测试完成"
}
main "$@"

View File

@@ -0,0 +1,97 @@
#!/usr/bin/bash
# Copyright (c) 2024 ISCAS .ALL rights reserved.
# This program is licensed under Mulan PSL v2.
# You can use it according to the terms and conditions of the Mulan PSL v2.
# http://license.coscl.org.cn/MulanPSL2
# THIS PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# #############################################
# @Author : honghua
# @Contact : honghua@iscas.ac.cn
# @Date : 2026-04-07
# @License : Mulan PSL v2
# @Desc : 测试python3-openipmi软件包的版本信息能否正确查询。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装python3-openipmi软件包
LOG_INFO "检查是否已安装python3-openipmi软件包"
rpm -q python3-openipmi > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "python3-openipmi软件包已安装标记为保持安装状态"
KEEP_INSTALLED=1
else
LOG_INFO "python3-openipmi软件包未安装标记为需要清理"
KEEP_INSTALLED=0
fi
# 检查yum源中是否有python3-openipmi软件包
LOG_INFO "检查yum源中是否有python3-openipmi软件包"
dnf list available python3-openipmi > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中未找到python3-openipmi软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到python3-openipmi软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ ${KEEP_INSTALLED} -eq 0 ]; then
LOG_INFO "开始安装python3-openipmi软件包"
dnf install -y python3-openipmi > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装python3-openipmi软件包失败"
if [ $? -ne 0 ]; then
LOG_ERROR "安装python3-openipmi软件包失败"
exit 1
fi
LOG_INFO "python3-openipmi软件包安装成功"
fi
# 测试查询python3-openipmi软件包版本信息
LOG_INFO "测试查询python3-openipmi软件包版本信息"
rpm -q --queryformat="%{VERSION}-%{RELEASE}\n" python3-openipmi > /dev/null 2>&1
CHECK_RESULT $? 0 0 "查询python3-openipmi软件包版本信息失败"
if [ $? -ne 0 ]; then
LOG_ERROR "查询python3-openipmi软件包版本信息失败"
if [ ${KEEP_INSTALLED} -eq 0 ]; then
LOG_INFO "清理环境卸载python3-openipmi软件包"
dnf remove -y python3-openipmi > /dev/null 2>&1
fi
exit 1
fi
VERSION=$(rpm -q --queryformat="%{VERSION}-%{RELEASE}\n" python3-openipmi 2>/dev/null)
if [ -n "${VERSION}" ]; then
LOG_INFO "python3-openipmi软件包版本信息为${VERSION}"
else
LOG_ERROR "未获取到python3-openipmi软件包版本信息"
if [ ${KEEP_INSTALLED} -eq 0 ]; then
LOG_INFO "清理环境卸载python3-openipmi软件包"
dnf remove -y python3-openipmi > /dev/null 2>&1
fi
exit 1
fi
# 清理环境:如果测试前未安装,则卸载软件包
if [ ${KEEP_INSTALLED} -eq 0 ]; then
LOG_INFO "清理环境卸载python3-openipmi软件包"
dnf remove -y python3-openipmi > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载python3-openipmi软件包失败"
if [ $? -ne 0 ]; then
LOG_ERROR "卸载python3-openipmi软件包失败"
exit 1
fi
LOG_INFO "环境清理完成python3-openipmi软件包已卸载"
else
LOG_INFO "保持python3-openipmi软件包安装状态无需清理"
fi
LOG_INFO "测试完成python3-openipmi软件包的版本信息能正确查询"
}
main "$@"