This commit is contained in:
2026-04-07 13:30:54 +08:00
80 changed files with 5655 additions and 428 deletions

View File

@@ -79,10 +79,6 @@
"name": "test_checkstyle_checkstyle_c_x",
"desc": "测试组合使用-c和-x参数"
},
{
"name": "test_checkstyle_install",
"desc": "测试checkstyle软件包的安装功能验证是否能够成功安装。"
},
{
"name": "test_checkstyle_uninstall",
"desc": "测试checkstyle软件包的卸载功能验证是否能够成功卸载。"

View File

@@ -10,6 +10,26 @@
{
"name": "test_eclipse-m2e-workspace-javadoc_function_docgen",
"desc": "测试软件包的文档生成功能,验证生成的文档是否符合预期格式和内容。"
},
{
"name": "test_eclipse-m2e-workspace-javadoc_install",
"desc": "测试软件包eclipse-m2e-workspace-javadoc的安装功能验证其能否通过包管理器成功安装到系统中。"
},
{
"name": "test_eclipse-m2e-workspace-javadoc_verify",
"desc": "测试软件包eclipse-m2e-workspace-javadoc的安装状态验证检查其是否已正确安装且版本信息符合预期。"
},
{
"name": "test_eclipse-m2e-workspace-javadoc_uninstall",
"desc": "测试软件包eclipse-m2e-workspace-javadoc的卸载功能验证其能否被完全、干净地移除。"
},
{
"name": "test_eclipse-m2e-workspace-javadoc_docgen",
"desc": "测试软件包eclipse-m2e-workspace-javadoc的文档生成功能验证其能否为Maven项目正确生成Javadoc文档。"
},
{
"name": "test_eclipse-m2e-workspace-javadoc_integration",
"desc": "测试软件包eclipse-m2e-workspace-javadoc与Eclipse IDE的集成功能验证其是否能在IDE中正常启用和配置。"
}
]
}

View File

@@ -0,0 +1,30 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/hunspell-ak/hunspell-ak",
"machine num": 1,
"cases": [
{
"name": "test_hunspell-ak_function_install",
"desc": "测试hunspell-ak软件包是否能成功安装"
},
{
"name": "test_hunspell-ak_function_uninstall",
"desc": "测试hunspell-ak软件包是否能成功卸载"
},
{
"name": "test_hunspell-ak_function_check_installed",
"desc": "测试检查hunspell-ak软件包是否已安装"
},
{
"name": "test_hunspell-ak_function_spell_check",
"desc": "测试hunspell-ak对阿塞拜疆语单词的基本拼写检查功能"
},
{
"name": "test_hunspell-ak_function_list_dict",
"desc": "测试hunspell-ak词典文件是否已正确部署"
},
{
"name": "test_hunspell-ak_function_suggest",
"desc": "测试hunspell-ak对拼写错误单词的纠错建议功能"
}
]
}

View File

@@ -0,0 +1,22 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/perl-Dist-CheckConflicts/perl-Dist-CheckConflicts",
"machine num": 1,
"cases": [
{
"name": "test_perl-Dist-CheckConflicts_function_install",
"desc": "测试软件包可以通过包管理器如yum/dnf成功安装"
},
{
"name": "test_perl-Dist-CheckConflicts_function_check_installed",
"desc": "验证软件包已正确安装并能查询到其版本信息"
},
{
"name": "test_perl-Dist-CheckConflicts_function_basic_usage",
"desc": "测试使用perl -MDist::CheckConflicts -e1命令检查模块无报错验证基础功能"
},
{
"name": "test_perl-Dist-CheckConflicts_function_uninstall",
"desc": "测试软件包可以通过包管理器成功卸载"
}
]
}

View File

@@ -14,6 +14,58 @@
{
"name": "test_proftpd_function_restart",
"desc": "测试 proftpd 服务的重启功能,验证服务是否能正常重启。"
},
{
"name": "test_proftpd_ftpdctl_h",
"desc": "测试 ftpdctl 命令的帮助信息显示"
},
{
"name": "test_proftpd_ftpdctl_s",
"desc": "测试 ftpdctl 命令指定备用本地套接字"
},
{
"name": "test_proftpd_ftpdctl_v",
"desc": "测试 ftpdctl 命令显示详细输出信息"
},
{
"name": "test_proftpd_ftpdctl_s_v",
"desc": "测试 ftpdctl 命令同时指定备用本地套接字和显示详细输出信息"
},
{
"name": "test_proftpd_function_install",
"desc": "测试 proftpd 软件包的安装功能,验证安装后核心文件、配置目录及服务单元是否正确部署。"
},
{
"name": "test_proftpd_function_config",
"desc": "测试 proftpd 基本配置文件加载与语法检查,验证默认配置的有效性。"
},
{
"name": "test_proftpd_function_status",
"desc": "测试 proftpd 服务的状态查询功能,验证服务状态信息能正确显示。"
},
{
"name": "test_proftpd_function_stop",
"desc": "测试 proftpd 服务的停止功能,验证服务是否能被正常停止。"
},
{
"name": "test_proftpd_function_reload",
"desc": "测试 proftpd 服务的重载配置功能,验证服务能在不重启的情况下应用新配置。"
},
{
"name": "test_proftpd_function_ftp_login",
"desc": "测试 proftpd 的 FTP 匿名登录功能,验证基本的 FTP 访问能力。"
},
{
"name": "test_proftpd_function_ftp_upload",
"desc": "测试 proftpd 的 FTP 文件上传功能,验证文件传输能力。"
},
{
"name": "test_proftpd_function_ftp_download",
"desc": "测试 proftpd 的 FTP 文件下载功能,验证文件获取能力。"
},
{
"name": "test_proftpd_function_ftp_list",
"desc": "测试 proftpd 的 FTP 目录列表功能,验证目录内容可正常列出。"
}
]
}

View File

@@ -10,6 +10,34 @@
{
"name": "test_python3-cfgv_function_config",
"desc": "测试python3-cfgv软件包的配置功能验证配置文件的正确性"
},
{
"name": "test_python3-cfgv_install",
"desc": "验证python3-cfgv软件包能否通过包管理器正确安装"
},
{
"name": "test_python3-cfgv_uninstall",
"desc": "验证python3-cfgv软件包能否通过包管理器正确卸载"
},
{
"name": "test_python3-cfgv_version",
"desc": "验证python3-cfgv软件包版本查询功能"
},
{
"name": "test_python3-cfgv_basic_validate",
"desc": "测试cfgv模块对配置字典的基本验证功能"
},
{
"name": "test_python3-cfgv_schema",
"desc": "测试cfgv模块使用schema定义和验证配置结构"
},
{
"name": "test_python3-cfgv_optional_key",
"desc": "测试cfgv模块对可选配置项的处理"
},
{
"name": "test_python3-cfgv_validation_error",
"desc": "测试cfgv模块在配置无效时能抛出正确的异常"
}
]
}

View File

@@ -10,10 +10,6 @@
"name": "test_randomizedtesting-junit4-ant_function_build",
"desc": "Test the build functionality of randomizedtesting-junit4-ant package"
},
{
"name": "test_randomizedtesting-junit4-ant_function_install",
"desc": "Test the installation of the randomizedtesting-junit4-ant package"
},
{
"name": "test_randomizedtesting-junit4-ant_function_uninstall",
"desc": "Test the uninstallation of the randomizedtesting-junit4-ant package"

View File

@@ -5,6 +5,26 @@
{
"name": "test_texlive-acronym-doc_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-acronym-doc_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-acronym-doc_function_uninstall",
"desc": "Test package removal"
},
{
"name": "test_texlive-acronym-doc_function_check_version",
"desc": "Test version information query"
},
{
"name": "test_texlive-acronym-doc_function_verify_files",
"desc": "Verify core documentation files exist"
},
{
"name": "test_texlive-acronym-doc_function_display_help",
"desc": "Test accessing package documentation"
}
]
}

View File

@@ -2,10 +2,6 @@
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-c/texlive-bbding",
"machine num": 1,
"cases": [
{
"name": "test_texlive-bbding_function_install",
"desc": "Test installation of texlive-bbding package"
},
{
"name": "test_texlive-bbding_function_install",
"desc": "Test installation of texlive-bbding package"

View File

@@ -5,6 +5,22 @@
{
"name": "test_texlive-context-bnf_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-context-bnf_function_check_installed",
"desc": "Test if the package is installed on the system"
},
{
"name": "test_texlive-context-bnf_function_remove_package",
"desc": "Test package uninstallation"
},
{
"name": "test_texlive-context-bnf_function_bnf_macro",
"desc": "Test basic BNF macro usage"
},
{
"name": "test_texlive-context-bnf_function_compile_doc",
"desc": "Test compiling a sample document"
}
]
}

View File

@@ -2,10 +2,6 @@
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-j/texlive-gost-doc",
"machine num": 1,
"cases": [
{
"name": "test_texlive-gost-doc_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-gost-doc_function_install",
"desc": "Test package installation"

View File

@@ -5,6 +5,26 @@
{
"name": "test_texlive-greek-fontenc_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-greek-fontenc_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-greek-fontenc_function_uninstall",
"desc": "Test package removal"
},
{
"name": "test_texlive-greek-fontenc_function_is_installed",
"desc": "Check if package is installed"
},
{
"name": "test_texlive-greek-fontenc_function_use_encoding",
"desc": "Test using LGR encoding in LaTeX"
},
{
"name": "test_texlive-greek-fontenc_function_greek_text",
"desc": "Test typesetting Greek text"
}
]
}

View File

@@ -2,22 +2,6 @@
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-l/texlive-import",
"machine num": 1,
"cases": [
{
"name": "test_texlive-import_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-import_function_uninstall",
"desc": "Test package uninstallation"
},
{
"name": "test_texlive-import_function_basic",
"desc": "Test basic command usage"
},
{
"name": "test_texlive-import_function_service",
"desc": "Test service start/stop"
},
{
"name": "test_texlive-import_function_install",
"desc": "Test package installation"

View File

@@ -2,10 +2,6 @@
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-p/texlive-multibbl-doc",
"machine num": 1,
"cases": [
{
"name": "test_texlive-multibbl-doc_function_install",
"desc": "Verify package installation"
},
{
"name": "test_texlive-multibbl-doc_function_install",
"desc": "Verify package installation"

View File

@@ -13,6 +13,38 @@
{
"name": "test_texlive-ppr-prv_function_basic",
"desc": "Test basic commands"
},
{
"name": "test_texlive-ppr-prv_function_install",
"desc": "Test package installation"
},
{
"name": "test_texlive-ppr-prv_function_uninstall",
"desc": "Test package uninstallation"
},
{
"name": "test_texlive-ppr-prv_function_basic",
"desc": "Test basic commands"
},
{
"name": "test_texlive-ppr-prv_function_version",
"desc": "Check package version"
},
{
"name": "test_texlive-ppr-prv_function_help",
"desc": "Display help info"
},
{
"name": "test_texlive-ppr-prv_function_doc",
"desc": "Access package documentation"
},
{
"name": "test_texlive-ppr-prv_function_fonts",
"desc": "Verify font availability"
},
{
"name": "test_texlive-ppr-prv_function_styles",
"desc": "Check style files exist"
}
]
}

View File

@@ -2,10 +2,6 @@
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-y/texlive-circledsteps",
"machine num": 1,
"cases": [
{
"name": "test_texlive-circledsteps_function_install",
"desc": "Test installation of texlive-circledsteps package"
},
{
"name": "test_texlive-circledsteps_function_install",
"desc": "Test installation of texlive-circledsteps package"

View File

@@ -7,10 +7,6 @@
"desc": "测试texlive-umoline-doc软件包的安装功能验证安装过程是否正常完成",
"machine num": 1
},
{
"name": "test_texlive-umoline-doc_install",
"desc": "测试texlive-umoline-doc软件包的安装功能验证安装过程是否正常完成"
},
{
"name": "test_texlive-umoline-doc_verify",
"desc": "验证texlive-umoline-doc软件包是否正确安装检查关键文档文件是否存在"

View File

@@ -6,6 +6,30 @@
"name": "test_texlive-xetex-devanagari_install",
"desc": "测试 texlive-xetex-devanagari 软件包的安装功能,验证安装过程是否成功。",
"machine num": 1
},
{
"name": "test_texlive-xetex-devanagari_install",
"desc": "测试 texlive-xetex-devanagari 软件包的安装功能,验证安装过程是否成功。"
},
{
"name": "test_texlive-xetex-devanagari_remove",
"desc": "测试 texlive-xetex-devanagari 软件包的卸载功能,验证卸载过程是否成功。"
},
{
"name": "test_texlive-xetex-devanagari_version",
"desc": "测试查询 texlive-xetex-devanagari 软件包的版本信息。"
},
{
"name": "test_texlive-xetex-devanagari_check",
"desc": "测试检查 texlive-xetex-devanagari 软件包是否已正确安装。"
},
{
"name": "test_texlive-xetex-devanagari_fonts",
"desc": "测试软件包提供的天城文字体是否可用。"
},
{
"name": "test_texlive-xetex-devanagari_xetex",
"desc": "测试使用 XeLaTeX 编译包含天城文的基本文档。"
}
]
}

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 "$@"

View File

@@ -0,0 +1,93 @@
#!/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 : Test the installation process of the geronimo-ejb-help package
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 判断当前环境是否已经安装了geronimo-ejb-help软件包
LOG_INFO "检查geronimo-ejb-help软件包是否已安装"
rpm -q geronimo-ejb-help > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "geronimo-ejb-help软件包已安装测试结束后将保持安装状态"
ALREADY_INSTALLED=1
else
LOG_INFO "geronimo-ejb-help软件包未安装测试结束后将卸载"
ALREADY_INSTALLED=0
fi
# 检查yum源中是否存在geronimo-ejb-help软件包
LOG_INFO "检查yum源中是否存在geronimo-ejb-help软件包"
dnf list available geronimo-ejb-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中不存在geronimo-ejb-help软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在geronimo-ejb-help软件包"
exit 255
fi
# 如果未安装,则执行安装步骤
if [ ${ALREADY_INSTALLED} -eq 0 ]; then
LOG_INFO "开始安装geronimo-ejb-help软件包"
dnf install -y geronimo-ejb-help
CHECK_RESULT $? 0 0 "安装geronimo-ejb-help软件包失败"
LOG_INFO "geronimo-ejb-help软件包安装成功"
fi
# 验证安装是否成功
LOG_INFO "验证geronimo-ejb-help软件包安装是否成功"
rpm -q geronimo-ejb-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "geronimo-ejb-help软件包未正确安装"
# 检查geronimo-ejb-help命令是否可用
LOG_INFO "检查geronimo-ejb-help命令是否可用"
geronimo-ejb-help --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "geronimo-ejb-help命令不可用或参数不支持"
if [ $? -ne 0 ]; then
LOG_ERROR "geronimo-ejb-help命令参数不支持"
exit 255
fi
# 测试geronimo-ejb-help命令的基本功能
LOG_INFO "测试geronimo-ejb-help命令的基本功能"
geronimo-ejb-help --version > /dev/null 2>&1
CHECK_RESULT $? 0 0 "geronimo-ejb-help命令版本查询失败"
# 如果测试开始时未安装,则测试结束后卸载软件包
if [ ${ALREADY_INSTALLED} -eq 0 ]; then
LOG_INFO "测试结束卸载geronimo-ejb-help软件包"
dnf remove -y geronimo-ejb-help
CHECK_RESULT $? 0 0 "卸载geronimo-ejb-help软件包失败"
LOG_INFO "geronimo-ejb-help软件包卸载成功"
else
LOG_INFO "测试结束保持geronimo-ejb-help软件包安装状态"
fi
# 最终环境验证
LOG_INFO "最终环境验证"
if [ ${ALREADY_INSTALLED} -eq 0 ]; then
rpm -q geronimo-ejb-help > /dev/null 2>&1
CHECK_RESULT $? 1 0 "环境清理失败geronimo-ejb-help软件包仍存在"
LOG_INFO "环境已恢复到测试前状态"
else
rpm -q geronimo-ejb-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "环境异常geronimo-ejb-help软件包未保持安装状态"
LOG_INFO "环境已保持测试前安装状态"
fi
}
main "$@"

View File

@@ -0,0 +1,102 @@
#!/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 : Verify the integrity of installed package files
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否以root用户运行
if [[ $(id -u) -ne 0 ]]; then
LOG_ERROR "请使用root用户执行此脚本"
exit 1
fi
# 定义软件包名称
PACKAGE_NAME="geronimo-ejb"
LOG_INFO "开始测试:验证已安装软件包文件的完整性"
# 检查软件包是否已在yum源中
LOG_INFO "步骤1检查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 "yum源中存在${PACKAGE_NAME}软件包"
# 检查软件包是否已安装
LOG_INFO "步骤2检查${PACKAGE_NAME}软件包是否已安装"
if rpm -q ${PACKAGE_NAME} > /dev/null 2>&1; then
LOG_INFO "${PACKAGE_NAME}软件包已安装,测试后将保持安装状态"
WAS_INSTALLED=true
else
LOG_INFO "${PACKAGE_NAME}软件包未安装,将在测试过程中安装"
WAS_INSTALLED=false
fi
# 如果未安装,则安装软件包
if [[ ${WAS_INSTALLED} == false ]]; then
LOG_INFO "步骤3安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}软件包失败"
LOG_INFO "${PACKAGE_NAME}软件包安装成功"
fi
# 验证软件包文件完整性
LOG_INFO "步骤4验证${PACKAGE_NAME}软件包文件完整性"
rpm -V ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "${PACKAGE_NAME}软件包文件完整性验证失败"
LOG_INFO "${PACKAGE_NAME}软件包文件完整性验证通过"
# 测试geronimo-ejb相关命令
LOG_INFO "步骤5测试geronimo-ejb相关命令"
# 查找geronimo-ejb相关的可执行文件
EJBCMD=$(rpm -ql ${PACKAGE_NAME} | grep -E "/bin/|/sbin/" | head -1)
if [[ -n "${EJBCMD}" ]] && [[ -x "${EJBCMD}" ]]; then
LOG_INFO "找到可执行文件:${EJBCMD}"
# 测试命令是否存在
if [[ ! -f "${EJBCMD}" ]]; then
LOG_ERROR "命令${EJBCMD}不存在"
exit 255
fi
# 测试命令基本执行
${EJBCMD} --help > /dev/null 2>&1
if [[ $? -ne 0 ]] && [[ $? -ne 1 ]]; then
LOG_ERROR "命令${EJBCMD}执行失败"
exit 255
fi
LOG_INFO "命令${EJBCMD}基本功能测试通过"
else
LOG_INFO "未找到可执行文件,跳过命令测试"
fi
# 清理环境:如果测试前未安装,则卸载软件包
if [[ ${WAS_INSTALLED} == false ]]; then
LOG_INFO "步骤6清理测试环境卸载${PACKAGE_NAME}软件包"
dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}软件包失败"
LOG_INFO "${PACKAGE_NAME}软件包卸载成功"
else
LOG_INFO "步骤6保持${PACKAGE_NAME}软件包安装状态"
fi
LOG_INFO "测试完成:${PACKAGE_NAME}软件包文件完整性验证通过"
}
main "$@"

View File

@@ -0,0 +1,67 @@
#!/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 : Test the removal process of the geronimo-ejb-help package
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
PACKAGE_NAME="geronimo-ejb-help"
LOG_INFO "测试开始测试geronimo-ejb-help包的卸载过程"
LOG_INFO "步骤1检查yum源中是否存在${PACKAGE_NAME}"
dnf list available ${PACKAGE_NAME} 2>&1 | grep -q "${PACKAGE_NAME}"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到${PACKAGE_NAME}包,无法进行测试"
exit 255
fi
LOG_INFO "yum源中存在${PACKAGE_NAME}包,继续测试"
LOG_INFO "步骤2检查${PACKAGE_NAME}包是否已安装"
rpm -q ${PACKAGE_NAME} > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "${PACKAGE_NAME}包已安装,标记为已安装状态"
INSTALLED_BEFORE="yes"
else
LOG_INFO "${PACKAGE_NAME}包未安装,标记为未安装状态"
INSTALLED_BEFORE="no"
fi
if [ "${INSTALLED_BEFORE}" = "no" ]; then
LOG_INFO "步骤3由于包未安装执行安装操作作为测试步骤"
dnf install -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}包失败"
LOG_INFO "成功安装${PACKAGE_NAME}"
fi
LOG_INFO "步骤4执行卸载${PACKAGE_NAME}包的操作"
dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}包失败"
LOG_INFO "成功卸载${PACKAGE_NAME}"
LOG_INFO "步骤5验证${PACKAGE_NAME}包是否已成功卸载"
rpm -q ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 1 0 "卸载后${PACKAGE_NAME}包仍存在,卸载不彻底"
LOG_INFO "验证通过:${PACKAGE_NAME}包已成功卸载"
if [ "${INSTALLED_BEFORE}" = "no" ]; then
LOG_INFO "步骤6恢复环境由于测试前未安装无需重新安装"
LOG_INFO "环境已恢复至测试前状态"
else
LOG_INFO "步骤6恢复环境重新安装${PACKAGE_NAME}包以恢复原始状态"
dnf install -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "重新安装${PACKAGE_NAME}包失败,环境恢复失败"
LOG_INFO "成功重新安装${PACKAGE_NAME}包,环境已恢复"
fi
LOG_INFO "测试结束geronimo-ejb-help包的卸载过程测试完成"
}
main "$@"

View File

@@ -0,0 +1,88 @@
#!/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 : Test basic command-line usage or help output
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
# 环境变量设置
PACKAGE_NAME="geronimo-ejb"
TEST_COMMAND="${PACKAGE_NAME} --help"
EXPECTED_OUTPUT_PATTERN="usage\|help\|Usage\|Help"
LOG_INFO "1. 检查系统是否已安装${PACKAGE_NAME}软件包"
if dnf list installed "${PACKAGE_NAME}" &>/dev/null; then
LOG_INFO "软件包已安装,测试后保持安装状态"
ALREADY_INSTALLED=true
else
LOG_INFO "软件包未安装,将在测试前安装并在测试后卸载"
ALREADY_INSTALLED=false
fi
LOG_INFO "2. 检查yum源中是否存在${PACKAGE_NAME}软件包"
if ! dnf list available "${PACKAGE_NAME}" &>/dev/null; then
LOG_ERROR "yum源中未找到${PACKAGE_NAME}软件包"
exit 255
fi
if [ "${ALREADY_INSTALLED}" = "false" ]; then
LOG_INFO "3. 安装${PACKAGE_NAME}软件包"
dnf install -y "${PACKAGE_NAME}"
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
fi
LOG_INFO "4. 验证命令参数是否存在"
if ! command -v "${PACKAGE_NAME}" &>/dev/null; then
LOG_ERROR "命令${PACKAGE_NAME}不存在"
exit 255
fi
LOG_INFO "5. 执行测试命令: ${TEST_COMMAND}"
output=$(${TEST_COMMAND} 2>&1)
cmd_exit=$?
LOG_INFO "6. 检查命令执行结果"
if [ ${cmd_exit} -eq 0 ]; then
LOG_INFO "命令执行成功,检查输出内容"
if echo "${output}" | grep -q -E "${EXPECTED_OUTPUT_PATTERN}"; then
LOG_INFO "输出内容包含预期的帮助信息"
CHECK_RESULT 0 0 0 "帮助信息验证失败"
else
LOG_ERROR "输出内容未包含预期的帮助信息"
CHECK_RESULT 1 0 0 "帮助信息验证失败"
fi
else
LOG_ERROR "命令执行失败,退出码: ${cmd_exit}"
exit ${cmd_exit}
fi
LOG_INFO "7. 环境清理"
if [ "${ALREADY_INSTALLED}" = "false" ]; then
LOG_INFO "卸载测试安装的软件包"
dnf remove -y "${PACKAGE_NAME}"
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}失败"
else
LOG_INFO "保持原有安装状态,无需卸载"
fi
LOG_INFO "8. 测试完成"
}
main "$@"

View File

@@ -0,0 +1,95 @@
#!/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 : Test querying the installed package version
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义软件包名称
PACKAGE_NAME="geronimo-ejb"
# 步骤1检查yum源中是否存在指定软件包
LOG_INFO "1. 检查yum源中是否存在${PACKAGE_NAME}软件包"
dnf list available ${PACKAGE_NAME} > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在${PACKAGE_NAME}软件包"
exit 255
fi
# 步骤2检查软件包是否已安装
LOG_INFO "2. 检查${PACKAGE_NAME}软件包是否已安装"
rpm -q ${PACKAGE_NAME} > /dev/null 2>&1
if [ $? -eq 0 ]; then
IS_INSTALLED="true"
LOG_INFO "${PACKAGE_NAME}软件包已安装"
else
IS_INSTALLED="false"
LOG_INFO "${PACKAGE_NAME}软件包未安装"
fi
# 步骤3如果未安装则安装软件包
if [ "${IS_INSTALLED}" = "false" ]; then
LOG_INFO "3. 安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}软件包失败"
fi
# 步骤4测试查询已安装软件包版本
LOG_INFO "4. 测试查询已安装软件包版本"
# 检查--help参数是否支持
rpm -q ${PACKAGE_NAME} --help > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "rpm命令不支持--help参数"
# 清理环境
if [ "${IS_INSTALLED}" = "false" ]; then
dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
fi
exit 255
fi
# 检查--version参数是否支持
rpm -q ${PACKAGE_NAME} --version > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "rpm命令不支持--version参数"
# 清理环境
if [ "${IS_INSTALLED}" = "false" ]; then
dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
fi
exit 255
fi
# 执行版本查询
VERSION_OUTPUT=$(rpm -q ${PACKAGE_NAME} --queryformat "%{VERSION}-%{RELEASE}\n")
CHECK_RESULT $? 0 0 "查询${PACKAGE_NAME}版本失败"
LOG_INFO "软件包版本: ${VERSION_OUTPUT}"
# 步骤5清理环境
LOG_INFO "5. 清理测试环境"
if [ "${IS_INSTALLED}" = "false" ]; then
LOG_INFO "卸载${PACKAGE_NAME}软件包"
dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}软件包失败"
LOG_INFO "环境已恢复到测试前状态"
else
LOG_INFO "保持${PACKAGE_NAME}软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,71 +0,0 @@
#!/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 : 测试检查geronimo-validation-help软件包是否已正确安装在系统中。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试检查geronimo-validation-help软件包是否已正确安装在系统中。"
# 检查yum源中是否存在geronimo-validation-help软件包
LOG_INFO "检查yum源中是否存在geronimo-validation-help软件包"
dnf list available geronimo-validation-help >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到geronimo-validation-help软件包"
exit 255
fi
# 检查软件包是否已经安装
LOG_INFO "检查geronimo-validation-help软件包是否已经安装"
rpm -q geronimo-validation-help >/dev/null 2>&1
already_installed=$?
if [ $already_installed -eq 0 ]; then
LOG_INFO "geronimo-validation-help软件包已经安装跳过安装步骤"
need_uninstall=false
else
LOG_INFO "geronimo-validation-help软件包未安装开始安装"
dnf install -y geronimo-validation-help
CHECK_RESULT $? 0 0 "安装geronimo-validation-help软件包失败"
need_uninstall=true
fi
# 验证软件包是否正确安装
LOG_INFO "验证geronimo-validation-help软件包是否正确安装"
rpm -q geronimo-validation-help
CHECK_RESULT $? 0 0 "geronimo-validation-help软件包未正确安装"
# 验证软件包文件完整性
LOG_INFO "验证geronimo-validation-help软件包文件完整性"
rpm -V geronimo-validation-help
CHECK_RESULT $? 0 0 "geronimo-validation-help软件包文件不完整"
# 清理环境
LOG_INFO "清理测试环境"
if [ "$need_uninstall" = true ]; then
LOG_INFO "卸载geronimo-validation-help软件包"
dnf remove -y geronimo-validation-help
CHECK_RESULT $? 0 0 "卸载geronimo-validation-help软件包失败"
else
LOG_INFO "保持geronimo-validation-help软件包安装状态"
fi
LOG_INFO "测试完成,环境已恢复到初始状态"
}
main "$@"

View File

@@ -1,103 +0,0 @@
#!/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 : 测试该软件包作为依赖被其他组件如Web应用引入时其功能是否正常可用。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试脚本开始
# 步骤1检查测试环境是否已安装geronimo-validation-help软件包
LOG_INFO "步骤1检查测试环境是否已安装geronimo-validation-help软件包"
rpm -q geronimo-validation-help > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "geronimo-validation-help软件包已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "geronimo-validation-help软件包未安装将在测试过程中安装并在测试结束后卸载"
INSTALLED=false
fi
# 步骤2检查yum源中是否有geronimo-validation-help软件包
LOG_INFO "步骤2检查yum源中是否有geronimo-validation-help软件包"
dnf list available geronimo-validation-help > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到geronimo-validation-help软件包"
exit 255
fi
# 步骤3安装geronimo-validation-help软件包如果未安装
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3安装geronimo-validation-help软件包"
dnf install -y geronimo-validation-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装geronimo-validation-help软件包失败"
fi
# 步骤4验证geronimo-validation-help软件包的基本功能
LOG_INFO "步骤4验证geronimo-validation-help软件包的基本功能"
# 假设geronimo-validation-help提供了一个命令行工具"geronimo-validation-check",用于验证其功能
# 检查该命令是否存在
command -v geronimo-validation-check > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "geronimo-validation-help软件包未提供预期的命令行工具"
exit 255
fi
# 测试geronimo-validation-check命令的基本参数
LOG_INFO "测试geronimo-validation-check命令的基本参数"
geronimo-validation-check --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "geronimo-validation-check命令--help参数执行失败"
# 步骤5模拟geronimo-validation-help作为依赖被Web应用引入时的功能测试
LOG_INFO "步骤5模拟geronimo-validation-help作为依赖被Web应用引入时的功能测试"
# 创建一个简单的Java Web应用测试文件使用geronimo-validation-help进行验证
cat > /tmp/test_validation.java << "EOF"
import org.apache.geronimo.validation.ValidationHelper;
public class TestValidation {
public static void main(String[] args) {
ValidationHelper helper = new ValidationHelper();
System.out.println("ValidationHelper instance created successfully.");
}
}
EOF
# 编译测试Java文件检查geronimo-validation-help的类是否可用
LOG_INFO "编译测试Java文件验证geronimo-validation-help的类是否可用"
javac -cp /usr/share/java/geronimo-validation-help.jar /tmp/test_validation.java 2>&1
CHECK_RESULT $? 0 0 "编译测试Java文件失败geronimo-validation-help的类不可用"
# 运行编译后的Java程序验证功能
LOG_INFO "运行编译后的Java程序验证geronimo-validation-help的功能"
java -cp /tmp:/usr/share/java/geronimo-validation-help.jar TestValidation 2>&1
CHECK_RESULT $? 0 0 "运行Java程序失败geronimo-validation-help功能异常"
# 步骤6清理测试过程中创建的临时文件
LOG_INFO "步骤6清理测试过程中创建的临时文件"
rm -f /tmp/test_validation.java /tmp/TestValidation.class
# 步骤7如果测试前未安装geronimo-validation-help则在测试结束后卸载
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤7卸载geronimo-validation-help软件包"
dnf remove -y geronimo-validation-help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载geronimo-validation-help软件包失败"
fi
LOG_INFO "测试完成geronimo-validation-help作为依赖被其他组件引入时功能正常可用"
}
main "$@"

View File

@@ -0,0 +1,106 @@
#!/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 : 测试reject函数根据条件过滤数组的基本功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义变量
PACKAGE_NAME="nodejs-lodash"
TEST_SCRIPT="test_reject_basic.js"
# 步骤1检查yum源中是否存在指定软件包
LOG_INFO "步骤1检查yum源中是否存在 $PACKAGE_NAME 软件包"
dnf list available $PACKAGE_NAME &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到 $PACKAGE_NAME 软件包"
exit 255
fi
# 步骤2检查当前环境是否已安装软件包
LOG_INFO "步骤2检查当前环境是否已安装 $PACKAGE_NAME"
rpm -q $PACKAGE_NAME &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "$PACKAGE_NAME 已安装,标记为已存在安装"
PACKAGE_INSTALLED=true
else
LOG_INFO "$PACKAGE_NAME 未安装,标记为未安装"
PACKAGE_INSTALLED=false
fi
# 步骤3如果未安装则安装软件包
if [ "$PACKAGE_INSTALLED" = false ]; then
LOG_INFO "步骤3安装 $PACKAGE_NAME 软件包"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
fi
# 步骤4创建测试脚本
LOG_INFO "步骤4创建Node.js测试脚本"
cat > $TEST_SCRIPT << "EOF"
const _ = require("lodash");
// 测试reject函数基本功能
const users = [
{ "user": "barney", "age": 36, "active": false },
{ "user": "fred", "age": 40, "active": true },
{ "user": "pebbles", "age": 1, "active": false }
];
// 使用reject过滤掉active为true的用户
const inactiveUsers = _.reject(users, ["active", true]);
console.log("Inactive users:", JSON.stringify(inactiveUsers));
// 验证结果
if (inactiveUsers.length !== 2) {
console.error("Error: Expected 2 inactive users, got", inactiveUsers.length);
process.exit(1);
}
if (!inactiveUsers.every(user => user.active === false)) {
console.error("Error: Some users are active in the inactiveUsers list");
process.exit(1);
}
console.log("Test passed: reject function works correctly");
EOF
CHECK_RESULT $? 0 0 "创建测试脚本失败"
# 步骤5执行测试脚本
LOG_INFO "步骤5执行Node.js测试脚本"
node $TEST_SCRIPT
CHECK_RESULT $? 0 0 "reject函数测试失败"
# 步骤6清理测试脚本
LOG_INFO "步骤6清理测试脚本"
rm -f $TEST_SCRIPT
CHECK_RESULT $? 0 0 "删除测试脚本失败"
# 步骤7如果脚本开始前未安装则卸载软件包
if [ "$PACKAGE_INSTALLED" = false ]; then
LOG_INFO "步骤7卸载 $PACKAGE_NAME 软件包"
dnf remove -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 失败"
else
LOG_INFO "步骤7保持 $PACKAGE_NAME 安装状态"
fi
LOG_INFO "测试完成reject函数根据条件过滤数组的基本功能测试通过"
}
main "$@"

View File

@@ -0,0 +1,63 @@
#!/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 : 测试使用包管理器如npm成功安装nodejs-lodash-reject软件包
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装nodejs-lodash-reject软件包
LOG_INFO "检查nodejs-lodash-reject软件包是否已安装"
rpm -q nodejs-lodash-reject > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "nodejs-lodash-reject软件包已安装脚本结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "nodejs-lodash-reject软件包未安装"
INSTALLED=false
fi
# 检查yum源中是否存在nodejs-lodash-reject软件包
LOG_INFO "检查yum源中是否存在nodejs-lodash-reject软件包"
dnf list available nodejs-lodash-reject > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中不存在nodejs-lodash-reject软件包"
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始安装nodejs-lodash-reject软件包"
dnf install -y nodejs-lodash-reject > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装nodejs-lodash-reject软件包失败"
LOG_INFO "nodejs-lodash-reject软件包安装成功"
fi
# 验证软件包是否正确安装
LOG_INFO "验证nodejs-lodash-reject软件包是否正确安装"
rpm -q nodejs-lodash-reject > /dev/null 2>&1
CHECK_RESULT $? 0 0 "nodejs-lodash-reject软件包未正确安装"
# 如果脚本开始前未安装,则在脚本结束前卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始卸载nodejs-lodash-reject软件包"
dnf remove -y nodejs-lodash-reject > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载nodejs-lodash-reject软件包失败"
LOG_INFO "nodejs-lodash-reject软件包卸载成功环境已恢复"
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -0,0 +1,99 @@
#!/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 : 测试reject函数使用函数、对象、属性等不同断言形式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试nodejs-lodash的reject函数的不同断言形式"
# 检查yum源中是否有nodejs-lodash包
LOG_INFO "检查yum源中是否有nodejs-lodash软件包"
if ! dnf list available nodejs-lodash &>/dev/null; then
LOG_ERROR "yum源中没有nodejs-lodash软件包"
exit 255
fi
# 检查是否已安装nodejs-lodash
LOG_INFO "检查nodejs-lodash是否已安装"
if rpm -q nodejs-lodash &>/dev/null; then
LOG_INFO "nodejs-lodash已安装测试结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "nodejs-lodash未安装将在测试前安装"
INSTALLED=false
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装nodejs-lodash软件包"
dnf install -y nodejs-lodash
CHECK_RESULT $? 0 0 "安装nodejs-lodash失败"
fi
# 创建测试脚本
TEST_SCRIPT="/tmp/test_reject.js"
cat > $TEST_SCRIPT << "EOF"
const _ = require("lodash");
// 测试数据
const users = [
{ "user": "barney", "age": 36, "active": true },
{ "user": "fred", "age": 40, "active": false },
{ "user": "pebbles","age": 1, "active": true }
];
console.log("1. 使用函数断言:");
const funcResult = _.reject(users, function(o) { return !o.active; });
console.log(JSON.stringify(funcResult));
console.log("\n2. 使用对象断言:");
const objResult = _.reject(users, { "age": 36, "active": true });
console.log(JSON.stringify(objResult));
console.log("\n3. 使用属性断言:");
const propResult = _.reject(users, "active");
console.log(JSON.stringify(propResult));
console.log("\n4. 使用数组断言:");
const arrResult = _.reject(users, ["active", false]);
console.log(JSON.stringify(arrResult));
EOF
# 执行测试脚本
LOG_INFO "执行reject函数测试"
node $TEST_SCRIPT
CHECK_RESULT $? 0 0 "执行reject函数测试失败"
# 清理测试脚本
LOG_INFO "清理测试脚本"
rm -f $TEST_SCRIPT
# 如果测试前未安装,则卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载nodejs-lodash软件包"
dnf remove -y nodejs-lodash
CHECK_RESULT $? 0 0 "卸载nodejs-lodash失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,83 @@
#!/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 : 测试使用包管理器成功卸载nodejs-lodash-reject软件包
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试测试使用包管理器成功卸载nodejs-lodash-reject软件包"
LOG_INFO "步骤1检查yum源中是否存在nodejs-lodash-reject软件包"
if ! dnf list available nodejs-lodash-reject 2>/dev/null | grep -q "nodejs-lodash-reject"; then
LOG_ERROR "yum源中未找到nodejs-lodash-reject软件包"
exit 255
fi
LOG_INFO "yum源中存在nodejs-lodash-reject软件包"
LOG_INFO "步骤2检查当前环境中nodejs-lodash-reject软件包的安装状态"
if rpm -q nodejs-lodash-reject &>/dev/null; then
LOG_INFO "当前环境已安装nodejs-lodash-reject软件包标记为已安装状态"
INSTALLED_BEFORE_TEST=true
else
LOG_INFO "当前环境未安装nodejs-lodash-reject软件包标记为未安装状态"
INSTALLED_BEFORE_TEST=false
fi
LOG_INFO "步骤3如果环境未安装则安装nodejs-lodash-reject软件包作为测试步骤"
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "正在安装nodejs-lodash-reject软件包..."
dnf install -y nodejs-lodash-reject
CHECK_RESULT $? 0 0 "安装nodejs-lodash-reject软件包失败"
LOG_INFO "nodejs-lodash-reject软件包安装成功"
else
LOG_INFO "环境已安装,跳过安装步骤"
fi
LOG_INFO "步骤4验证软件包已正确安装"
rpm -q nodejs-lodash-reject
CHECK_RESULT $? 0 0 "验证nodejs-lodash-reject软件包安装状态失败"
LOG_INFO "步骤5使用dnf卸载nodejs-lodash-reject软件包"
dnf remove -y nodejs-lodash-reject
CHECK_RESULT $? 0 0 "卸载nodejs-lodash-reject软件包失败"
LOG_INFO "nodejs-lodash-reject软件包卸载成功"
LOG_INFO "步骤6验证软件包已被成功卸载"
if rpm -q nodejs-lodash-reject &>/dev/null; then
LOG_ERROR "卸载后验证失败nodejs-lodash-reject软件包仍然存在"
exit 1
else
LOG_INFO "验证成功nodejs-lodash-reject软件包已被卸载"
fi
LOG_INFO "步骤7环境恢复"
if [ "$INSTALLED_BEFORE_TEST" = true ]; then
LOG_INFO "测试前环境已安装该软件包,重新安装以恢复环境..."
dnf install -y nodejs-lodash-reject
CHECK_RESULT $? 0 0 "重新安装nodejs-lodash-reject软件包以恢复环境失败"
LOG_INFO "环境恢复成功nodejs-lodash-reject软件包已重新安装"
else
LOG_INFO "测试前环境未安装该软件包,无需重新安装,环境已恢复"
fi
LOG_INFO "测试完成测试使用包管理器成功卸载nodejs-lodash-reject软件包"
}
main "$@"

View File

@@ -0,0 +1,111 @@
#!/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 : 测试使用maven-dependency-plugin分析项目依赖
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装maven
LOG_INFO "检查是否已安装maven"
if command -v mvn &> /dev/null; then
LOG_INFO "maven已安装跳过安装步骤"
INSTALLED_MAVEN=true
else
LOG_INFO "maven未安装准备安装"
INSTALLED_MAVEN=false
fi
# 检查yum源中是否有maven软件包
LOG_INFO "检查yum源中是否有maven软件包"
if ! dnf list available maven &> /dev/null; then
LOG_ERROR "yum源中没有maven软件包"
exit 255
fi
# 如果未安装maven则安装
if [ "$INSTALLED_MAVEN" = false ]; then
LOG_INFO "安装maven软件包"
dnf install -y maven
CHECK_RESULT $? 0 0 "安装maven失败"
fi
# 创建测试项目目录
LOG_INFO "创建测试项目目录"
TEST_DIR="/tmp/maven_test_$(date +%s)"
mkdir -p "$TEST_DIR"
cd "$TEST_DIR" || exit 1
# 创建简单的pom.xml文件
LOG_INFO "创建测试项目的pom.xml文件"
cat > pom.xml << "EOF"
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>dependency-test</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.0</version>
</plugin>
</plugins>
</build>
</project>
EOF
# 检查maven-dependency-plugin的analyze目标是否存在
LOG_INFO "检查maven-dependency-plugin的analyze目标参数"
mvn dependency:help -Ddetail=true -Dgoal=analyze 2>&1 | grep -q "dependency:analyze"
CHECK_RESULT $? 0 0 "maven-dependency-plugin的analyze目标不存在或不支持"
# 执行maven-dependency-plugin的analyze目标
LOG_INFO "执行maven-dependency-plugin分析项目依赖"
mvn dependency:analyze
CHECK_RESULT $? 0 0 "执行maven-dependency-plugin analyze失败"
LOG_INFO "maven-dependency-plugin analyze执行成功"
# 清理测试目录
LOG_INFO "清理测试目录"
cd /tmp || exit 1
rm -rf "$TEST_DIR"
# 如果脚本开始时未安装maven则卸载
if [ "$INSTALLED_MAVEN" = false ]; then
LOG_INFO "卸载maven软件包"
dnf remove -y maven
CHECK_RESULT $? 0 0 "卸载maven失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -0,0 +1,128 @@
#!/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 : 测试使用maven-dependency-plugin复制依赖到指定目录
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试使用maven-dependency-plugin复制依赖到指定目录"
# 定义软件包名称
PACKAGE_NAME="maven"
# 检查环境是否已安装软件包
LOG_INFO "步骤1检查环境是否已安装$PACKAGE_NAME软件包"
if dnf list installed "$PACKAGE_NAME" &>/dev/null; then
LOG_INFO "环境已安装$PACKAGE_NAME软件包,测试结束后将保持安装状态"
ENV_INSTALLED=true
else
LOG_INFO "环境未安装$PACKAGE_NAME软件包,将在测试步骤中安装并在测试结束后卸载"
ENV_INSTALLED=false
fi
# 检查yum源中是否存在该软件包
LOG_INFO "步骤2检查yum源中是否存在$PACKAGE_NAME软件包"
if ! dnf list available "$PACKAGE_NAME" &>/dev/null; then
LOG_ERROR "yum源中不存在$PACKAGE_NAME软件包,退出测试"
exit 255
fi
# 安装软件包(如果未安装)
if [ "$ENV_INSTALLED" = false ]; then
LOG_INFO "步骤3安装$PACKAGE_NAME软件包"
dnf install -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "安装$PACKAGE_NAME软件包失败"
fi
# 检查maven-dependency-plugin插件是否支持copy-dependencies参数
LOG_INFO "步骤4检查maven-dependency-plugin插件是否支持copy-dependencies参数"
if ! mvn dependency:help | grep -q "copy-dependencies"; then
LOG_ERROR "maven-dependency-plugin插件不支持copy-dependencies参数退出测试"
exit 255
fi
# 创建测试用的Maven项目目录
LOG_INFO "步骤5创建测试用的Maven项目目录"
TEST_DIR="/tmp/test_maven_project"
rm -rf "$TEST_DIR"
mkdir -p "$TEST_DIR"
cd "$TEST_DIR"
# 生成简单的pom.xml文件
LOG_INFO "步骤6生成简单的pom.xml文件"
cat > pom.xml << EOF
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>test-project</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
</build>
</project>
EOF
# 执行maven-dependency-plugin复制依赖到指定目录
LOG_INFO "步骤7执行maven-dependency-plugin复制依赖到指定目录"
TARGET_DIR="/tmp/maven_dependencies"
rm -rf "$TARGET_DIR"
mvn dependency:copy-dependencies -DoutputDirectory="$TARGET_DIR"
CHECK_RESULT $? 0 0 "执行maven-dependency-plugin复制依赖失败"
# 检查依赖是否成功复制到指定目录
LOG_INFO "步骤8检查依赖是否成功复制到指定目录"
if [ -d "$TARGET_DIR" ] && [ "$(ls -A "$TARGET_DIR")" ]; then
LOG_INFO "依赖成功复制到$TARGET_DIR目录"
else
LOG_ERROR "依赖未成功复制到$TARGET_DIR目录"
exit 1
fi
# 清理测试目录
LOG_INFO "步骤9清理测试目录"
rm -rf "$TEST_DIR"
rm -rf "$TARGET_DIR"
# 卸载软件包(如果测试前未安装)
if [ "$ENV_INSTALLED" = false ]; then
LOG_INFO "步骤10卸载$PACKAGE_NAME软件包"
dnf remove -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "卸载$PACKAGE_NAME软件包失败"
fi
LOG_INFO "测试完成使用maven-dependency-plugin复制依赖到指定目录"
}
main "$@"

View File

@@ -0,0 +1,150 @@
#!/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 : 测试使用maven-dependency-plugin列出项目依赖
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查环境是否已安装maven
LOG_INFO "检查maven是否已安装"
if dnf list installed maven >/dev/null 2>&1; then
LOG_INFO "maven已安装测试结束后将保持安装状态"
MAVEN_INSTALLED=true
else
LOG_INFO "maven未安装将在测试过程中安装"
MAVEN_INSTALLED=false
fi
# 检查yum源中是否有maven软件包
LOG_INFO "检查yum源中是否有maven软件包"
if ! dnf list available maven >/dev/null 2>&1; then
LOG_ERROR "yum源中没有maven软件包"
exit 255
fi
# 如果未安装则安装maven
if [ "$MAVEN_INSTALLED" = false ]; then
LOG_INFO "安装maven软件包"
dnf install -y maven
CHECK_RESULT $? 0 0 "安装maven失败"
fi
# 创建测试用的Maven项目
LOG_INFO "创建测试用的Maven项目"
mkdir -p test-maven-project
cd test-maven-project || exit 1
cat > pom.xml << "EOF"
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>test-project</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.0</version>
</plugin>
</plugins>
</build>
</project>
EOF
CHECK_RESULT $? 0 0 "创建pom.xml文件失败"
# 测试maven-dependency-plugin的dependency:list命令
LOG_INFO "测试maven-dependency-plugin的dependency:list命令"
mvn dependency:list -DoutputAbsoluteArtifactFilename=true > dependency_list_output.txt 2>&1
CHECK_RESULT $? 0 0 "执行maven-dependency-plugin dependency:list命令失败"
# 检查输出结果是否包含预期的依赖
LOG_INFO "检查dependency:list命令输出结果"
if grep -q "junit:junit:jar:4.13.2" dependency_list_output.txt && \
grep -q "commons-lang:commons-lang:jar:2.6" dependency_list_output.txt; then
LOG_INFO "dependency:list命令成功列出了项目依赖"
else
LOG_ERROR "dependency:list命令未能正确列出所有依赖"
CHECK_RESULT 1 0 0 "dependency:list命令输出不符合预期"
fi
# 测试maven-dependency-plugin的dependency:tree命令
LOG_INFO "测试maven-dependency-plugin的dependency:tree命令"
mvn dependency:tree > dependency_tree_output.txt 2>&1
CHECK_RESULT $? 0 0 "执行maven-dependency-plugin dependency:tree命令失败"
# 检查tree命令输出
LOG_INFO "检查dependency:tree命令输出结果"
if grep -q "junit:junit:jar:4.13.2:test" dependency_tree_output.txt && \
grep -q "commons-lang:commons-lang:jar:2.6:compile" dependency_tree_output.txt; then
LOG_INFO "dependency:tree命令成功显示了依赖树"
else
LOG_ERROR "dependency:tree命令输出不符合预期"
CHECK_RESULT 1 0 0 "dependency:tree命令输出不符合预期"
fi
# 测试不存在的参数
LOG_INFO "测试不支持的参数"
mvn dependency:list --non-existent-param > /dev/null 2>&1
if [ $? -eq 255 ] || [ $? -eq 1 ]; then
LOG_INFO "不支持的参数被正确拒绝"
else
LOG_ERROR "不支持的参数未被正确识别"
exit 255
fi
# 清理测试项目
LOG_INFO "清理测试项目"
cd ..
rm -rf test-maven-project
# 如果测试前未安装maven则卸载
if [ "$MAVEN_INSTALLED" = false ]; then
LOG_INFO "卸载测试期间安装的maven软件包"
dnf remove -y maven
CHECK_RESULT $? 0 0 "卸载maven失败"
LOG_INFO "环境已恢复到测试前的状态"
else
LOG_INFO "保持maven安装状态"
fi
LOG_INFO "maven-dependency-plugin依赖列表功能测试完成"
}
main "$@"

View File

@@ -0,0 +1,149 @@
#!/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 : 测试使用maven-dependency-plugin生成依赖树
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试使用maven-dependency-plugin生成依赖树
LOG_INFO "开始测试maven-dependency-plugin的依赖树生成功能"
# 定义软件包名称
PACKAGE_NAME="maven-dependency-plugin"
# 步骤1检查yum源中是否存在maven-dependency-plugin软件包
LOG_INFO "步骤1检查yum源中是否存在${PACKAGE_NAME}软件包"
if ! dnf list available ${PACKAGE_NAME} &>/dev/null; then
LOG_ERROR "yum源中未找到${PACKAGE_NAME}软件包"
exit 255
fi
LOG_INFO "yum源中存在${PACKAGE_NAME}软件包"
# 步骤2检查当前是否已安装maven-dependency-plugin
LOG_INFO "步骤2检查当前是否已安装${PACKAGE_NAME}"
INSTALLED=false
if rpm -q ${PACKAGE_NAME} &>/dev/null; then
LOG_INFO "${PACKAGE_NAME}已安装"
INSTALLED=true
else
LOG_INFO "${PACKAGE_NAME}未安装"
fi
# 步骤3如果未安装则安装软件包
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "步骤3安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
LOG_INFO "${PACKAGE_NAME}安装成功"
fi
# 步骤4验证maven-dependency-plugin命令是否可用
LOG_INFO "步骤4验证maven-dependency-plugin命令是否可用"
if ! command -v mvn &>/dev/null; then
LOG_ERROR "mvn命令不存在"
if [ "${INSTALLED}" = "false" ]; then
dnf remove -y ${PACKAGE_NAME}
fi
exit 1
fi
# 步骤5检查maven-dependency-plugin是否支持dependency:tree参数
LOG_INFO "步骤5检查maven-dependency-plugin是否支持dependency:tree参数"
if ! mvn dependency:tree --help &>/dev/null; then
LOG_ERROR "maven-dependency-plugin不支持dependency:tree参数"
if [ "${INSTALLED}" = "false" ]; then
dnf remove -y ${PACKAGE_NAME}
fi
exit 255
fi
LOG_INFO "maven-dependency-plugin支持dependency:tree参数"
# 步骤6创建测试Maven项目
LOG_INFO "步骤6创建测试Maven项目"
TEST_DIR="/tmp/test_maven_project"
rm -rf ${TEST_DIR}
mkdir -p ${TEST_DIR}
cd ${TEST_DIR}
# 创建pom.xml文件
cat > pom.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>test-project</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
EOF
CHECK_RESULT $? 0 0 "创建pom.xml文件失败"
# 步骤7执行dependency:tree命令生成依赖树
LOG_INFO "步骤7执行dependency:tree命令生成依赖树"
mvn dependency:tree > dependency_tree_output.txt 2>&1
CHECK_RESULT $? 0 0 "执行dependency:tree命令失败"
# 步骤8验证依赖树输出
LOG_INFO "步骤8验证依赖树输出"
if [ -s dependency_tree_output.txt ]; then
LOG_INFO "依赖树生成成功"
# 检查输出中是否包含预期的依赖信息
if grep -q "junit:junit:jar:4.12" dependency_tree_output.txt; then
LOG_INFO "依赖树中包含预期的junit依赖"
else
LOG_ERROR "依赖树中未找到预期的junit依赖"
CHECK_RESULT 1 0 0 "依赖树验证失败"
fi
else
LOG_ERROR "依赖树输出文件为空"
CHECK_RESULT 1 0 0 "依赖树输出验证失败"
fi
# 步骤9清理测试目录
LOG_INFO "步骤9清理测试目录"
cd /
rm -rf ${TEST_DIR}
LOG_INFO "测试目录清理完成"
# 步骤10环境恢复
LOG_INFO "步骤10环境恢复"
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "卸载${PACKAGE_NAME}软件包"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}失败"
LOG_INFO "${PACKAGE_NAME}卸载成功"
else
LOG_INFO "保持${PACKAGE_NAME}安装状态"
fi
LOG_INFO "测试完成maven-dependency-plugin依赖树生成功能测试成功"
}
main "$@"

View File

@@ -0,0 +1,84 @@
#!/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 : 测试软件包maven-dependency-plugin的安装功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试maven-dependency-plugin安装功能"
# 检查yum源中是否存在maven-dependency-plugin软件包
LOG_INFO "检查yum源中是否存在maven-dependency-plugin软件包"
dnf list available maven-dependency-plugin > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中不存在maven-dependency-plugin软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在maven-dependency-plugin软件包"
exit 255
fi
# 检查系统是否已安装maven-dependency-plugin
LOG_INFO "检查系统是否已安装maven-dependency-plugin"
rpm -q maven-dependency-plugin > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "系统已安装maven-dependency-plugin脚本结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "系统未安装maven-dependency-plugin开始安装"
INSTALLED=false
fi
# 如果未安装,则进行安装
if [ "$INSTALLED" = false ]; then
LOG_INFO "执行安装命令dnf install -y maven-dependency-plugin"
dnf install -y maven-dependency-plugin
CHECK_RESULT $? 0 0 "安装maven-dependency-plugin失败"
fi
# 验证安装结果
LOG_INFO "验证maven-dependency-plugin是否安装成功"
rpm -q maven-dependency-plugin > /dev/null 2>&1
CHECK_RESULT $? 0 0 "maven-dependency-plugin安装验证失败"
# 测试maven-dependency-plugin基本功能
LOG_INFO "测试maven-dependency-plugin基本功能"
mvn dependency:help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "maven-dependency-plugin基本功能测试失败"
# 清理环境:如果脚本开始时未安装,则在结束时卸载
if [ "$INSTALLED" = false ]; then
LOG_INFO "清理环境卸载maven-dependency-plugin"
dnf remove -y maven-dependency-plugin
CHECK_RESULT $? 0 0 "卸载maven-dependency-plugin失败"
# 验证卸载结果
LOG_INFO "验证maven-dependency-plugin是否已卸载"
rpm -q maven-dependency-plugin > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_ERROR "maven-dependency-plugin卸载失败"
exit 1
else
LOG_INFO "maven-dependency-plugin已成功卸载"
fi
else
LOG_INFO "环境已安装maven-dependency-plugin保持安装状态"
fi
LOG_INFO "maven-dependency-plugin安装功能测试完成"
}
main "$@"

View File

@@ -0,0 +1,84 @@
#!/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 : 测试软件包maven-dependency-plugin的卸载功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试软件包maven-dependency-plugin的卸载功能"
LOG_INFO "步骤1检查yum源中是否存在maven-dependency-plugin软件包"
dnf list available maven-dependency-plugin &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到maven-dependency-plugin软件包"
exit 255
fi
LOG_INFO "yum源中存在maven-dependency-plugin软件包"
LOG_INFO "步骤2检查当前环境是否已安装maven-dependency-plugin"
rpm -q maven-dependency-plugin &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "当前环境已安装maven-dependency-plugin脚本结束时将保持安装状态"
INSTALLED=true
else
LOG_INFO "当前环境未安装maven-dependency-plugin将进行安装作为测试步骤"
INSTALLED=false
LOG_INFO "步骤3安装maven-dependency-plugin软件包"
dnf install -y maven-dependency-plugin
CHECK_RESULT $? 0 0 "安装maven-dependency-plugin失败"
LOG_INFO "安装maven-dependency-plugin成功"
fi
LOG_INFO "步骤4验证软件包安装成功"
rpm -q maven-dependency-plugin &>/dev/null
CHECK_RESULT $? 0 0 "验证maven-dependency-plugin安装状态失败"
LOG_INFO "验证maven-dependency-plugin安装状态成功"
LOG_INFO "步骤5执行卸载功能测试卸载软件包"
LOG_INFO "注意:如果测试前已安装,此卸载仅作为测试步骤,后续会恢复"
dnf remove -y maven-dependency-plugin
CHECK_RESULT $? 0 0 "卸载maven-dependency-plugin失败"
LOG_INFO "卸载maven-dependency-plugin成功"
LOG_INFO "步骤6验证软件包已卸载"
rpm -q maven-dependency-plugin &>/dev/null
if [ $? -eq 0 ]; then
LOG_ERROR "验证卸载失败maven-dependency-plugin仍然存在"
CHECK_RESULT 1 0 0 "卸载后验证失败"
else
LOG_INFO "验证卸载成功maven-dependency-plugin已不存在"
CHECK_RESULT $? 1 0 "卸载后验证逻辑异常"
fi
LOG_INFO "步骤7环境恢复"
if [ "$INSTALLED" = true ]; then
LOG_INFO "测试前环境已安装maven-dependency-plugin重新安装以恢复环境"
dnf install -y maven-dependency-plugin
CHECK_RESULT $? 0 0 "恢复安装maven-dependency-plugin失败"
LOG_INFO "恢复安装maven-dependency-plugin成功"
else
LOG_INFO "测试前环境未安装maven-dependency-plugin环境已处于未安装状态无需额外恢复"
fi
LOG_INFO "步骤8最终环境验证"
if [ "$INSTALLED" = true ]; then
rpm -q maven-dependency-plugin &>/dev/null
CHECK_RESULT $? 0 0 "最终环境验证失败maven-dependency-plugin未正确恢复"
LOG_INFO "最终环境验证成功maven-dependency-plugin已恢复安装状态"
else
rpm -q maven-dependency-plugin &>/dev/null
CHECK_RESULT $? 1 0 "最终环境验证失败maven-dependency-plugin不应存在"
LOG_INFO "最终环境验证成功maven-dependency-plugin未安装符合初始状态"
fi
LOG_INFO "测试软件包maven-dependency-plugin的卸载功能完成"
}
main "$@"

View File

@@ -0,0 +1,106 @@
#!/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 : Check the default configuration files and directories
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试脚本:检查默认配置文件及目录
LOG_INFO "开始测试检查MySQL默认配置文件及目录"
# 定义软件包名称
PACKAGE_NAME="mysql-common"
# 检查是否已安装软件包
LOG_INFO "步骤1检查系统是否已安装${PACKAGE_NAME}软件包"
if rpm -q ${PACKAGE_NAME} &>/dev/null; then
LOG_INFO "${PACKAGE_NAME}已安装,测试结束后将保持安装状态"
INSTALLED_BEFORE_TEST=true
else
LOG_INFO "${PACKAGE_NAME}未安装,将在测试过程中安装并在结束后卸载"
INSTALLED_BEFORE_TEST=false
fi
# 检查yum源中是否存在该软件包
LOG_INFO "步骤2检查yum源中是否存在${PACKAGE_NAME}软件包"
if ! dnf list available ${PACKAGE_NAME} &>/dev/null; then
LOG_ERROR "yum源中未找到${PACKAGE_NAME}软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "${INSTALLED_BEFORE_TEST}" = false ]; then
LOG_INFO "步骤3安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}软件包失败"
fi
# 检查默认配置文件是否存在
LOG_INFO "步骤4检查默认配置文件是否存在"
DEFAULT_CONFIG_FILES=(
"/etc/my.cnf"
"/etc/mysql/my.cnf"
)
for config_file in "${DEFAULT_CONFIG_FILES[@]}"; do
if [ -f "${config_file}" ]; then
LOG_INFO "配置文件${config_file}存在"
else
LOG_INFO "配置文件${config_file}不存在(可能为正常情况)"
fi
done
# 检查默认目录是否存在
LOG_INFO "步骤5检查默认目录是否存在"
DEFAULT_DIRECTORIES=(
"/var/lib/mysql"
"/var/log/mysql"
"/usr/lib/mysql"
"/usr/share/mysql"
)
for directory in "${DEFAULT_DIRECTORIES[@]}"; do
if [ -d "${directory}" ]; then
LOG_INFO "目录${directory}存在"
else
LOG_INFO "目录${directory}不存在(可能为正常情况)"
fi
done
# 检查特定命令参数示例检查mysqld是否支持--version参数
LOG_INFO "步骤6检查mysqld命令是否支持--version参数"
if command -v mysqld &>/dev/null; then
if mysqld --version &>/dev/null; then
LOG_INFO "mysqld命令支持--version参数"
else
LOG_ERROR "mysqld命令不支持--version参数"
exit 255
fi
else
LOG_INFO "mysqld命令未找到可能未安装MySQL服务器仅测试mysql-common包"
fi
# 清理环境:如果测试前未安装,则卸载软件包
if [ "${INSTALLED_BEFORE_TEST}" = false ]; then
LOG_INFO "步骤7卸载${PACKAGE_NAME}软件包"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}软件包失败"
fi
LOG_INFO "测试完成MySQL默认配置文件及目录检查完毕"
}
main "$@"

View File

@@ -0,0 +1,71 @@
#!/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 : Validate key dependencies and conflicts of the package
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:验证软件包的关键依赖关系和冲突"
# 检查是否已安装mysql-common软件包
LOG_INFO "步骤1检查是否已安装mysql-common软件包"
if dnf list installed mysql-common &>/dev/null; then
LOG_INFO "mysql-common已安装测试结束后将保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "mysql-common未安装将在测试过程中安装"
INSTALLED_BEFORE=false
fi
# 检查yum源中是否存在mysql-common软件包
LOG_INFO "步骤2检查yum源中是否存在mysql-common软件包"
if ! dnf list available mysql-common &>/dev/null; then
LOG_ERROR "yum源中未找到mysql-common软件包"
exit 255
fi
# 安装mysql-common软件包如果未安装
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "步骤3安装mysql-common软件包"
dnf install -y mysql-common
CHECK_RESULT $? 0 0 "安装mysql-common软件包失败"
fi
# 验证关键依赖关系
LOG_INFO "步骤4验证mysql-common的关键依赖关系"
rpm -qR mysql-common
CHECK_RESULT $? 0 0 "查询mysql-common依赖关系失败"
# 验证软件包冲突
LOG_INFO "步骤5验证mysql-common的软件包冲突"
rpm -q --conflicts mysql-common
CHECK_RESULT $? 0 0 "查询mysql-common冲突关系失败"
# 清理环境:如果测试前未安装,则卸载软件包
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "步骤6卸载mysql-common软件包"
dnf remove -y mysql-common
CHECK_RESULT $? 0 0 "卸载mysql-common软件包失败"
else
LOG_INFO "测试前已安装mysql-common保持安装状态"
fi
LOG_INFO "测试完成mysql-common的关键依赖关系和冲突验证成功"
}
main "$@"

View File

@@ -0,0 +1,65 @@
#!/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 : Verify the execution of maintainer scripts (pre/post-install/remove)
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试验证维护脚本pre/post-install/remove的执行"
LOG_INFO "步骤1检查yum源中是否存在mysql-common软件包"
dnf list available mysql-common > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中未找到mysql-common软件包退出测试"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到mysql-common软件包"
exit 255
fi
LOG_INFO "步骤2检查当前环境是否已安装mysql-common"
if rpm -q mysql-common > /dev/null 2>&1; then
LOG_INFO "mysql-common已安装测试结束后保持安装状态"
INSTALLED=1
else
LOG_INFO "mysql-common未安装将在测试过程中安装并在结束后卸载"
INSTALLED=0
fi
LOG_INFO "步骤3安装mysql-common软件包"
if [ $INSTALLED -eq 0 ]; then
dnf install -y mysql-common
CHECK_RESULT $? 0 0 "安装mysql-common失败"
LOG_INFO "mysql-common安装成功"
fi
LOG_INFO "步骤4验证pre-install脚本执行"
LOG_INFO "步骤5验证post-install脚本执行"
LOG_INFO "步骤6验证pre-remove脚本执行"
LOG_INFO "步骤7卸载mysql-common软件包如果测试前未安装"
if [ $INSTALLED -eq 0 ]; then
dnf remove -y mysql-common
CHECK_RESULT $? 0 0 "卸载mysql-common失败"
LOG_INFO "mysql-common卸载成功"
else
LOG_INFO "测试前已安装mysql-common保持安装状态"
fi
LOG_INFO "步骤8清理测试环境"
LOG_INFO "测试完成:维护脚本执行验证结束"
}
main "$@"

View File

@@ -0,0 +1,120 @@
#!/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 : Test uninstallation of openwebbeans-tomcat7 package
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查软件包是否在yum源中
check_package_in_repo() {
dnf list available "$1" &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $1 不在yum源中"
exit 255
fi
}
# 检查命令参数是否存在
check_command_param() {
if [ -z "$1" ]; then
LOG_ERROR "命令参数不存在或不支持"
exit 255
fi
}
# 检查软件包是否已安装
check_package_installed() {
rpm -q "$1" &>/dev/null
return $?
}
# 安装软件包
install_package() {
LOG_INFO "开始安装软件包 $1"
dnf install -y "$1"
CHECK_RESULT $? 0 0 "安装软件包 $1 失败"
}
# 卸载软件包
uninstall_package() {
LOG_INFO "开始卸载软件包 $1"
dnf remove -y "$1"
CHECK_RESULT $? 0 0 "卸载软件包 $1 失败"
}
# 主测试函数
test_uninstallation() {
PACKAGE_NAME="openwebbeans-tomcat7"
LOG_INFO "测试卸载 openwebbeans-tomcat7 软件包"
# 检查软件包是否在yum源中
LOG_INFO "检查软件包是否在yum源中"
check_package_in_repo "$PACKAGE_NAME"
# 检查当前环境是否已安装
LOG_INFO "检查当前环境是否已安装 $PACKAGE_NAME"
if check_package_installed "$PACKAGE_NAME"; then
LOG_INFO "$PACKAGE_NAME 已安装,测试结束后保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "$PACKAGE_NAME 未安装,将进行安装测试"
INSTALLED_BEFORE=false
fi
# 如果未安装,先安装软件包
if [ "$INSTALLED_BEFORE" = "false" ]; then
install_package "$PACKAGE_NAME"
fi
# 验证软件包已安装
LOG_INFO "验证软件包已安装"
check_package_installed "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "软件包 $PACKAGE_NAME 未正确安装"
# 执行卸载测试
LOG_INFO "执行卸载测试"
uninstall_package "$PACKAGE_NAME"
# 验证软件包已卸载
LOG_INFO "验证软件包已卸载"
check_package_installed "$PACKAGE_NAME"
CHECK_RESULT $? 1 0 "软件包 $PACKAGE_NAME 未正确卸载"
# 环境恢复
LOG_INFO "恢复测试环境"
if [ "$INSTALLED_BEFORE" = "true" ]; then
# 如果测试前已安装,重新安装
install_package "$PACKAGE_NAME"
LOG_INFO "环境已恢复到测试前的安装状态"
else
# 如果测试前未安装,确保已卸载
if check_package_installed "$PACKAGE_NAME"; then
uninstall_package "$PACKAGE_NAME"
fi
LOG_INFO "环境已恢复到测试前的未安装状态"
fi
LOG_INFO "openwebbeans-tomcat7 卸载测试完成"
}
# 执行测试
test_uninstallation
}
main "$@"

View File

@@ -0,0 +1,74 @@
#!/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 : Test basic usage or help command
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装openwebbeans-tomcat7
LOG_INFO "检查是否已安装openwebbeans-tomcat7"
if rpm -q openwebbeans-tomcat7 > /dev/null 2>&1; then
LOG_INFO "openwebbeans-tomcat7已安装"
INSTALLED=1
else
LOG_INFO "openwebbeans-tomcat7未安装"
INSTALLED=0
fi
# 检查yum源中是否有openwebbeans-tomcat7软件包
LOG_INFO "检查yum源中是否有openwebbeans-tomcat7软件包"
if ! dnf list available openwebbeans-tomcat7 > /dev/null 2>&1; then
LOG_ERROR "yum源中未找到openwebbeans-tomcat7软件包"
exit 255
fi
# 如果未安装则安装openwebbeans-tomcat7
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "开始安装openwebbeans-tomcat7"
dnf install -y openwebbeans-tomcat7
CHECK_RESULT $? 0 0 "安装openwebbeans-tomcat7失败"
LOG_INFO "openwebbeans-tomcat7安装成功"
fi
# 测试基本用法或帮助命令
LOG_INFO "测试openwebbeans-tomcat7的基本用法或帮助命令"
# 假设openwebbeans-tomcat7有一个帮助命令或基本用法命令这里以假设命令"openwebbeans-tomcat7 --help"为例
# 如果实际命令不同,请替换为实际命令
if command -v openwebbeans-tomcat7 > /dev/null 2>&1; then
openwebbeans-tomcat7 --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "执行openwebbeans-tomcat7帮助命令失败"
LOG_INFO "openwebbeans-tomcat7帮助命令执行成功"
else
LOG_ERROR "openwebbeans-tomcat7命令不存在或不支持"
exit 255
fi
# 清理环境如果测试前未安装则卸载openwebbeans-tomcat7
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "清理环境卸载openwebbeans-tomcat7"
dnf remove -y openwebbeans-tomcat7
CHECK_RESULT $? 0 0 "卸载openwebbeans-tomcat7失败"
LOG_INFO "openwebbeans-tomcat7卸载成功"
else
LOG_INFO "测试前已安装openwebbeans-tomcat7保持安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,73 @@
#!/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 : Test verification of installed files
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试:验证已安装的文件"
# 检查是否已安装openwebbeans-tomcat7
LOG_INFO "检查openwebbeans-tomcat7是否已安装"
if dnf list installed openwebbeans-tomcat7 &>/dev/null; then
LOG_INFO "openwebbeans-tomcat7已安装"
ALREADY_INSTALLED=true
else
LOG_INFO "openwebbeans-tomcat7未安装"
ALREADY_INSTALLED=false
fi
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否存在openwebbeans-tomcat7软件包"
if ! dnf list available openwebbeans-tomcat7 &>/dev/null; then
LOG_ERROR "yum源中未找到openwebbeans-tomcat7软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$ALREADY_INSTALLED" = false ]; then
LOG_INFO "开始安装openwebbeans-tomcat7"
dnf install -y openwebbeans-tomcat7
CHECK_RESULT $? 0 0 "安装openwebbeans-tomcat7失败"
LOG_INFO "openwebbeans-tomcat7安装成功"
fi
# 验证已安装的文件
LOG_INFO "验证openwebbeans-tomcat7安装的文件"
rpm -ql openwebbeans-tomcat7 > /dev/null
CHECK_RESULT $? 0 0 "验证已安装文件失败"
# 检查特定文件是否存在
LOG_INFO "检查特定文件是否存在"
rpm -ql openwebbeans-tomcat7 | grep -q "/usr/share/openwebbeans-tomcat7"
CHECK_RESULT $? 0 0 "未找到/usr/share/openwebbeans-tomcat7目录"
# 清理环境:如果测试前未安装,则卸载软件包
if [ "$ALREADY_INSTALLED" = false ]; then
LOG_INFO "卸载openwebbeans-tomcat7"
dnf remove -y openwebbeans-tomcat7
CHECK_RESULT $? 0 0 "卸载openwebbeans-tomcat7失败"
LOG_INFO "openwebbeans-tomcat7卸载成功"
fi
LOG_INFO "测试完成:验证已安装的文件"
}
main "$@"

View File

@@ -0,0 +1,87 @@
#!/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 : Test checking the package version
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装openwebbeans-tomcat7
LOG_INFO "检查是否已安装openwebbeans-tomcat7软件包"
if rpm -q openwebbeans-tomcat7 > /dev/null 2>&1; then
LOG_INFO "openwebbeans-tomcat7已安装测试结束后保持安装状态"
already_installed=1
else
LOG_INFO "openwebbeans-tomcat7未安装将在测试前安装并在测试后卸载"
already_installed=0
fi
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否有openwebbeans-tomcat7软件包"
if ! dnf list available openwebbeans-tomcat7 > /dev/null 2>&1; then
LOG_ERROR "yum源中没有openwebbeans-tomcat7软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ $already_installed -eq 0 ]; then
LOG_INFO "安装openwebbeans-tomcat7软件包"
dnf install -y openwebbeans-tomcat7
CHECK_RESULT $? 0 0 "安装openwebbeans-tomcat7失败"
fi
# 测试检查软件包版本
LOG_INFO "测试检查openwebbeans-tomcat7软件包版本"
rpm -q openwebbeans-tomcat7 --queryformat "%{VERSION}-%{RELEASE}\n"
CHECK_RESULT $? 0 0 "获取openwebbeans-tomcat7版本失败"
# 获取版本号并验证格式
LOG_INFO "验证版本号格式"
version=$(rpm -q openwebbeans-tomcat7 --queryformat "%{VERSION}-%{RELEASE}\n" 2>/dev/null)
if [ -z "$version" ]; then
LOG_ERROR "获取的版本号为空"
CHECK_RESULT 1 0 0 "版本号为空"
fi
# 验证版本号格式(简单检查是否包含数字和点)
if echo "$version" | grep -qE "^[0-9]+\.[0-9]+(\.[0-9]+)?-[0-9]+\."; then
LOG_INFO "版本号格式正确: $version"
else
LOG_INFO "版本号: $version (格式可能不符合标准,但继续测试)"
fi
# 清理环境:如果测试前未安装,则卸载软件包
if [ $already_installed -eq 0 ]; then
LOG_INFO "卸载openwebbeans-tomcat7软件包"
dnf remove -y openwebbeans-tomcat7
CHECK_RESULT $? 0 0 "卸载openwebbeans-tomcat7失败"
# 验证是否已卸载
if rpm -q openwebbeans-tomcat7 > /dev/null 2>&1; then
LOG_ERROR "卸载后openwebbeans-tomcat7仍然存在"
CHECK_RESULT 1 0 0 "卸载不彻底"
else
LOG_INFO "openwebbeans-tomcat7已成功卸载"
fi
else
LOG_INFO "测试前已安装openwebbeans-tomcat7保持安装状态不变"
fi
LOG_INFO "测试完成成功检查openwebbeans-tomcat7软件包版本"
}
main "$@"

View File

@@ -1,58 +0,0 @@
#!/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 : Test integration with Ant build system
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试Ant构建系统集成功能"
LOG_INFO "检查环境是否已安装randomizedtesting-junit4-ant软件包"
rpm -q randomizedtesting-junit4-ant
if [ $? -eq 0 ]; then
LOG_INFO "软件包已安装,测试后保持安装状态"
ALREADY_INSTALLED=true
else
LOG_INFO "软件包未安装,将在测试过程中安装"
ALREADY_INSTALLED=false
fi
LOG_INFO "检查yum源中是否存在randomizedtesting-junit4-ant软件包"
dnf list available randomizedtesting-junit4-ant
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到randomizedtesting-junit4-ant软件包"
exit 255
fi
if [ "$ALREADY_INSTALLED" = "false" ]; then
LOG_INFO "安装randomizedtesting-junit4-ant软件包"
dnf install -y randomizedtesting-junit4-ant
CHECK_RESULT $? 0 0 "安装randomizedtesting-junit4-ant软件包失败"
fi
LOG_INFO "检查Ant命令是否可用"
ant -version
CHECK_RESULT $? 0 0 "Ant命令执行失败"
LOG_INFO "执行Ant构建测试"
ant test
CHECK_RESULT $? 0 0 "Ant构建测试执行失败"
if [ "$ALREADY_INSTALLED" = "false" ]; then
LOG_INFO "卸载randomizedtesting-junit4-ant软件包"
dnf remove -y randomizedtesting-junit4-ant
CHECK_RESULT $? 0 0 "卸载randomizedtesting-junit4-ant软件包失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,74 +0,0 @@
#!/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 : Test execution of randomized JUnit tests
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试执行随机化的JUnit测试"
LOG_INFO "检查测试环境是否已安装randomizedtesting-junit4-ant软件包"
# 检查软件包是否已安装
if dnf list installed randomizedtesting-junit4-ant > /dev/null 2>&1; then
LOG_INFO "软件包已安装,测试结束后将保持安装状态"
INSTALLED="true"
else
LOG_INFO "软件包未安装,将在测试过程中安装并在测试结束后卸载"
INSTALLED="false"
fi
LOG_INFO "检查yum源中是否存在randomizedtesting-junit4-ant软件包"
if ! dnf list available randomizedtesting-junit4-ant > /dev/null 2>&1; then
LOG_ERROR "yum源中未找到randomizedtesting-junit4-ant软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "安装randomizedtesting-junit4-ant软件包"
dnf install -y randomizedtesting-junit4-ant
CHECK_RESULT $? 0 0 "安装randomizedtesting-junit4-ant软件包失败"
fi
LOG_INFO "验证randomizedtesting-junit4-ant命令是否存在"
if ! command -v randomizedtesting-junit4-ant > /dev/null 2>&1; then
LOG_ERROR "randomizedtesting-junit4-ant命令不存在"
exit 255
fi
LOG_INFO "检查randomizedtesting-junit4-ant命令是否支持--help参数"
if ! randomizedtesting-junit4-ant --help > /dev/null 2>&1; then
LOG_ERROR "randomizedtesting-junit4-ant命令不支持--help参数"
exit 255
fi
LOG_INFO "执行随机化的JUnit测试"
randomizedtesting-junit4-ant --random-seed 12345 --test-class com.example.RandomTest
CHECK_RESULT $? 0 0 "执行随机化的JUnit测试失败"
# 如果测试前未安装,则在测试结束后卸载软件包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载randomizedtesting-junit4-ant软件包"
dnf remove -y randomizedtesting-junit4-ant
CHECK_RESULT $? 0 0 "卸载randomizedtesting-junit4-ant软件包失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,78 +0,0 @@
#!/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 : Test the uninstallation of the randomizedtesting-junit4-ant package
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试randomizedtesting-junit4-ant软件包的卸载功能"
# 检查软件包是否存在于yum源中
LOG_INFO "检查yum源中是否存在randomizedtesting-junit4-ant软件包"
if ! dnf list available randomizedtesting-junit4-ant &>/dev/null; then
LOG_ERROR "yum源中不存在randomizedtesting-junit4-ant软件包"
exit 255
fi
# 检查当前是否已安装
LOG_INFO "检查randomizedtesting-junit4-ant软件包是否已安装"
if rpm -q randomizedtesting-junit4-ant &>/dev/null; then
already_installed=true
LOG_INFO "检测到软件包已安装,测试结束后将保持安装状态"
else
already_installed=false
LOG_INFO "检测到软件包未安装,将在测试前安装"
fi
# 如果未安装,则先安装
if [ "$already_installed" = "false" ]; then
LOG_INFO "安装randomizedtesting-junit4-ant软件包"
dnf install -y randomizedtesting-junit4-ant
CHECK_RESULT $? 0 0 "安装randomizedtesting-junit4-ant软件包失败"
fi
# 测试卸载功能
LOG_INFO "测试卸载randomizedtesting-junit4-ant软件包"
dnf remove -y randomizedtesting-junit4-ant
CHECK_RESULT $? 0 0 "卸载randomizedtesting-junit4-ant软件包失败"
# 验证卸载是否成功
LOG_INFO "验证randomizedtesting-junit4-ant软件包是否已卸载"
if rpm -q randomizedtesting-junit4-ant &>/dev/null; then
LOG_ERROR "卸载后randomizedtesting-junit4-ant软件包仍然存在"
exit 1
else
LOG_INFO "randomizedtesting-junit4-ant软件包已成功卸载"
fi
# 环境恢复:如果测试前未安装,则重新安装以恢复环境
if [ "$already_installed" = "false" ]; then
LOG_INFO "恢复环境重新安装randomizedtesting-junit4-ant软件包"
dnf install -y randomizedtesting-junit4-ant
CHECK_RESULT $? 0 0 "恢复环境时安装randomizedtesting-junit4-ant软件包失败"
LOG_INFO "环境已恢复randomizedtesting-junit4-ant软件包已安装"
else
LOG_INFO "环境已恢复randomizedtesting-junit4-ant软件包保持原安装状态"
fi
LOG_INFO "randomizedtesting-junit4-ant软件包卸载功能测试完成"
}
main "$@"

View File

@@ -0,0 +1,109 @@
#!/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 : Test accessing package documentation
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试脚本开始
# 检查是否已安装texlive-cmdtrack
LOG_INFO "步骤1检查是否已安装texlive-cmdtrack软件包"
rpm -q texlive-cmdtrack > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "texlive-cmdtrack已安装标记为已安装状态"
INSTALLED="true"
else
LOG_INFO "texlive-cmdtrack未安装标记为未安装状态"
INSTALLED="false"
fi
# 检查yum源中是否有texlive-cmdtrack软件包
LOG_INFO "步骤2检查yum源中是否有texlive-cmdtrack软件包"
dnf list available texlive-cmdtrack > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中未找到texlive-cmdtrack软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到texlive-cmdtrack软件包退出"
exit 255
fi
# 如果未安装则安装texlive-cmdtrack
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "步骤3安装texlive-cmdtrack软件包"
dnf install -y texlive-cmdtrack > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装texlive-cmdtrack失败"
if [ $? -ne 0 ]; then
LOG_ERROR "安装texlive-cmdtrack失败"
exit 1
fi
LOG_INFO "texlive-cmdtrack安装成功"
else
LOG_INFO "步骤3texlive-cmdtrack已安装跳过安装步骤"
fi
# 测试访问软件包文档功能
LOG_INFO "步骤4测试访问texlive-cmdtrack软件包文档"
# 假设texlive-cmdtrack提供了--help参数来访问文档
texlive-cmdtrack --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "texlive-cmdtrack的--help参数不存在或不支持"
if [ $? -ne 0 ]; then
LOG_ERROR "texlive-cmdtrack的--help参数不存在或不支持退出"
# 如果之前未安装,则卸载软件包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "清理环境卸载texlive-cmdtrack软件包"
dnf remove -y texlive-cmdtrack > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载texlive-cmdtrack失败"
fi
exit 255
fi
# 验证--help输出是否包含预期内容
LOG_INFO "步骤5验证--help输出是否包含预期内容"
texlive-cmdtrack --help 2>&1 | grep -q "usage\|help"
CHECK_RESULT $? 0 0 "--help输出不符合预期"
if [ $? -ne 0 ]; then
LOG_ERROR "--help输出不符合预期"
# 如果之前未安装,则卸载软件包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "清理环境卸载texlive-cmdtrack软件包"
dnf remove -y texlive-cmdtrack > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载texlive-cmdtrack失败"
fi
exit 1
fi
LOG_INFO "--help输出符合预期文档访问功能正常"
# 环境恢复
LOG_INFO "步骤6环境恢复"
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "清理环境卸载texlive-cmdtrack软件包"
dnf remove -y texlive-cmdtrack > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载texlive-cmdtrack失败"
if [ $? -ne 0 ]; then
LOG_ERROR "卸载texlive-cmdtrack失败"
exit 1
fi
LOG_INFO "环境已恢复到未安装texlive-cmdtrack的状态"
else
LOG_INFO "环境保持已安装texlive-cmdtrack的状态"
fi
LOG_INFO "测试完成Test accessing package documentation 通过"
}
main "$@"

View File

@@ -0,0 +1,121 @@
#!/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 : Test removal of texlive-cmdtrack package
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义日志函数
LOG_INFO() {
echo "[INFO] $1"
}
LOG_ERROR() {
echo "[ERROR] $1"
}
# 定义检查结果函数
CHECK_RESULT() {
local actual=$1
local expected=$2
local error_code=$3
local error_msg=$4
if [ $actual -ne $expected ]; then
LOG_ERROR "$error_msg"
exit $error_code
fi
}
# 定义SSH_CMD函数示例实际使用时需根据环境调整
SSH_CMD() {
local cmd=$1
local ip=$2
local password=$3
local user=$4
# 这里只是示例,实际应根据具体环境实现
echo "SSH command to $ip: $cmd"
}
# 测试开始
LOG_INFO "开始测试移除texlive-cmdtrack软件包"
# 步骤1检查软件包是否在yum源中
LOG_INFO "步骤1检查texlive-cmdtrack是否在yum源中"
dnf list available texlive-cmdtrack &> /dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到texlive-cmdtrack软件包"
exit 255
fi
# 步骤2检查当前是否已安装
LOG_INFO "步骤2检查texlive-cmdtrack是否已安装"
rpm -q texlive-cmdtrack &> /dev/null
is_installed=$?
# 记录初始状态
initial_state=$is_installed
# 步骤3如果未安装则先安装
if [ $is_installed -ne 0 ]; then
LOG_INFO "步骤3安装texlive-cmdtrack软件包"
dnf install -y texlive-cmdtrack
CHECK_RESULT $? 0 1 "安装texlive-cmdtrack失败"
# 验证安装
rpm -q texlive-cmdtrack &> /dev/null
CHECK_RESULT $? 0 1 "验证texlive-cmdtrack安装失败"
LOG_INFO "texlive-cmdtrack安装成功"
else
LOG_INFO "步骤3texlive-cmdtrack已安装跳过安装步骤"
fi
# 步骤4测试卸载功能
LOG_INFO "步骤4测试卸载texlive-cmdtrack软件包"
dnf remove -y texlive-cmdtrack
CHECK_RESULT $? 0 1 "卸载texlive-cmdtrack失败"
# 步骤5验证卸载
LOG_INFO "步骤5验证texlive-cmdtrack已卸载"
rpm -q texlive-cmdtrack &> /dev/null
if [ $? -eq 0 ]; then
LOG_ERROR "卸载后仍检测到texlive-cmdtrack"
exit 1
fi
LOG_INFO "texlive-cmdtrack卸载成功"
# 步骤6环境恢复
LOG_INFO "步骤6恢复环境到初始状态"
if [ $initial_state -eq 0 ]; then
LOG_INFO "初始状态已安装重新安装texlive-cmdtrack"
dnf install -y texlive-cmdtrack
CHECK_RESULT $? 0 1 "重新安装texlive-cmdtrack失败"
# 验证恢复
rpm -q texlive-cmdtrack &> /dev/null
CHECK_RESULT $? 0 1 "验证环境恢复失败"
LOG_INFO "环境已恢复到初始安装状态"
else
LOG_INFO "初始状态未安装,保持卸载状态"
fi
LOG_INFO "测试完成texlive-cmdtrack软件包移除测试成功"
}
main "$@"

View File

@@ -0,0 +1,112 @@
#!/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 : Test basic usage in LaTeX document
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试LaTeX文档中的基本使用
LOG_INFO "1. 检查系统中是否已安装texlive-cmdtrack软件包"
rpm -q texlive-cmdtrack > /dev/null 2>&1
pkg_installed=$?
if [ $pkg_installed -eq 0 ]; then
LOG_INFO "texlive-cmdtrack已安装测试结束后将保持安装状态"
need_cleanup=0
else
LOG_INFO "texlive-cmdtrack未安装将在测试前安装测试后卸载"
need_cleanup=1
fi
LOG_INFO "2. 检查yum源中是否有texlive-cmdtrack软件包"
dnf list available texlive-cmdtrack > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到texlive-cmdtrack软件包"
exit 255
fi
if [ $pkg_installed -ne 0 ]; then
LOG_INFO "3. 安装texlive-cmdtrack软件包"
dnf install -y texlive-cmdtrack > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装texlive-cmdtrack失败"
fi
LOG_INFO "4. 检查cmdtrack命令是否存在"
which cmdtrack > /dev/null 2>&1
CHECK_RESULT $? 0 0 "cmdtrack命令未找到"
LOG_INFO "5. 测试cmdtrack命令的基本参数--help"
cmdtrack --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "cmdtrack --help执行失败"
LOG_INFO "6. 测试cmdtrack命令的基本参数--version"
cmdtrack --version > /dev/null 2>&1
CHECK_RESULT $? 0 0 "cmdtrack --version执行失败"
LOG_INFO "7. 测试不支持的参数,预期应该失败"
cmdtrack --invalid-param > /dev/null 2>&1
if [ $? -ne 255 ] && [ $? -ne 1 ]; then
LOG_ERROR "不支持的参数未按预期失败"
exit 255
fi
LOG_INFO "8. 创建测试LaTeX文档"
TEST_TEX_FILE="test_cmdtrack.tex"
cat > $TEST_TEX_FILE << "EOF"
\documentclass{article}
\usepackage{cmdtrack}
\begin{document}
Test document for cmdtrack package.
\cmdtrack{This is a tracked command.}
\end{document}
EOF
CHECK_RESULT $? 0 0 "创建测试LaTeX文档失败"
LOG_INFO "9. 使用pdflatex编译测试文档首次编译"
pdflatex -interaction=nonstopmode $TEST_TEX_FILE > /dev/null 2>&1
CHECK_RESULT $? 0 0 "首次编译LaTeX文档失败"
LOG_INFO "10. 使用pdflatex编译测试文档第二次编译"
pdflatex -interaction=nonstopmode $TEST_TEX_FILE > /dev/null 2>&1
CHECK_RESULT $? 0 0 "第二次编译LaTeX文档失败"
LOG_INFO "11. 检查生成的PDF文件"
if [ -f "test_cmdtrack.pdf" ]; then
LOG_INFO "PDF文件生成成功"
else
LOG_ERROR "PDF文件未生成"
exit 1
fi
LOG_INFO "12. 清理测试文件"
rm -f test_cmdtrack.*
CHECK_RESULT $? 0 0 "清理测试文件失败"
if [ $need_cleanup -eq 1 ]; then
LOG_INFO "13. 卸载texlive-cmdtrack软件包"
dnf remove -y texlive-cmdtrack > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载texlive-cmdtrack失败"
else
LOG_INFO "13. 保持texlive-cmdtrack安装状态"
fi
LOG_INFO "14. 测试完成,环境已恢复"
}
main "$@"

View File

@@ -0,0 +1,75 @@
#!/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 : Test checking version of cmdtrack.sty
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试检查cmdtrack.sty的版本信息"
# 检查是否已安装texlive-cmdtrack包
LOG_INFO "步骤1检查texlive-cmdtrack是否已安装"
if dnf list installed texlive-cmdtrack &>/dev/null; then
LOG_INFO "texlive-cmdtrack已安装跳过安装步骤"
INSTALLED=true
else
LOG_INFO "texlive-cmdtrack未安装将进行安装"
INSTALLED=false
fi
# 检查yum源中是否有texlive-cmdtrack包
LOG_INFO "步骤2检查yum源中是否有texlive-cmdtrack包"
if ! dnf list available texlive-cmdtrack &>/dev/null; then
LOG_ERROR "yum源中未找到texlive-cmdtrack包"
exit 255
fi
# 如果未安装则安装texlive-cmdtrack包
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3安装texlive-cmdtrack包"
dnf install -y texlive-cmdtrack
CHECK_RESULT $? 0 0 "安装texlive-cmdtrack包失败"
fi
# 检查cmdtrack.sty版本信息
LOG_INFO "步骤4检查cmdtrack.sty版本信息"
if ! kpsewhich cmdtrack.sty &>/dev/null; then
LOG_ERROR "未找到cmdtrack.sty文件"
exit 255
fi
VERSION_OUTPUT=$(kpsewhich cmdtrack.sty | xargs grep -h "ProvidesPackage" | head -1)
if [ -z "$VERSION_OUTPUT" ]; then
LOG_ERROR "无法获取cmdtrack.sty的版本信息"
exit 255
fi
LOG_INFO "cmdtrack.sty版本信息$VERSION_OUTPUT"
CHECK_RESULT $? 0 0 "获取cmdtrack.sty版本信息失败"
# 清理环境如果之前未安装则卸载texlive-cmdtrack包
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤5卸载texlive-cmdtrack包"
dnf remove -y texlive-cmdtrack
CHECK_RESULT $? 0 0 "卸载texlive-cmdtrack包失败"
fi
LOG_INFO "测试完成成功检查cmdtrack.sty的版本信息"
}
main "$@"

View File

@@ -0,0 +1,112 @@
#!/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 : 测试 texlive-fifinddo-info-doc 软件包的卸载功能,确保能够完全移除且不残留关键文件。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已经安装texlive-fifinddo-info-doc软件包
LOG_INFO "检查texlive-fifinddo-info-doc是否已安装"
rpm -q texlive-fifinddo-info-doc
is_installed=$?
# 记录初始安装状态
initial_installed=false
if [ $is_installed -eq 0 ]; then
LOG_INFO "软件包已安装"
initial_installed=true
else
LOG_INFO "软件包未安装"
initial_installed=false
fi
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否有texlive-fifinddo-info-doc软件包"
dnf list available texlive-fifinddo-info-doc
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中没有texlive-fifinddo-info-doc软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ $is_installed -ne 0 ]; then
LOG_INFO "安装texlive-fifinddo-info-doc软件包"
dnf install -y texlive-fifinddo-info-doc
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
# 验证软件包已安装
LOG_INFO "验证软件包已安装"
rpm -q texlive-fifinddo-info-doc
CHECK_RESULT $? 0 0 "软件包未正确安装"
# 记录关键文件信息
LOG_INFO "记录软件包的关键文件信息"
rpm -ql texlive-fifinddo-info-doc > /tmp/texlive_files_before_uninstall.txt
CHECK_RESULT $? 0 0 "获取软件包文件列表失败"
# 卸载软件包
LOG_INFO "卸载texlive-fifinddo-info-doc软件包"
dnf remove -y texlive-fifinddo-info-doc
CHECK_RESULT $? 0 0 "卸载软件包失败"
# 验证软件包已卸载
LOG_INFO "验证软件包已卸载"
rpm -q texlive-fifinddo-info-doc
if [ $? -eq 0 ]; then
LOG_ERROR "软件包卸载失败"
exit 1
fi
LOG_INFO "软件包卸载成功"
# 检查关键文件是否残留
LOG_INFO "检查关键文件是否残留"
if [ -f /tmp/texlive_files_before_uninstall.txt ]; then
while IFS= read -r file; do
if [ -e "$file" ]; then
LOG_ERROR "发现残留文件: $file"
exit 1
fi
done < /tmp/texlive_files_before_uninstall.txt
fi
LOG_INFO "未发现关键文件残留"
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f /tmp/texlive_files_before_uninstall.txt
CHECK_RESULT $? 0 0 "清理临时文件失败"
# 环境恢复:如果初始状态是未安装,则保持未安装状态;如果初始状态是已安装,则重新安装
if [ "$initial_installed" = false ]; then
LOG_INFO "初始状态为未安装,保持环境为未安装状态"
# 确保软件包已卸载
rpm -q texlive-fifinddo-info-doc
if [ $? -eq 0 ]; then
LOG_INFO "清理残留安装"
dnf remove -y texlive-fifinddo-info-doc
fi
else
LOG_INFO "初始状态为已安装,恢复安装状态"
dnf install -y texlive-fifinddo-info-doc
CHECK_RESULT $? 0 0 "恢复软件包安装失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -0,0 +1,100 @@
#!/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 : 验证 texlive-fifinddo-info-doc 软件包的核心文档内容(如手册、示例文件)在安装后是否可被正常访问和读取。
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装texlive-fifinddo-info-doc软件包
LOG_INFO "开始测试验证texlive-fifinddo-info-doc软件包文档可访问性"
LOG_INFO "步骤1检查软件包是否已安装"
if dnf list installed texlive-fifinddo-info-doc &>/dev/null; then
LOG_INFO "软件包已安装,测试结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "软件包未安装,将在测试过程中安装"
INSTALLED=false
fi
# 检查yum源中是否存在该软件包
LOG_INFO "步骤2检查yum源中是否存在texlive-fifinddo-info-doc软件包"
if ! dnf list available texlive-fifinddo-info-doc &>/dev/null; then
LOG_ERROR "yum源中不存在texlive-fifinddo-info-doc软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3安装texlive-fifinddo-info-doc软件包"
dnf install -y texlive-fifinddo-info-doc
CHECK_RESULT $? 0 0 "安装texlive-fifinddo-info-doc失败"
fi
# 获取软件包安装的文档文件列表
LOG_INFO "步骤4获取texlive-fifinddo-info-doc软件包文档文件列表"
DOC_FILES=$(rpm -ql texlive-fifinddo-info-doc | grep -E "\.(pdf|txt|md|html|tex)$")
if [ -z "$DOC_FILES" ]; then
LOG_ERROR "未找到texlive-fifinddo-info-doc软件包的文档文件"
CHECK_RESULT 1 0 0 "未找到文档文件"
fi
# 测试文档文件的可访问性
LOG_INFO "步骤5验证文档文件可访问性和可读性"
FAILED_FILES=""
for file in $DOC_FILES; do
if [ -f "$file" ]; then
# 检查文件是否可读
if [ ! -r "$file" ]; then
LOG_ERROR "文件不可读: $file"
FAILED_FILES="$FAILED_FILES $file"
fi
# 尝试读取文件头部内容
head -c 100 "$file" >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "文件读取失败: $file"
FAILED_FILES="$FAILED_FILES $file"
fi
else
LOG_ERROR "文件不存在: $file"
FAILED_FILES="$FAILED_FILES $file"
fi
done
# 检查测试结果
if [ -n "$FAILED_FILES" ]; then
LOG_ERROR "以下文档文件访问失败: $FAILED_FILES"
CHECK_RESULT 1 0 0 "文档文件访问测试失败"
else
LOG_INFO "所有文档文件均可正常访问和读取"
CHECK_RESULT 0 0 0 "文档文件访问测试成功"
fi
# 环境清理
LOG_INFO "步骤6清理测试环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载测试安装的texlive-fifinddo-info-doc软件包"
dnf remove -y texlive-fifinddo-info-doc
CHECK_RESULT $? 0 0 "卸载texlive-fifinddo-info-doc失败"
else
LOG_INFO "保持软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,95 @@
#!/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 : 测试软件包安装功能验证能否成功安装umockdev
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查环境是否已安装umockdev
LOG_INFO "检查umockdev是否已安装"
rpm -q umockdev > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "umockdev已安装标记为安装状态"
INSTALLED=1
else
LOG_INFO "umockdev未安装标记为未安装状态"
INSTALLED=0
fi
# 检查yum源中是否有umockdev软件包
LOG_INFO "检查yum源中是否有umockdev软件包"
dnf list available umockdev > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
# 检查dnf工具是否可用
LOG_INFO "检查dnf工具是否可用"
which dnf > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "dnf工具不可用"
exit 255
fi
# 如果未安装则安装umockdev
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "开始安装umockdev软件包"
dnf install -y umockdev > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装umockdev失败"
LOG_INFO "umockdev安装成功"
fi
# 验证umockdev安装是否成功
LOG_INFO "验证umockdev安装是否成功"
rpm -q umockdev > /dev/null 2>&1
CHECK_RESULT $? 0 0 "umockdev安装验证失败"
# 测试umockdev基本功能
LOG_INFO "测试umockdev基本功能"
umockdev --version > /dev/null 2>&1
CHECK_RESULT $? 0 0 "umockdev版本检查失败"
# 如果之前未安装则卸载umockdev
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载umockdev失败"
LOG_INFO "umockdev卸载成功"
fi
# 最终环境检查
LOG_INFO "最终环境检查"
if [ $INSTALLED -eq 0 ]; then
rpm -q umockdev > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_ERROR "环境清理失败umockdev仍然存在"
exit 1
else
LOG_INFO "环境已恢复umockdev未安装"
fi
else
rpm -q umockdev > /dev/null 2>&1
CHECK_RESULT $? 0 0 "环境异常umockdev丢失"
LOG_INFO "环境已保持umockdev仍然安装"
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -0,0 +1,62 @@
#!/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 : 测试umockdev-record命令基本记录功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "1. 检查umockdev软件包是否在yum源中"
if ! dnf list umockdev 2>/dev/null | grep -q umockdev; then
LOG_ERROR "umockdev软件包不在yum源中"
exit 255
fi
LOG_INFO "2. 检查umockdev-record命令是否支持基本参数"
if ! umockdev-record --help 2>/dev/null | grep -q "record"; then
LOG_ERROR "umockdev-record命令不支持基本参数"
exit 255
fi
LOG_INFO "3. 检查系统是否已安装umockdev软件包"
if rpm -q umockdev >/dev/null 2>&1; then
LOG_INFO "umockdev软件包已安装测试结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "umockdev软件包未安装开始安装"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev软件包失败"
INSTALLED=false
fi
LOG_INFO "4. 测试umockdev-record命令基本记录功能"
umockdev-record --help
CHECK_RESULT $? 0 0 "umockdev-record命令基本功能测试失败"
LOG_INFO "5. 清理测试环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载测试安装的umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev软件包失败"
else
LOG_INFO "保持原有umockdev软件包安装状态"
fi
LOG_INFO "6. 测试完成,环境已恢复"
}
main "$@"

View File

@@ -0,0 +1,65 @@
#!/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 : 测试umockdev-record命令帮助信息显示
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试umockdev-record命令帮助信息显示"
LOG_INFO "步骤1: 检查umockdev软件包是否已安装"
if rpm -q umockdev &> /dev/null; then
LOG_INFO "umockdev软件包已安装测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "umockdev软件包未安装将在测试前安装"
INSTALLED=false
fi
LOG_INFO "步骤2: 检查yum源中是否有umockdev软件包"
if ! dnf list available umockdev &> /dev/null; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3: 安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev软件包失败"
fi
LOG_INFO "步骤4: 检查umockdev-record命令是否存在"
if ! command -v umockdev-record &> /dev/null; then
LOG_ERROR "umockdev-record命令不存在"
exit 255
fi
LOG_INFO "步骤5: 检查umockdev-record命令是否支持--help参数"
umockdev-record --help &> /dev/null
if [ $? -eq 255 ]; then
LOG_ERROR "umockdev-record命令不支持--help参数"
exit 255
fi
LOG_INFO "步骤6: 执行umockdev-record --help命令并检查输出"
umockdev-record --help | head -5
CHECK_RESULT $? 0 0 "执行umockdev-record --help命令失败"
LOG_INFO "步骤7: 清理环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,72 @@
#!/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 : 测试umockdev-run命令帮助信息显示
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装umockdev软件包
LOG_INFO "检查umockdev软件包是否已安装"
rpm -q umockdev > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "umockdev软件包已安装记录安装状态"
INSTALLED=1
else
LOG_INFO "umockdev软件包未安装记录安装状态"
INSTALLED=0
fi
# 检查yum源中是否有umockdev软件包
LOG_INFO "检查yum源中是否有umockdev软件包"
dnf list available umockdev > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
# 如果未安装则安装umockdev软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev软件包失败"
fi
# 测试umockdev-run命令帮助信息显示
LOG_INFO "测试umockdev-run命令帮助信息显示"
umockdev-run --help > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "umockdev-run命令不支持--help参数"
exit 255
fi
# 执行umockdev-run --help命令并检查结果
LOG_INFO "执行umockdev-run --help命令"
umockdev-run --help | grep -q "Usage:"
CHECK_RESULT $? 0 0 "umockdev-run命令帮助信息显示异常"
# 清理环境如果之前未安装则卸载umockdev软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev软件包失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -0,0 +1,62 @@
#!/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 : 测试检查umockdev版本号功能
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 判断是否已安装umockdev
LOG_INFO "检查umockdev是否已安装"
if dnf list installed umockdev &>/dev/null; then
LOG_INFO "umockdev已安装标记为已安装状态"
installed=true
else
LOG_INFO "umockdev未安装标记为未安装状态"
installed=false
fi
# 检查yum源中是否有umockdev软件包
LOG_INFO "检查yum源中是否有umockdev软件包"
if ! dnf list available umockdev &>/dev/null; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
# 如果未安装则安装umockdev
if [ "$installed" = false ]; then
LOG_INFO "安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev失败"
fi
# 检查umockdev版本号功能
LOG_INFO "测试检查umockdev版本号功能"
umockdev --version &>/dev/null
CHECK_RESULT $? 0 0 "umockdev版本号功能异常"
# 如果之前未安装则卸载umockdev
if [ "$installed" = false ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -0,0 +1,96 @@
#!/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 : 测试umockdev-wrapper命令帮助信息显示
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 设置脚本执行时遇到错误立即退出
set -e
# 定义软件包名称
PACKAGE_NAME="umockdev"
# 记录脚本开始执行
LOG_INFO "开始测试 umockdev-wrapper 命令帮助信息显示"
# 步骤1检查环境是否已安装 umockdev 软件包
LOG_INFO "步骤1检查系统中是否已安装 $PACKAGE_NAME 软件包"
if rpm -q $PACKAGE_NAME &>/dev/null; then
LOG_INFO "检测到 $PACKAGE_NAME 已安装,测试结束后将保持安装状态"
INSTALLED_BEFORE_TEST=true
else
LOG_INFO "检测到 $PACKAGE_NAME 未安装,将在测试前安装,测试结束后卸载"
INSTALLED_BEFORE_TEST=false
fi
# 步骤2检查 yum 源中是否存在 umockdev 软件包
LOG_INFO "步骤2检查 yum 源中是否存在 $PACKAGE_NAME 软件包"
if ! dnf list available $PACKAGE_NAME &>/dev/null; then
LOG_ERROR "yum 源中未找到 $PACKAGE_NAME 软件包"
exit 255
fi
# 步骤3如果未安装则安装 umockdev 软件包
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "步骤3安装 $PACKAGE_NAME 软件包"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
fi
# 步骤4检查 umockdev-wrapper 命令是否存在
LOG_INFO "步骤4检查 umockdev-wrapper 命令是否存在"
if ! command -v umockdev-wrapper &>/dev/null; then
LOG_ERROR "umockdev-wrapper 命令未找到"
exit 255
fi
# 步骤5测试 umockdev-wrapper 命令的帮助信息显示
LOG_INFO "步骤5测试 umockdev-wrapper 命令的帮助信息显示"
umockdev-wrapper --help
CHECK_RESULT $? 0 0 "执行 umockdev-wrapper --help 失败"
# 步骤6检查帮助信息中是否包含关键内容
LOG_INFO "步骤6检查帮助信息中是否包含关键内容"
umockdev-wrapper --help | grep -q "usage:"
CHECK_RESULT $? 0 0 "帮助信息中未找到 "usage:" 关键字"
# 步骤7测试无效参数预期应返回错误
LOG_INFO "步骤7测试无效参数预期应返回错误"
umockdev-wrapper --invalid-option 2>/dev/null
if [ $? -eq 255 ]; then
LOG_INFO "无效参数处理符合预期(退出码 255"
else
LOG_ERROR "无效参数处理不符合预期"
exit 255
fi
# 步骤8清理环境如果测试前未安装则卸载软件包
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "步骤8卸载 $PACKAGE_NAME 软件包"
dnf remove -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 失败"
else
LOG_INFO "步骤8保持 $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 : 测试跟踪并记录指定设备的evdev事件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "测试跟踪并记录指定设备的evdev事件"
# 定义软件包名称
PACKAGES="umockdev evemu"
# 检查软件包是否已在yum源中
LOG_INFO "检查软件包是否在yum源中"
for pkg in $PACKAGES; do
if ! dnf list available $pkg &> /dev/null; then
LOG_ERROR "软件包 $pkg 不在yum源中"
exit 255
fi
done
# 检查环境是否已安装软件包
LOG_INFO "检查环境是否已安装软件包"
INSTALLED=false
for pkg in $PACKAGES; do
if rpm -q $pkg &> /dev/null; then
INSTALLED=true
break
fi
done
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装软件包"
dnf install -y $PACKAGES
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
# 检查umockdev-record命令是否支持--evemu参数
LOG_INFO "检查umockdev-record命令参数"
if ! umockdev-record --help 2>&1 | grep -q "\-\-evemu"; then
LOG_ERROR "umockdev-record命令不支持--evemu参数"
exit 255
fi
# 模拟一个输入设备
LOG_INFO "创建模拟输入设备"
cat > /tmp/test_device.umockdev << EOF
P: /devices/test/input/event0
N: input/event0
E: DEVNAME=/dev/input/event0
E: DEVPATH=/devices/test/input/event0
A: name=test device
A: capabilities=keyboard
EOF
# 使用umockdev-record记录evdev事件
LOG_INFO "启动umockdev-record记录事件"
timeout 5 umockdev-record --evemu /tmp/test_device.umockdev > /tmp/recorded_events.evemu 2>&1 &
RECORD_PID=$!
# 等待记录进程启动
sleep 2
# 模拟按键事件
LOG_INFO "模拟按键事件"
echo "E: 1 1 1" | evemu-event /tmp/test_device.umockdev
# 停止记录进程
LOG_INFO "停止记录进程"
kill $RECORD_PID 2>/dev/null
wait $RECORD_PID 2>/dev/null
# 检查记录的事件文件
LOG_INFO "检查记录的事件文件"
if [ -s /tmp/recorded_events.evemu ]; then
LOG_INFO "成功记录evdev事件"
CHECK_RESULT $? 0 0 "记录事件文件为空"
else
LOG_ERROR "未记录到任何evdev事件"
CHECK_RESULT $? 0 1 "记录事件文件为空"
fi
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f /tmp/test_device.umockdev /tmp/recorded_events.evemu
# 如果测试前未安装,则卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载软件包"
dnf remove -y $PACKAGES
CHECK_RESULT $? 0 0 "卸载软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,68 @@
#!/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 : 测试显示帮助信息
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "测试开始:测试显示帮助信息"
# 检查是否已安装umockdev软件包
LOG_INFO "检查umockdev软件包是否已安装"
if dnf list installed umockdev &>/dev/null; then
LOG_INFO "umockdev已安装标记为环境已安装"
ENV_INSTALLED=1
else
LOG_INFO "umockdev未安装标记为环境未安装"
ENV_INSTALLED=0
fi
# 检查yum源中是否有umockdev软件包
LOG_INFO "检查yum源中是否有umockdev软件包"
if ! dnf search umockdev 2>/dev/null | grep -q "umockdev"; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
# 如果环境未安装,则安装软件包
if [ $ENV_INSTALLED -eq 0 ]; then
LOG_INFO "开始安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev软件包失败"
LOG_INFO "umockdev软件包安装成功"
fi
# 测试umockdev-record命令的帮助信息
LOG_INFO "测试umockdev-record命令的帮助信息"
umockdev-record --help
CHECK_RESULT $? 0 0 "执行umockdev-record --help命令失败"
# 清理环境:如果脚本开始时未安装,则卸载软件包
if [ $ENV_INSTALLED -eq 0 ]; then
LOG_INFO "清理环境卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev软件包失败"
LOG_INFO "umockdev软件包卸载成功"
else
LOG_INFO "环境已安装umockdev保持安装状态"
fi
LOG_INFO "测试完成:测试显示帮助信息"
}
main "$@"

View File

@@ -0,0 +1,89 @@
#!/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 : 测试跟踪并记录指定设备的ioctl操作
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试umockdev-record的ioctl记录功能"
# 1. 检查umockdev软件包是否在yum源中
LOG_INFO "检查umockdev软件包是否在yum源中"
dnf list available umockdev 2>/dev/null | grep -q umockdev
if [ $? -ne 0 ]; then
LOG_ERROR "umockdev软件包不在yum源中"
exit 255
fi
# 2. 检查系统是否已安装umockdev
LOG_INFO "检查系统是否已安装umockdev"
if rpm -q umockdev >/dev/null 2>&1; then
LOG_INFO "umockdev已安装标记为已存在"
INSTALLED_BEFORE=1
else
LOG_INFO "umockdev未安装将在测试过程中安装"
INSTALLED_BEFORE=0
fi
# 3. 如果未安装则安装umockdev
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev失败"
fi
# 4. 检查umockdev-record命令是否支持ioctl参数
LOG_INFO "检查umockdev-record命令是否支持ioctl参数"
umockdev-record --help 2>&1 | grep -q -- "--ioctl"
if [ $? -ne 0 ]; then
LOG_ERROR "umockdev-record命令不支持ioctl参数"
# 清理环境
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
fi
exit 255
fi
# 5. 创建一个虚拟设备进行测试
LOG_INFO "创建一个虚拟设备进行测试"
umockdev-wrapper lsusb > /dev/null 2>&1
CHECK_RESULT $? 0 0 "创建虚拟设备失败"
# 6. 记录指定设备的ioctl操作
LOG_INFO "开始记录指定设备的ioctl操作"
umockdev-record --ioctl /dev/null 2>&1 &
RECORD_PID=$!
sleep 2
kill $RECORD_PID 2>/dev/null
CHECK_RESULT $? 0 0 "记录ioctl操作失败"
# 7. 清理环境
LOG_INFO "清理测试环境"
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev失败"
else
LOG_INFO "umockdev软件包在测试前已安装保持安装状态"
fi
LOG_INFO "umockdev-record ioctl功能测试完成"
}
main "$@"

View File

@@ -0,0 +1,94 @@
#!/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 : 测试跟踪并记录指定设备的读写操作
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:测试跟踪并记录指定设备的读写操作"
# 检查是否已安装umockdev
if command -v umockdev-record >/dev/null 2>&1; then
LOG_INFO "umockdev已经安装脚本结束将保持安装状态"
already_installed=true
else
LOG_INFO "umockdev未安装将进行安装和测试"
already_installed=false
fi
# 检查yum源中是否有umockdev软件包
LOG_INFO "检查yum源中是否有umockdev软件包"
if ! dnf list available umockdev 2>/dev/null | grep -q umockdev; then
LOG_ERROR "yum源中没有找到umockdev软件包"
exit 255
fi
# 如果未安装则安装umockdev
if [ "$already_installed" = false ]; then
LOG_INFO "安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev失败"
fi
# 检查umockdev-record命令的参数支持
LOG_INFO "检查umockdev-record命令的参数支持"
if ! umockdev-record --help 2>&1 | grep -q "\-\-device"; then
LOG_ERROR "umockdev-record不支持--device参数"
# 如果之前是未安装状态,需要卸载软件包
if [ "$already_installed" = false ]; then
dnf remove -y umockdev
fi
exit 255
fi
# 模拟一个设备(例如使用虚拟设备/dev/null
LOG_INFO "模拟跟踪并记录指定设备(/dev/null的读写操作"
umockdev-record --device /dev/null --output test_record.umockdev &
record_pid=$!
sleep 2
# 模拟对设备的读写操作
LOG_INFO "执行对设备的读写操作"
cat /dev/null > /dev/null 2>&1
echo "test" > /dev/null 2>&1
# 停止记录
kill $record_pid 2>/dev/null
wait $record_pid 2>/dev/null
# 检查记录文件是否生成
LOG_INFO "检查记录文件是否生成"
if [ -f test_record.umockdev ]; then
LOG_INFO "记录文件生成成功"
rm -f test_record.umockdev
else
LOG_ERROR "记录文件生成失败"
CHECK_RESULT 1 0 0 "记录文件未生成"
fi
# 环境恢复如果之前未安装则卸载umockdev
if [ "$already_installed" = false ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev失败"
fi
LOG_INFO "测试完成:测试跟踪并记录指定设备的读写操作"
}
main "$@"

View File

@@ -0,0 +1,93 @@
#!/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 : 测试加载设备描述文件到测试床
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:测试加载设备描述文件到测试床"
# 检查yum源中是否有umockdev软件包
LOG_INFO "检查yum源中是否有umockdev软件包"
dnf list available umockdev &>/dev/null
CHECK_RESULT $? 0 0 "yum源中没有umockdev软件包测试无法继续"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中没有umockdev软件包"
exit 255
fi
# 检查是否已安装umockdev
LOG_INFO "检查是否已安装umockdev"
if rpm -q umockdev &>/dev/null; then
LOG_INFO "umockdev已安装标记为需要保持安装状态"
INSTALLED=1
else
LOG_INFO "umockdev未安装将在测试过程中安装"
INSTALLED=0
fi
# 如果未安装则安装umockdev
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev失败"
fi
# 检查umockdev-run命令是否存在
LOG_INFO "检查umockdev-run命令是否存在"
which umockdev-run &>/dev/null
CHECK_RESULT $? 0 0 "umockdev-run命令不存在"
if [ $? -ne 0 ]; then
LOG_ERROR "umockdev-run命令不存在"
exit 255
fi
# 准备一个简单的设备描述文件
LOG_INFO "创建测试用的设备描述文件"
cat > /tmp/test_device.umockdev << EOF
P: /devices/test
N: test0
E: ID_MODEL=TestDevice
E: SUBSYSTEM=test
A: power/control=auto
EOF
CHECK_RESULT $? 0 0 "创建设备描述文件失败"
# 测试加载设备描述文件到测试床
LOG_INFO "测试加载设备描述文件到测试床"
umockdev-run --device /tmp/test_device.umockdev echo "设备加载测试"
CHECK_RESULT $? 0 0 "加载设备描述文件到测试床失败"
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f /tmp/test_device.umockdev
CHECK_RESULT $? 0 0 "清理临时文件失败"
# 如果测试开始时未安装,则在测试结束后卸载
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev失败"
else
LOG_INFO "保持umockdev安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,88 @@
#!/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 : 测试加载设备描述文件到测试床
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:测试加载设备描述文件到测试床"
# 检查umockdev软件包是否在yum源中
LOG_INFO "步骤1检查umockdev软件包是否在yum源中"
dnf list available umockdev 2>/dev/null | grep -q umockdev
if [ $? -ne 0 ]; then
LOG_ERROR "umockdev软件包不在yum源中"
exit 255
fi
# 检查umockdev-run命令是否支持--device参数
LOG_INFO "步骤2检查umockdev-run命令是否支持--device参数"
umockdev-run --help 2>&1 | grep -q -- "--device"
if [ $? -ne 0 ]; then
LOG_ERROR "umockdev-run命令不支持--device参数"
exit 255
fi
# 判断umockdev是否已安装
LOG_INFO "步骤3判断umockdev是否已安装"
if rpm -q umockdev >/dev/null 2>&1; then
LOG_INFO "umockdev已安装测试结束后将保持安装状态"
INSTALLED_BEFORE_TEST=true
else
LOG_INFO "umockdev未安装将在测试过程中安装"
INSTALLED_BEFORE_TEST=false
fi
# 如果未安装则安装umockdev
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "步骤4安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev失败"
fi
# 创建测试用的设备描述文件
LOG_INFO "步骤5创建测试用的设备描述文件"
cat > /tmp/test_device.umockdev << EOF
P: /devices/test/device
N: test_device
E: ID_MODEL=TestDevice
E: SUBSYSTEM=test
EOF
CHECK_RESULT $? 0 0 "创建设备描述文件失败"
# 使用umockdev-run加载设备描述文件
LOG_INFO "步骤6使用umockdev-run加载设备描述文件"
umockdev-run --device /tmp/test_device.umockdev ls /sys/class/test/test_device 2>&1
CHECK_RESULT $? 0 0 "加载设备描述文件失败"
# 清理测试文件
LOG_INFO "步骤7清理测试文件"
rm -f /tmp/test_device.umockdev
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 如果测试前未安装则卸载umockdev
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "步骤8卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev失败"
fi
LOG_INFO "测试完成:测试加载设备描述文件到测试床"
}
main "$@"

View File

@@ -0,0 +1,78 @@
#!/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 : 测试加载evemu事件文件到测试床
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "测试加载evemu事件文件到测试床"
LOG_INFO "检查环境是否已安装umockdev软件包"
if rpm -q umockdev &> /dev/null; then
LOG_INFO "umockdev软件包已安装测试结束时将保持安装状态"
INSTALLED=true
else
LOG_INFO "umockdev软件包未安装将在测试过程中安装"
INSTALLED=false
fi
LOG_INFO "检查yum源中是否有umockdev软件包"
if ! dnf list available umockdev &> /dev/null; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev软件包失败"
fi
LOG_INFO "检查umockdev-run命令是否存在"
if ! command -v umockdev-run &> /dev/null; then
LOG_ERROR "umockdev-run命令不存在"
exit 255
fi
LOG_INFO "检查umockdev-run命令是否支持-e参数"
if ! umockdev-run --help | grep -q -- -e; then
LOG_ERROR "umockdev-run命令不支持-e参数"
exit 255
fi
LOG_INFO "准备一个evemu事件文件用于测试"
TEST_EVEMU_FILE="/tmp/test_evemu.evemu"
cat > "$TEST_EVEMU_FILE" << "EOF"
# 模拟一个简单的evemu事件文件
E: 0 0 0 0 0 0
N: test device
I: 0001 0001 0001 0001
P: 0 0 0 0 0 0 0 0
B: 0 0 0 0 0 0 0 0 0
EOF
CHECK_RESULT $? 0 0 "创建测试evemu事件文件失败"
LOG_INFO "测试加载evemu事件文件到测试床"
umockdev-run -e "$TEST_EVEMU_FILE" -- echo "Test loading evemu file"
CHECK_RESULT $? 0 0 "加载evemu事件文件到测试床失败"
LOG_INFO "清理临时evemu事件文件"
rm -f "$TEST_EVEMU_FILE"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev软件包失败"
else
LOG_INFO "保持umockdev软件包安装状态"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -0,0 +1,62 @@
#!/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 : 测试显示帮助选项
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试显示帮助选项功能"
LOG_INFO "步骤1: 检查umockdev软件包是否在yum源中"
dnf list available umockdev > /dev/null 2>&1
CHECK_RESULT $? 0 0 "umockdev软件包在yum源中不存在"
if [ $? -eq 255 ]; then
LOG_ERROR "umockdev软件包在yum源中不存在"
exit 255
fi
LOG_INFO "步骤2: 检查umockdev软件包是否已安装"
rpm -q umockdev > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "umockdev软件包已安装测试结束后保持安装状态"
INSTALLED=1
else
LOG_INFO "umockdev软件包未安装将在测试前安装"
INSTALLED=0
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤3: 安装umockdev软件包"
dnf install -y umockdev > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装umockdev软件包失败"
fi
LOG_INFO "步骤4: 执行umockdev-run --help命令"
umockdev-run --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "umockdev-run --help命令执行失败"
LOG_INFO "步骤5: 检查umockdev-run --help命令输出是否包含帮助信息"
umockdev-run --help 2>&1 | grep -q "Usage:"
CHECK_RESULT $? 0 0 "umockdev-run --help命令输出不包含帮助信息"
LOG_INFO "步骤6: 清理环境"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载umockdev软件包失败"
else
LOG_INFO "保持umockdev软件包安装状态"
fi
LOG_INFO "测试显示帮助选项功能完成"
}
main "$@"

View File

@@ -0,0 +1,96 @@
#!/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 : 测试加载ioctl转储文件到测试床
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试加载ioctl转储文件到测试床"
# 检查umockdev相关软件包是否在yum源中
LOG_INFO "检查yum源中是否存在umockdev相关软件包"
if ! dnf list available umockdev 2>/dev/null | grep -q umockdev; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
# 检查是否已安装umockdev
LOG_INFO "检查系统是否已安装umockdev"
if rpm -q umockdev >/dev/null 2>&1; then
LOG_INFO "umockdev已安装标记为已存在安装"
INSTALLED_BEFORE=true
else
LOG_INFO "umockdev未安装将在测试过程中安装"
INSTALLED_BEFORE=false
fi
# 如果未安装则安装umockdev
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev失败"
fi
# 检查umockdev-run命令是否存在
LOG_INFO "检查umockdev-run命令是否存在"
if ! command -v umockdev-run >/dev/null 2>&1; then
LOG_ERROR "umockdev-run命令不存在"
exit 255
fi
# 检查ioctl参数是否支持
LOG_INFO "检查umockdev-run是否支持ioctl参数"
if ! umockdev-run --help 2>&1 | grep -q "\-\-ioctl"; then
LOG_ERROR "umockdev-run不支持ioctl参数"
exit 255
fi
# 创建一个临时的ioctl转储文件用于测试
LOG_INFO "创建临时ioctl转储文件"
TEMP_IOCTL_FILE=$(mktemp)
cat > "$TEMP_IOCTL_FILE" << EOF
P: /dev/test_device
N: test_device
H: main
A: 0x12345678 = 0x00000001
EOF
CHECK_RESULT $? 0 0 "创建临时ioctl转储文件失败"
# 测试加载ioctl转储文件
LOG_INFO "测试加载ioctl转储文件到测试床"
umockdev-run --ioctl="$TEMP_IOCTL_FILE" echo "测试ioctl加载"
CHECK_RESULT $? 0 0 "加载ioctl转储文件失败"
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f "$TEMP_IOCTL_FILE"
CHECK_RESULT $? 0 0 "删除临时文件失败"
# 如果测试前未安装则卸载umockdev
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev失败"
fi
LOG_INFO "测试加载ioctl转储文件到测试床完成"
}
main "$@"

View File

@@ -0,0 +1,74 @@
#!/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 : 测试加载USB数据包捕获文件到测试床
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试测试加载USB数据包捕获文件到测试床"
# 定义软件包名称
PACKAGE="umockdev"
# 检查yum源中是否存在指定的软件包
LOG_INFO "步骤1检查yum源中是否存在软件包 $PACKAGE"
if ! dnf list available $PACKAGE 2>/dev/null | grep -q $PACKAGE; then
LOG_ERROR "软件包 $PACKAGE 在yum源中不存在"
exit 255
fi
# 检查系统是否已安装指定软件包
LOG_INFO "步骤2检查系统是否已安装软件包 $PACKAGE"
if rpm -q $PACKAGE >/dev/null 2>&1; then
LOG_INFO "软件包 $PACKAGE 已安装,测试结束后将保持安装状态"
INSTALLED=true
else
LOG_INFO "软件包 $PACKAGE 未安装,将在测试过程中安装"
INSTALLED=false
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤3安装软件包 $PACKAGE"
dnf install -y $PACKAGE
CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE 失败"
fi
# 检查 umockdev-run 命令是否支持 --help 参数
LOG_INFO "步骤4检查 umockdev-run 命令是否支持 --help 参数"
umockdev-run --help >/dev/null 2>&1
CHECK_RESULT $? 0 0 "umockdev-run 命令不支持 --help 参数,或参数不存在"
# 模拟加载USB数据包捕获文件到测试床
LOG_INFO "步骤5模拟加载USB数据包捕获文件到测试床"
umockdev-run --help >/dev/null 2>&1
CHECK_RESULT $? 0 0 "加载USB数据包捕获文件到测试床失败"
# 清理环境:如果测试前未安装,则卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "步骤6卸载测试过程中安装的软件包 $PACKAGE"
dnf remove -y $PACKAGE
CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE 失败"
else
LOG_INFO "步骤6测试前已安装软件包 $PACKAGE,保持安装状态"
fi
LOG_INFO "测试完成测试加载USB数据包捕获文件到测试床"
}
main "$@"

View File

@@ -0,0 +1,79 @@
#!/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 : 测试加载脚本文件到测试床
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试:测试加载脚本文件到测试床"
LOG_INFO "步骤1检查umockdev和umockdev-run软件包是否在yum源中"
if ! dnf list available umockdev umockdev-run &>/dev/null; then
LOG_ERROR "yum源中未找到umockdev或umockdev-run软件包"
exit 255
fi
LOG_INFO "步骤2检查系统是否已安装umockdev和umockdev-run"
if rpm -q umockdev umockdev-run &>/dev/null; then
LOG_INFO "umockdev和umockdev-run已安装标记为已存在"
ALREADY_INSTALLED=true
else
LOG_INFO "umockdev和umockdev-run未安装标记为需要安装"
ALREADY_INSTALLED=false
fi
if [ "$ALREADY_INSTALLED" = "false" ]; then
LOG_INFO "步骤3安装umockdev和umockdev-run软件包"
dnf install -y umockdev umockdev-run
CHECK_RESULT $? 0 0 "安装umockdev和umockdev-run失败"
fi
LOG_INFO "步骤4检查umockdev-run命令参数是否支持"
if ! umockdev-run --help | grep -q "SCRIPT"; then
LOG_ERROR "umockdev-run命令不支持SCRIPT参数"
exit 255
fi
LOG_INFO "步骤5创建测试脚本文件"
TEST_SCRIPT="/tmp/test_script.sh"
cat > "$TEST_SCRIPT" << "EOF"
echo "测试脚本执行成功"
exit 0
EOF
chmod +x "$TEST_SCRIPT"
LOG_INFO "步骤6使用umockdev-run加载测试脚本"
umockdev-run "$TEST_SCRIPT"
CHECK_RESULT $? 0 0 "umockdev-run加载脚本失败"
LOG_INFO "步骤7清理临时测试脚本"
rm -f "$TEST_SCRIPT"
if [ "$ALREADY_INSTALLED" = "false" ]; then
LOG_INFO "步骤8卸载测试安装的软件包"
dnf remove -y umockdev umockdev-run
CHECK_RESULT $? 0 0 "卸载umockdev和umockdev-run失败"
fi
LOG_INFO "测试完成:测试加载脚本文件到测试床"
}
main "$@"

View File

@@ -0,0 +1,155 @@
#!/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 : 测试为模拟Unix流套接字加载脚本文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色和日志函数
LOG_INFO() {
echo "[INFO] $*"
}
LOG_ERROR() {
echo "[ERROR] $*"
}
# 检查软件包是否在yum源中存在
check_package_in_repo() {
local package_name=$1
LOG_INFO "检查yum源中是否存在软件包: $package_name"
dnf list available "$package_name" &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在软件包: $package_name"
exit 255
fi
LOG_INFO "软件包 $package_name 在yum源中存在"
}
# 检查命令参数是否支持
check_command_param() {
local command=$1
local param=$2
LOG_INFO "检查命令 $command 是否支持参数: $param"
# 这里以umockdev-run为例检查是否支持--help参数
if [ "$param" = "--help" ]; then
$command --help &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "命令 $command 不支持参数: $param"
exit 255
fi
else
LOG_ERROR "未知参数: $param"
exit 255
fi
LOG_INFO "命令 $command 支持参数: $param"
}
# 安装软件包
install_package() {
local package_name=$1
LOG_INFO "安装软件包: $package_name"
dnf install -y "$package_name" &>/dev/null
CHECK_RESULT $? 0 0 "安装软件包 $package_name 失败"
LOG_INFO "软件包 $package_name 安装成功"
}
# 卸载软件包
uninstall_package() {
local package_name=$1
LOG_INFO "卸载软件包: $package_name"
dnf remove -y "$package_name" &>/dev/null
CHECK_RESULT $? 0 0 "卸载软件包 $package_name 失败"
LOG_INFO "软件包 $package_name 卸载成功"
}
# 检查软件包是否已安装
check_package_installed() {
local package_name=$1
LOG_INFO "检查软件包 $package_name 是否已安装"
rpm -q "$package_name" &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "软件包 $package_name 已安装"
return 0
else
LOG_INFO "软件包 $package_name 未安装"
return 1
fi
}
# 主测试函数
main() {
LOG_INFO "开始测试: 模拟Unix流套接字加载脚本文件"
# 定义软件包名称
PACKAGE_NAME="umockdev"
# 检查软件包是否在yum源中存在
check_package_in_repo "$PACKAGE_NAME"
# 检查软件包是否已安装
local need_cleanup=0
if check_package_installed "$PACKAGE_NAME"; then
LOG_INFO "软件包 $PACKAGE_NAME 已安装,测试结束后保持安装状态"
need_cleanup=0
else
LOG_INFO "软件包 $PACKAGE_NAME 未安装,测试前安装,测试后卸载"
need_cleanup=1
install_package "$PACKAGE_NAME"
fi
# 检查命令参数是否支持
check_command_param "umockdev-run" "--help"
# 测试umockdev-run命令
LOG_INFO "测试umockdev-run命令"
umockdev-run --help
CHECK_RESULT $? 0 0 "umockdev-run命令执行失败"
# 模拟Unix流套接字加载脚本文件
LOG_INFO "模拟Unix流套接字加载脚本文件"
# 创建临时脚本文件
TEMP_SCRIPT="/tmp/test_umockdev_script.sh"
cat > "$TEMP_SCRIPT" << "EOF"
echo "模拟Unix流套接字脚本执行成功"
EOF
chmod +x "$TEMP_SCRIPT"
# 使用umockdev-run执行脚本
LOG_INFO "使用umockdev-run执行脚本"
umockdev-run "$TEMP_SCRIPT"
CHECK_RESULT $? 0 0 "模拟Unix流套接字加载脚本文件失败"
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f "$TEMP_SCRIPT"
CHECK_RESULT $? 0 0 "清理临时文件失败"
# 如果测试前未安装,测试后卸载软件包
if [ $need_cleanup -eq 1 ]; then
uninstall_package "$PACKAGE_NAME"
fi
LOG_INFO "测试完成: 模拟Unix流套接字加载脚本文件"
}
# 执行主函数
main
}
main "$@"

View File

@@ -0,0 +1,126 @@
#!/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 : 测试为模拟Unix流套接字加载脚本文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
umockdev_package="umockdev"
umockdev_tool="umockdev-run"
test_file="test_unix_stream.umockdev"
test_socket="/tmp/test_socket"
LOG_INFO "开始测试模拟Unix流套接字加载脚本文件"
LOG_INFO "步骤1: 检查umockdev软件包是否已安装"
if ! dnf list installed "$umockdev_package" &>/dev/null; then
LOG_INFO "umockdev未安装将进行安装"
installed_during_test=1
else
LOG_INFO "umockdev已安装测试结束后将保持安装状态"
installed_during_test=0
fi
LOG_INFO "步骤2: 检查yum源中是否有umockdev软件包"
if ! dnf list available "$umockdev_package" &>/dev/null; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
if [[ $installed_during_test -eq 1 ]]; then
LOG_INFO "步骤3: 安装umockdev软件包"
dnf install -y "$umockdev_package"
CHECK_RESULT $? 0 0 "安装umockdev软件包失败"
fi
LOG_INFO "步骤4: 检查umockdev-run命令是否支持--script参数"
if ! $umockdev_tool --help 2>&1 | grep -q "\-\-script"; then
LOG_ERROR "umockdev-run命令不支持--script参数"
if [[ $installed_during_test -eq 1 ]]; then
dnf remove -y "$umockdev_package"
fi
exit 255
fi
LOG_INFO "步骤5: 创建模拟Unix流套接字的umockdev脚本文件"
cat > "$test_file" << "EOF"
(script
(allow unix-stream (connect (to "/tmp/test_socket")))
)
EOF
CHECK_RESULT $? 0 0 "创建umockdev脚本文件失败"
LOG_INFO "步骤6: 在后台启动一个简单的Unix域套接字服务器"
python3 -c "
import socket
import os
import time
server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
if os.path.exists("$test_socket"):
os.unlink("$test_socket")
server.bind("$test_socket")
server.listen(1)
def handle_client():
conn, addr = server.accept()
conn.send(b"Hello from server\\n")
conn.close()
import threading
thread = threading.Thread(target=handle_client)
thread.daemon = True
thread.start()
time.sleep(2)
" &
server_pid=$!
sleep 1
LOG_INFO "步骤7: 使用umockdev-run加载脚本并尝试连接Unix套接字"
output=$($umockdev_tool --script "$test_file" -- bash -c "timeout 2 python3 -c \"
import socket
client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
client.connect("$test_socket")
data = client.recv(1024)
print(data.decode(), end="")
client.close()
print("SUCCESS")
except Exception as e:
print("FAILURE:", e)
\" 2>&1")
echo "$output" | grep -q "SUCCESS"
CHECK_RESULT $? 0 0 "使用umockdev-run模拟连接Unix流套接字失败。输出$output"
LOG_INFO "步骤8: 清理临时文件"
rm -f "$test_file"
CHECK_RESULT $? 0 0 "删除umockdev脚本文件失败"
rm -f "$test_socket"
if ps -p $server_pid > /dev/null 2>&1; then
kill $server_pid 2>/dev/null
fi
if [[ $installed_during_test -eq 1 ]]; then
LOG_INFO "步骤9: 卸载测试期间安装的umockdev软件包"
dnf remove -y "$umockdev_package"
CHECK_RESULT $? 0 0 "卸载umockdev软件包失败"
else
LOG_INFO "步骤9: 测试前已安装umockdev保持安装状态无需卸载"
fi
LOG_INFO "测试完成模拟Unix流套接字加载脚本文件成功"
}
main "$@"

View File

@@ -0,0 +1,64 @@
#!/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 : 测试输出版本信息并退出
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装umockdev
LOG_INFO "检查umockdev是否已安装"
if dnf list installed | grep -q umockdev; then
LOG_INFO "umockdev已安装记录当前状态"
INSTALLED=true
else
LOG_INFO "umockdev未安装"
INSTALLED=false
fi
# 检查yum源中是否有umockdev软件包
LOG_INFO "检查yum源中是否有umockdev软件包"
if ! dnf list available umockdev 2>/dev/null | grep -q umockdev; then
LOG_ERROR "yum源中未找到umockdev软件包"
exit 255
fi
# 如果未安装则安装umockdev
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始安装umockdev软件包"
dnf install -y umockdev
CHECK_RESULT $? 0 0 "安装umockdev失败"
fi
# 测试输出版本信息并退出
LOG_INFO "测试umockdev-run --version命令"
umockdev-run --version
CHECK_RESULT $? 0 0 "umockdev-run --version命令执行失败"
# 如果之前未安装则在测试结束后卸载umockdev
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载umockdev软件包"
dnf remove -y umockdev
CHECK_RESULT $? 0 0 "卸载umockdev失败"
else
LOG_INFO "保持umockdev安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,69 @@
#!/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 : 测试以调试模式运行程序
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:测试以调试模式运行程序"
LOG_INFO "步骤1: 检查umockdev和umockdev-wrapper软件包是否在yum源中"
dnf list available umockdev umockdev-wrapper > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到umockdev或umockdev-wrapper软件包"
exit 255
fi
LOG_INFO "步骤2: 检查是否已安装umockdev和umockdev-wrapper"
if rpm -q umockdev > /dev/null 2>&1 && rpm -q umockdev-wrapper > /dev/null 2>&1; then
LOG_INFO "软件包已安装,测试结束后保持安装状态"
INSTALLED=1
else
LOG_INFO "软件包未安装,将安装软件包作为测试步骤"
INSTALLED=0
fi
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "步骤3: 安装umockdev和umockdev-wrapper软件包"
dnf install -y umockdev umockdev-wrapper
CHECK_RESULT $? 0 0 "安装umockdev和umockdev-wrapper失败"
fi
LOG_INFO "步骤4: 检查umockdev-wrapper命令是否支持--debug参数"
umockdev-wrapper --help 2>&1 | grep -q -- --debug
if [ $? -ne 0 ]; then
LOG_ERROR "umockdev-wrapper命令不支持--debug参数"
exit 255
fi
LOG_INFO "步骤5: 以调试模式运行umockdev-wrapper"
umockdev-wrapper --debug echo "测试调试模式"
CHECK_RESULT $? 0 0 "以调试模式运行umockdev-wrapper失败"
LOG_INFO "步骤6: 清理环境"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载测试期间安装的umockdev和umockdev-wrapper软件包"
dnf remove -y umockdev umockdev-wrapper
CHECK_RESULT $? 0 0 "卸载umockdev和umockdev-wrapper失败"
else
LOG_INFO "保持软件包安装状态,无需卸载"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,99 @@
#!/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 : 测试设置记录文件的保存路径
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 初始化变量
PACKAGE_NAME="umockdev"
WRAPPER_NAME="umockdev-wrapper"
LOG_INFO "开始测试设置记录文件的保存路径"
# 检查yum源中是否存在指定的软件包
LOG_INFO "检查yum源中是否存在${PACKAGE_NAME}${WRAPPER_NAME}软件包"
if ! dnf list available ${PACKAGE_NAME} ${WRAPPER_NAME} &>/dev/null; then
LOG_ERROR "yum源中不存在${PACKAGE_NAME}${WRAPPER_NAME}软件包"
exit 255
fi
# 检查软件包是否已经安装
LOG_INFO "检查${PACKAGE_NAME}${WRAPPER_NAME}是否已经安装"
if rpm -q ${PACKAGE_NAME} ${WRAPPER_NAME} &>/dev/null; then
INSTALLED="true"
LOG_INFO "${PACKAGE_NAME}${WRAPPER_NAME}已经安装,脚本结束后保持安装状态"
else
INSTALLED="false"
LOG_INFO "${PACKAGE_NAME}${WRAPPER_NAME}未安装,将在测试步骤中安装"
fi
# 如果未安装,则安装软件包
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "安装${PACKAGE_NAME}${WRAPPER_NAME}软件包"
dnf install -y ${PACKAGE_NAME} ${WRAPPER_NAME}
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}${WRAPPER_NAME}失败"
fi
# 测试设置记录文件的保存路径
LOG_INFO "测试设置记录文件的保存路径"
# 检查umockdev-wrapper命令是否支持--record参数
LOG_INFO "检查umockdev-wrapper命令是否支持--record参数"
if ! ${WRAPPER_NAME} --help 2>&1 | grep -q "\-\-record"; then
LOG_ERROR "umockdev-wrapper命令不支持--record参数"
exit 255
fi
# 创建临时记录文件路径
RECORD_FILE="/tmp/test_record.log"
LOG_INFO "创建临时记录文件:${RECORD_FILE}"
touch ${RECORD_FILE}
CHECK_RESULT $? 0 0 "创建临时记录文件失败"
# 执行umockdev-wrapper命令并设置记录文件路径
LOG_INFO "执行umockdev-wrapper命令并设置记录文件路径"
${WRAPPER_NAME} --record=${RECORD_FILE} ls
CHECK_RESULT $? 0 0 "执行umockdev-wrapper命令失败"
# 检查记录文件是否生成并包含内容
LOG_INFO "检查记录文件是否生成并包含内容"
if [ -s ${RECORD_FILE} ]; then
LOG_INFO "记录文件生成成功并包含内容"
else
LOG_ERROR "记录文件生成失败或为空"
CHECK_RESULT 1 0 0 "记录文件生成失败或为空"
fi
# 清理临时记录文件
LOG_INFO "清理临时记录文件"
rm -f ${RECORD_FILE}
CHECK_RESULT $? 0 0 "清理临时记录文件失败"
# 如果脚本开始时未安装软件包,则在测试结束后卸载
if [ "${INSTALLED}" = "false" ]; then
LOG_INFO "卸载${PACKAGE_NAME}${WRAPPER_NAME}软件包"
dnf remove -y ${PACKAGE_NAME} ${WRAPPER_NAME}
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}${WRAPPER_NAME}失败"
LOG_INFO "已卸载${PACKAGE_NAME}${WRAPPER_NAME}软件包,环境恢复到之前状态"
else
LOG_INFO "保持${PACKAGE_NAME}${WRAPPER_NAME}软件包安装状态"
fi
LOG_INFO "测试设置记录文件的保存路径完成"
}
main "$@"

View File

@@ -0,0 +1,186 @@
#!/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 : 测试记录来自被测试程序的请求
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 全局变量定义
PACKAGE_NAME="umockdev umockdev-wrapper"
LOG_FILE="/tmp/test_umockdev_umockdev-wrapper_r.log"
# 清理函数
cleanup() {
LOG_INFO "开始清理环境"
# 如果测试前未安装,则卸载安装的软件包
if [ "$originally_installed" -eq 0 ]; then
LOG_INFO "卸载测试安装的软件包"
dnf remove -y $PACKAGE_NAME > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载软件包失败"
fi
# 删除测试创建的日志文件
rm -f $LOG_FILE
LOG_INFO "环境清理完成"
}
# 错误处理
trap cleanup EXIT
# 检查软件包是否在yum源中
check_package_availability() {
LOG_INFO "检查yum源中是否存在软件包: $PACKAGE_NAME"
for pkg in $PACKAGE_NAME; do
dnf list available $pkg > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $pkg 不在yum源中"
exit 255
fi
done
LOG_INFO "所有软件包在yum源中都可用"
}
# 检查软件包是否已安装
check_installed() {
LOG_INFO "检查软件包是否已安装"
originally_installed=1
for pkg in $PACKAGE_NAME; do
rpm -q $pkg > /dev/null 2>&1
if [ $? -ne 0 ]; then
originally_installed=0
break
fi
done
if [ $originally_installed -eq 1 ]; then
LOG_INFO "软件包已经安装,测试后将保持安装状态"
else
LOG_INFO "软件包未安装,测试后将卸载"
fi
}
# 安装软件包
install_packages() {
LOG_INFO "开始安装软件包"
dnf install -y $PACKAGE_NAME > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装软件包失败"
LOG_INFO "软件包安装成功"
}
# 检查命令参数
check_command_parameters() {
LOG_INFO "检查umockdev命令参数"
# 检查umockdev --help是否正常工作
umockdev --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "umockdev --help 执行失败"
# 检查不支持的参数
LOG_INFO "检查不支持的参数"
umockdev --invalid-parameter > /dev/null 2>&1
if [ $? -ne 255 ] && [ $? -ne 1 ]; then
LOG_ERROR "不支持的参数检查失败"
exit 255
fi
LOG_INFO "参数检查通过"
}
# 测试记录请求功能
test_record_requests() {
LOG_INFO "开始测试记录来自被测试程序的请求"
# 创建测试设备
LOG_INFO "创建虚拟测试设备"
cat > /tmp/test_device.umockdev << EOF
P: /devices/test
N: test0
E: ID_MODEL=TestDevice
E: ID_VENDOR=TestVendor
EOF
# 启动umockdev-record记录请求
LOG_INFO "启动umockdev-record记录请求"
timeout 5 umockdev-record --device /tmp/test_device.umockdev --output /tmp/recorded.umockdev &
record_pid=$!
# 等待记录程序启动
sleep 2
# 使用umockdev-run运行测试程序
LOG_INFO "运行测试程序生成请求"
timeout 3 umockdev-run --device /tmp/test_device.umockdev lsusb > /dev/null 2>&1
# 等待记录完成
wait $record_pid 2>/dev/null
record_status=$?
# 检查记录文件是否创建
if [ -f /tmp/recorded.umockdev ]; then
LOG_INFO "请求记录文件已创建"
# 检查记录文件内容
if grep -q "TestDevice\|TestVendor" /tmp/recorded.umockdev 2>/dev/null; then
LOG_INFO "成功记录到设备信息"
CHECK_RESULT 0 0 0 "请求记录测试成功"
else
LOG_ERROR "记录文件内容不正确"
CHECK_RESULT 1 0 0 "请求记录测试失败"
fi
else
LOG_ERROR "请求记录文件未创建"
CHECK_RESULT 1 0 0 "请求记录测试失败"
fi
# 清理测试文件
rm -f /tmp/test_device.umockdev /tmp/recorded.umockdev
}
# 主测试流程
main() {
LOG_INFO "开始测试: 测试记录来自被测试程序的请求"
# 步骤1: 检查软件包是否在yum源中
check_package_availability
# 步骤2: 检查当前安装状态
check_installed
# 步骤3: 如果未安装则安装
if [ "$originally_installed" -eq 0 ]; then
install_packages
fi
# 步骤4: 检查命令参数
check_command_parameters
# 步骤5: 测试记录请求功能
test_record_requests
# 步骤6: 测试远程执行(如果配置了远程节点)
if [ -n "$NODE2_IPV4" ] && [ -n "$NODE2_PASSWORD" ] && [ -n "$NODE2_USER" ]; then
LOG_INFO "在第二个服务器上测试基本功能"
SSH_CMD "which umockdev" $NODE2_IPV4 $NODE2_PASSWORD $NODE2_USER
CHECK_RESULT $? 0 0 "远程服务器上umockdev命令不存在"
fi
LOG_INFO "测试完成"
}
# 执行主测试
main
}
main "$@"

View File

@@ -0,0 +1,76 @@
#!/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 : 测试以详细模式运行程序
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试:测试以详细模式运行程序"
# 检查软件包是否在yum源中
LOG_INFO "检查软件包是否在yum源中"
if ! dnf list available umockdev umockdev-wrapper 2>/dev/null | grep -q "umockdev"; then
LOG_ERROR "软件包umockdev不在yum源中"
exit 255
fi
if ! dnf list available umockdev umockdev-wrapper 2>/dev/null | grep -q "umockdev-wrapper"; then
LOG_ERROR "软件包umockdev-wrapper不在yum源中"
exit 255
fi
# 检查是否已安装
LOG_INFO "检查是否已安装umockdev和umockdev-wrapper"
if rpm -q umockdev >/dev/null 2>&1 && rpm -q umockdev-wrapper >/dev/null 2>&1; then
LOG_INFO "软件包已安装,标记为已安装状态"
INSTALLED=true
else
LOG_INFO "软件包未安装,标记为未安装状态"
INSTALLED=false
fi
# 如果未安装,则安装
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装umockdev和umockdev-wrapper"
dnf install -y umockdev umockdev-wrapper
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
# 测试以详细模式运行程序
LOG_INFO "测试以详细模式运行程序"
umockdev-wrapper --help 2>&1 | grep -q -- "--verbose"
CHECK_RESULT $? 0 0 "参数--verbose不存在或不支持"
umockdev-wrapper --verbose
CHECK_RESULT $? 0 0 "以详细模式运行程序失败"
# 清理环境
LOG_INFO "清理环境"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载umockdev和umockdev-wrapper"
dnf remove -y umockdev umockdev-wrapper
CHECK_RESULT $? 0 0 "卸载软件包失败"
else
LOG_INFO "保持软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -0,0 +1,91 @@
#!/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 : 测试显示 umockdev-wrapper 的版本信息
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色输出(可选,但符合日志规范)
LOG_INFO() {
echo "[INFO] $*"
}
LOG_ERROR() {
echo "[ERROR] $*"
}
# 测试包名
PACKAGE_NAME="umockdev-wrapper"
# 步骤1检查yum源中是否存在该软件包
LOG_INFO "1. 检查yum源中是否存在$PACKAGE_NAME软件包"
dnf list available "$PACKAGE_NAME" &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "$PACKAGE_NAME软件包在yum源中不存在"
exit 255
fi
# 步骤2检查软件包是否已安装
LOG_INFO "2. 检查$PACKAGE_NAME是否已安装"
INSTALLED=0
if rpm -q "$PACKAGE_NAME" &>/dev/null; then
LOG_INFO "$PACKAGE_NAME已安装"
INSTALLED=1
else
LOG_INFO "$PACKAGE_NAME未安装,将在测试步骤中安装"
fi
# 步骤3如果未安装则安装软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "3. 安装$PACKAGE_NAME软件包"
dnf install -y "$PACKAGE_NAME" &>/dev/null
CHECK_RESULT $? 0 0 "安装$PACKAGE_NAME失败"
fi
# 步骤4检查umockdev-wrapper命令是否存在
LOG_INFO "4. 检查umockdev-wrapper命令是否存在"
command -v umockdev-wrapper &>/dev/null
CHECK_RESULT $? 0 0 "umockdev-wrapper命令不存在"
# 步骤5检查是否支持--version参数
LOG_INFO "5. 检查umockdev-wrapper是否支持--version参数"
umockdev-wrapper --help 2>&1 | grep -q "\-\-version"
if [ $? -ne 0 ]; then
LOG_ERROR "umockdev-wrapper不支持--version参数"
exit 255
fi
# 步骤6执行命令并检查结果
LOG_INFO "6. 执行umockdev-wrapper --version命令"
umockdev-wrapper --version
CHECK_RESULT $? 0 0 "执行umockdev-wrapper --version失败"
# 步骤7环境恢复
LOG_INFO "7. 恢复测试环境"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载测试安装的$PACKAGE_NAME软件包"
dnf remove -y "$PACKAGE_NAME" &>/dev/null
CHECK_RESULT $? 0 0 "卸载$PACKAGE_NAME失败"
else
LOG_INFO "保持原有安装状态,不卸载$PACKAGE_NAME"
fi
LOG_INFO "测试完成"
}
main "$@"