This commit is contained in:
2026-04-15 15:24:47 +08:00
63 changed files with 0 additions and 5791 deletions

View File

@@ -10,50 +10,6 @@
"name": "test_nss-softokn-devel_nss-softokn-config_cflags", "name": "test_nss-softokn-devel_nss-softokn-config_cflags",
"desc": "测试 nss-softokn-config 的 --cflags 参数" "desc": "测试 nss-softokn-config 的 --cflags 参数"
}, },
{
"name": "test_nss-softokn-devel_nss-softokn-config_prefix",
"desc": "测试nss-softokn-config命令的--prefix选项"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_exec_prefix",
"desc": "测试nss-softokn-config命令的--exec-prefix选项"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_includedir",
"desc": "测试nss-softokn-config命令的--includedir选项"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_libdir",
"desc": "测试nss-softokn-config命令的--libdir选项"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_libs",
"desc": "测试nss-softokn-config命令的--libs选项"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_softokn3",
"desc": "测试nss-softokn-config命令指定softokn3动态库"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_freebl3",
"desc": "测试nss-softokn-config命令指定freebl3动态库"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_nssdbm3",
"desc": "测试nss-softokn-config命令指定nssdbm3动态库"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_cflags_softokn3",
"desc": "测试nss-softokn-config命令组合使用--cflags选项和softokn3库"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_libs_softokn3",
"desc": "测试nss-softokn-config命令组合使用--libs选项和softokn3库"
},
{
"name": "test_nss-softokn-devel_nss-softokn-config_prefix_softokn3",
"desc": "测试nss-softokn-config命令组合使用--prefix选项和softokn3库"
},
{ {
"name": "test_nss-softokn-devel_function_install", "name": "test_nss-softokn-devel_function_install",
"desc": "测试nss-softokn-devel软件包能否被正确安装" "desc": "测试nss-softokn-devel软件包能否被正确安装"
@@ -65,22 +21,6 @@
{ {
"name": "test_nss-softokn-devel_function_package_info", "name": "test_nss-softokn-devel_function_package_info",
"desc": "测试查询nss-softokn-devel软件包信息" "desc": "测试查询nss-softokn-devel软件包信息"
},
{
"name": "test_nss-softokn-devel_function_file_existence",
"desc": "测试nss-softokn-devel安装后关键文件是否存在"
},
{
"name": "test_nss-softokn-devel_function_include_headers",
"desc": "测试nss-softokn-devel提供的头文件可用性"
},
{
"name": "test_nss-softokn-devel_function_linking",
"desc": "测试使用nss-softokn-config进行编译链接"
},
{
"name": "test_nss-softokn-devel_function_basic_compile",
"desc": "测试基础编译功能是否正常"
} }
] ]
} }

View File

@@ -21,22 +21,6 @@
{ {
"name": "test_pam_ssh_agent_auth_function_install", "name": "test_pam_ssh_agent_auth_function_install",
"desc": "测试软件包安装功能" "desc": "测试软件包安装功能"
},
{
"name": "test_pam_ssh_agent_auth_function_basic_usage",
"desc": "测试基本认证流程"
},
{
"name": "test_pam_ssh_agent_auth_function_config",
"desc": "测试PAM配置文件使用"
},
{
"name": "test_pam_ssh_agent_auth_function_agent_env",
"desc": "测试SSH_AUTH_SOCK环境变量"
},
{
"name": "test_pam_ssh_agent_auth_function_sudo_integration",
"desc": "测试与sudo的集成认证"
} }
] ]
} }

View File

@@ -42,133 +42,9 @@
"name": "test_perl-DBI_function_check_installed", "name": "test_perl-DBI_function_check_installed",
"desc": "检查 perl-DBI 模块是否已正确安装" "desc": "检查 perl-DBI 模块是否已正确安装"
}, },
{
"name": "test_perl-DBI_dbilogstrip__upper_v",
"desc": "测试 dbilogstrip 命令的详细模式"
},
{ {
"name": "test_perl-DBI_dbilogstrip__h", "name": "test_perl-DBI_dbilogstrip__h",
"desc": "测试 dbilogstrip 命令的帮助信息" "desc": "测试 dbilogstrip 命令的帮助信息"
},
{
"name": "test_perl-DBI_dbilogstrip__upper_d",
"desc": "测试 dbilogstrip 命令的调试模式"
},
{
"name": "test_perl-DBI_dbilogstrip__upper_o",
"desc": "测试 dbilogstrip 命令指定输出文件"
},
{
"name": "test_perl-DBI_dbilogstrip__upper_i",
"desc": "测试 dbilogstrip 命令指定输入文件"
},
{
"name": "test_perl-DBI_dbiprof_number",
"desc": "使用-number参数指定显示前N个结果"
},
{
"name": "test_perl-DBI_dbiprof_sort",
"desc": "使用-sort参数按指定字段排序"
},
{
"name": "test_perl-DBI_dbiprof_reverse",
"desc": "使用-reverse参数反转排序顺序"
},
{
"name": "test_perl-DBI_dbiprof_match",
"desc": "使用-match参数进行键值匹配过滤"
},
{
"name": "test_perl-DBI_dbiprof_exclude",
"desc": "使用-exclude参数进行键值排除过滤"
},
{
"name": "test_perl-DBI_dbiprof_case_sensitive",
"desc": "使用-case_sensitive参数使过滤匹配区分大小写"
},
{
"name": "test_perl-DBI_dbiprof_delete",
"desc": "使用-delete参数读取前重命名文件并在读取后删除"
},
{
"name": "test_perl-DBI_dbiprof_version",
"desc": "使用-version参数打印版本号并退出"
},
{
"name": "test_perl-DBI_dbiprof_help",
"desc": "使用-help参数打印帮助信息"
},
{
"name": "test_perl-DBI_dbiprof_default_file",
"desc": "不指定文件参数使用默认的dbi.prof文件"
},
{
"name": "test_perl-DBI_dbiprof_custom_file",
"desc": "指定一个或多个自定义文件作为输入"
},
{
"name": "test_perl-DBI_dbiprof_number_sort",
"desc": "组合使用-number和-sort参数"
},
{
"name": "test_perl-DBI_dbiprof_number_reverse",
"desc": "组合使用-number和-reverse参数"
},
{
"name": "test_perl-DBI_dbiprof_sort_reverse",
"desc": "组合使用-sort和-reverse参数"
},
{
"name": "test_perl-DBI_dbiprof_match_exclude",
"desc": "组合使用-match和-exclude参数进行过滤"
},
{
"name": "test_perl-DBI_dbiprof_match_case_sensitive",
"desc": "组合使用-match和-case_sensitive参数"
},
{
"name": "test_perl-DBI_dbiprof_exclude_case_sensitive",
"desc": "组合使用-exclude和-case_sensitive参数"
},
{
"name": "test_perl-DBI_dbiprof_match_exclude_case_sensitive",
"desc": "组合使用-match、-exclude和-case_sensitive参数"
},
{
"name": "test_perl-DBI_dbiprof_number_sort_reverse",
"desc": "组合使用-number、-sort和-reverse参数"
},
{
"name": "test_perl-DBI_dbiprof_file_number_sort",
"desc": "指定文件并组合使用-number和-sort参数"
},
{
"name": "test_perl-DBI_function_core_connect",
"desc": "测试 DBI->connect 数据库连接"
},
{
"name": "test_perl-DBI_function_execute_query",
"desc": "测试执行简单 SQL 查询语句"
},
{
"name": "test_perl-DBI_function_prepare_execute",
"desc": "测试 prepare 和 execute 方法"
},
{
"name": "test_perl-DBI_function_fetch_results",
"desc": "测试 fetchrow_array 等方法获取结果"
},
{
"name": "test_perl-DBI_function_handle_errors",
"desc": "测试 DBI 错误处理机制"
},
{
"name": "test_perl-DBI_function_transaction",
"desc": "测试 begin_work 和 commit 事务"
},
{
"name": "test_perl-DBI_function_disconnect",
"desc": "测试数据库连接断开"
} }
] ]
} }

View File

@@ -1,10 +0,0 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/python-shellingham/python-shellingham-help",
"machine num": 1,
"cases": [
{
"name": "test_python-shellingham-help_function_detect",
"desc": "Test shell detection functionality"
}
]
}

View File

@@ -22,14 +22,6 @@
"name": "test_smartmontools-help_function_basic_help", "name": "test_smartmontools-help_function_basic_help",
"desc": "Test displaying help information for smartmontools-help" "desc": "Test displaying help information for smartmontools-help"
}, },
{
"name": "test_smartmontools-help_function_man_page",
"desc": "Test accessing the manual page for smartmontools-help"
},
{
"name": "test_smartmontools-help_function_version",
"desc": "Test checking the version of smartmontools-help"
},
{ {
"name": "test_smartmontools-help_function_list_dev", "name": "test_smartmontools-help_function_list_dev",
"desc": "Test listing available storage devices" "desc": "Test listing available storage devices"
@@ -41,18 +33,6 @@
{ {
"name": "test_smartmontools-help_function_attr", "name": "test_smartmontools-help_function_attr",
"desc": "Test reading drive SMART attributes" "desc": "Test reading drive SMART attributes"
},
{
"name": "test_smartmontools-help_function_error_log",
"desc": "Test reading drive error logs"
},
{
"name": "test_smartmontools-help_function_self_test",
"desc": "Test initiating a drive self-test"
},
{
"name": "test_smartmontools-help_function_config",
"desc": "Test saving or loading drive config"
} }
] ]
} }

View File

@@ -1,10 +0,0 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-d/texlive-chess-doc",
"machine num": 1,
"cases": [
{
"name": "test_texlive-chess-doc_function_install",
"desc": "Test package installation"
}
]
}

View File

@@ -13,14 +13,6 @@
{ {
"name": "test_texlive-colorwav-doc_function_doc_access", "name": "test_texlive-colorwav-doc_function_doc_access",
"desc": "Test documentation accessibility" "desc": "Test documentation accessibility"
},
{
"name": "test_texlive-colorwav-doc_function_doc_content",
"desc": "Test documentation content validity"
},
{
"name": "test_texlive-colorwav-doc_function_version",
"desc": "Test package version info"
} }
] ]
} }

View File

@@ -1,10 +0,0 @@
{
"path": "$OET_PATH/testcases/function_test/pkg_test/texlive-split-q/texlive-outliner",
"machine num": 1,
"cases": [
{
"name": "test_texlive-outliner_function_basic",
"desc": "Test basic functionality of texlive-outliner"
}
]
}

View File

@@ -1,88 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试基础编译功能是否正常
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 初始化变量
PACKAGE_NAME="nss-softokn-devel"
LOG_INFO "测试开始:验证基础编译功能"
# 步骤1检查软件包是否在yum源中
LOG_INFO "检查软件包是否在yum源中"
dnf list available $PACKAGE_NAME &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $PACKAGE_NAME 不在yum源中"
exit 255
fi
# 步骤2检查是否已安装软件包
LOG_INFO "检查是否已安装软件包"
INSTALLED=0
if rpm -q $PACKAGE_NAME &>/dev/null; then
LOG_INFO "软件包已安装,脚本结束后保持安装状态"
INSTALLED=1
else
LOG_INFO "软件包未安装,将进行安装测试"
fi
# 步骤3安装软件包如果未安装
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装软件包"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
# 步骤4验证编译功能
LOG_INFO "验证基础编译功能"
# 创建测试C程序
cat > test_compile.c << "EOF"
#include <nss.h>
#include <ssl.h>
int main() {
return 0;
}
EOF
# 编译测试程序
gcc -o test_compile test_compile.c -lssl3 -lsmime3 -lnss3 -lnssutil3
CHECK_RESULT $? 0 0 "编译测试程序失败"
# 步骤5运行测试程序
LOG_INFO "运行编译后的测试程序"
./test_compile
CHECK_RESULT $? 0 0 "运行测试程序失败"
# 步骤6清理测试文件
LOG_INFO "清理测试文件"
rm -f test_compile.c test_compile
# 步骤7恢复环境如果脚本开始时未安装则卸载
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载软件包"
dnf remove -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "卸载软件包失败"
else
LOG_INFO "保持软件包安装状态"
fi
LOG_INFO "测试完成:基础编译功能正常"
}
main "$@"

View File

@@ -1,93 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试nss-softokn-devel安装后关键文件是否存在
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 设置环境变量
SCRIPT_NAME="test_nss-softokn-devel_function_file_existence"
LOG_INFO "开始执行测试脚本:${SCRIPT_NAME}"
LOG_INFO "测试目标验证nss-softokn-devel安装后关键文件是否存在"
# 定义软件包名称
PACKAGE_NAME="nss-softokn-devel"
# 步骤1检查yum源中是否存在指定软件包
LOG_INFO "步骤1检查yum源中是否存在软件包 ${PACKAGE_NAME}"
dnf list available ${PACKAGE_NAME} > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 ${PACKAGE_NAME} 在yum源中不存在"
exit 255
fi
LOG_INFO "软件包 ${PACKAGE_NAME} 在yum源中存在"
# 步骤2检查当前环境是否已安装指定软件包
LOG_INFO "步骤2检查当前环境是否已安装软件包 ${PACKAGE_NAME}"
rpm -q ${PACKAGE_NAME} > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "软件包 ${PACKAGE_NAME} 已安装,标记为无需清理"
NEED_CLEANUP=0
else
LOG_INFO "软件包 ${PACKAGE_NAME} 未安装,标记为需要清理"
NEED_CLEANUP=1
fi
# 步骤3如果未安装则安装软件包
if [ ${NEED_CLEANUP} -eq 1 ]; 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
# 步骤4检查关键文件是否存在
LOG_INFO "步骤4检查关键文件是否存在"
# 定义需要检查的关键文件列表
KEY_FILES=(
"/usr/include/nss/softokn.h"
"/usr/include/nss/softoknt.h"
"/usr/lib64/libsoftokn3.so"
"/usr/lib64/pkgconfig/nss-softokn-devel.pc"
)
for file in "${KEY_FILES[@]}"; do
if [ -f "${file}" ]; then
LOG_INFO "文件 ${file} 存在"
else
LOG_ERROR "文件 ${file} 不存在"
exit 1
fi
done
LOG_INFO "所有关键文件均存在"
# 步骤5清理环境
LOG_INFO "步骤5清理环境"
if [ ${NEED_CLEANUP} -eq 1 ]; then
LOG_INFO "卸载软件包 ${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载软件包 ${PACKAGE_NAME} 失败"
LOG_INFO "软件包 ${PACKAGE_NAME} 卸载成功"
else
LOG_INFO "软件包 ${PACKAGE_NAME} 已安装,保持原状,无需卸载"
fi
LOG_INFO "测试脚本执行完成:${SCRIPT_NAME}"
}
main "$@"

View File

@@ -1,99 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试nss-softokn-devel提供的头文件可用性
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试环境检查
LOG_INFO "检查测试环境"
rpm -qa | grep -q nss-softokn-devel
if [ $? -eq 0 ]; then
LOG_INFO "nss-softokn-devel已安装脚本结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "nss-softokn-devel未安装将在测试结束后卸载"
INSTALLED=false
fi
# 检查软件包是否在yum源中
LOG_INFO "检查yum源中是否存在nss-softokn-devel软件包"
dnf list available nss-softokn-devel 2>/dev/null | grep -q nss-softokn-devel
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到nss-softokn-devel软件包"
exit 255
fi
# 如果未安装则安装软件包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "安装nss-softokn-devel软件包"
dnf install -y nss-softokn-devel
CHECK_RESULT $? 0 0 "安装nss-softokn-devel失败"
fi
# 测试头文件可用性
LOG_INFO "测试nss-softokn-devel提供的头文件可用性"
LOG_INFO "检查头文件路径"
HEADER_PATH=$(rpm -ql nss-softokn-devel | grep "\.h$" | head -1)
if [ -z "$HEADER_PATH" ]; then
LOG_ERROR "未找到nss-softokn-devel的头文件"
exit 1
fi
LOG_INFO "测试头文件包含"
TEST_SOURCE="/tmp/test_nss_headers.c"
TEST_BINARY="/tmp/test_nss_headers"
# 创建测试C程序
cat > "$TEST_SOURCE" << "EOF"
#include <nss.h>
#include <pk11pub.h>
#include <softoken.h>
int main() {
return 0;
}
EOF
CHECK_RESULT $? 0 0 "创建测试源文件失败"
LOG_INFO "编译测试程序"
gcc -o "$TEST_BINARY" "$TEST_SOURCE" -I/usr/include/nss3 -I/usr/include/nspr4 -lnss3 -lnspr4 2>/dev/null
CHECK_RESULT $? 0 0 "编译测试程序失败,头文件不可用"
LOG_INFO "运行测试程序"
"$TEST_BINARY"
CHECK_RESULT $? 0 0 "测试程序运行失败"
LOG_INFO "清理测试文件"
rm -f "$TEST_SOURCE" "$TEST_BINARY"
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 环境恢复
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载nss-softokn-devel软件包"
dnf remove -y nss-softokn-devel
CHECK_RESULT $? 0 0 "卸载nss-softokn-devel失败"
else
LOG_INFO "保持nss-softokn-devel安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,79 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试使用nss-softokn-config进行编译链接
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试测试使用nss-softokn-config进行编译链接"
# 检查yum源中是否存在nss-softokn-devel软件包
LOG_INFO "检查yum源中是否存在nss-softokn-devel软件包"
if ! dnf list available nss-softokn-devel &>/dev/null; then
LOG_ERROR "yum源中未找到nss-softokn-devel软件包"
exit 255
fi
# 判断环境是否已经安装nss-softokn-devel
LOG_INFO "检查当前环境是否已安装nss-softokn-devel"
if rpm -q nss-softokn-devel &>/dev/null; then
LOG_INFO "环境已安装nss-softokn-devel脚本结束后保持安装状态"
INSTALLED_BEFORE=1
else
LOG_INFO "环境未安装nss-softokn-devel将进行安装"
INSTALLED_BEFORE=0
fi
# 如果未安装,则安装软件包作为测试步骤
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "安装nss-softokn-devel软件包"
dnf install -y nss-softokn-devel
CHECK_RESULT $? 0 0 "安装nss-softokn-devel失败"
fi
# 检查nss-softokn-config命令是否存在
LOG_INFO "检查nss-softokn-config命令是否存在"
if ! command -v nss-softokn-config &>/dev/null; then
LOG_ERROR "nss-softokn-config命令不存在或不支持"
exit 255
fi
# 测试使用nss-softokn-config进行编译链接
LOG_INFO "测试使用nss-softokn-config获取编译参数"
CFLAGS=$(nss-softokn-config --cflags)
CHECK_RESULT $? 0 0 "执行nss-softokn-config --cflags失败"
LOG_INFO "编译参数为:$CFLAGS"
LOG_INFO "测试使用nss-softokn-config获取链接参数"
LDFLAGS=$(nss-softokn-config --libs)
CHECK_RESULT $? 0 0 "执行nss-softokn-config --libs失败"
LOG_INFO "链接参数为:$LDFLAGS"
# 清理环境,恢复到之前的状态
if [ $INSTALLED_BEFORE -eq 0 ]; then
LOG_INFO "卸载nss-softokn-devel软件包"
dnf remove -y nss-softokn-devel
CHECK_RESULT $? 0 0 "卸载nss-softokn-devel失败"
else
LOG_INFO "环境已安装nss-softokn-devel保持安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,105 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试nss-softokn-config命令指定freebl3动态库
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装所需软件包
LOG_INFO "检查是否已安装nss-softokn-devel软件包"
if rpm -q nss-softokn-devel &>/dev/null; then
LOG_INFO "nss-softokn-devel已安装"
INSTALLED_FLAG=1
else
LOG_INFO "nss-softokn-devel未安装"
INSTALLED_FLAG=0
fi
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否有nss-softokn-devel软件包"
if ! dnf list available nss-softokn-devel &>/dev/null; then
LOG_ERROR "yum源中未找到nss-softokn-devel软件包"
exit 255
fi
# 如果未安装则安装软件包
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "开始安装nss-softokn-devel软件包"
dnf install -y nss-softokn-devel
CHECK_RESULT $? 0 0 "安装nss-softokn-devel失败"
LOG_INFO "nss-softokn-devel安装成功"
fi
# 测试nss-softokn-config命令指定freebl3动态库
LOG_INFO "测试nss-softokn-config命令指定freebl3动态库"
# 检查nss-softokn-config命令是否存在
LOG_INFO "检查nss-softokn-config命令是否存在"
if ! command -v nss-softokn-config &>/dev/null; then
LOG_ERROR "nss-softokn-config命令不存在"
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "清理环境卸载nss-softokn-devel软件包"
dnf remove -y nss-softokn-devel
fi
exit 255
fi
# 检查是否支持--freebl3参数
LOG_INFO "检查nss-softokn-config是否支持--freebl3参数"
if ! nss-softokn-config --help 2>/dev/null | grep -q "\-\-freebl3"; then
LOG_ERROR "nss-softokn-config不支持--freebl3参数"
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "清理环境卸载nss-softokn-devel软件包"
dnf remove -y nss-softokn-devel
fi
exit 255
fi
# 执行nss-softokn-config --freebl3命令
LOG_INFO "执行nss-softokn-config --freebl3命令"
nss-softokn-config --freebl3
CHECK_RESULT $? 0 0 "执行nss-softokn-config --freebl3命令失败"
# 验证输出结果包含freebl3库信息
LOG_INFO "验证输出结果包含freebl3库信息"
output=$(nss-softokn-config --freebl3 2>&1)
if echo "$output" | grep -q "freebl3"; then
LOG_INFO "nss-softokn-config --freebl3输出包含freebl3库信息"
else
LOG_ERROR "nss-softokn-config --freebl3输出不包含freebl3库信息"
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "清理环境卸载nss-softokn-devel软件包"
dnf remove -y nss-softokn-devel
fi
exit 1
fi
# 清理环境:如果脚本开始时未安装,则卸载软件包
if [ $INSTALLED_FLAG -eq 0 ]; then
LOG_INFO "清理环境卸载nss-softokn-devel软件包"
dnf remove -y nss-softokn-devel
CHECK_RESULT $? 0 0 "卸载nss-softokn-devel失败"
LOG_INFO "环境已恢复"
else
LOG_INFO "环境保持原安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,51 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试nss-softokn-config命令的--libdir选项
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试nss-softokn-config命令的--libdir选项"
LOG_INFO "步骤1检查当前环境是否已安装nss-softokn-devel和nss-softokn软件包"
rpm -q nss-softokn-devel nss-softokn > /dev/null 2>&1
INSTALLED=$?
LOG_INFO "步骤2检查yum源中是否存在nss-softokn-devel和nss-softokn软件包"
dnf list available nss-softokn-devel nss-softokn > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中未找到nss-softokn-devel或nss-softokn软件包"
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "步骤3安装nss-softokn-devel和nss-softokn软件包"
dnf install -y nss-softokn-devel nss-softokn
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
LOG_INFO "步骤4测试nss-softokn-config命令的--libdir选项"
nss-softokn-config --libdir
CHECK_RESULT $? 0 255 "nss-softokn-config命令不支持--libdir选项"
if [ $INSTALLED -ne 0 ]; then
LOG_INFO "步骤5卸载测试安装的软件包"
dnf remove -y nss-softokn-devel nss-softokn
CHECK_RESULT $? 0 0 "卸载软件包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,73 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试nss-softokn-config命令的--libs选项
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义软件包名称
PACKAGE1="nss-softokn-devel"
PACKAGE2="nss-softokn-config"
PACKAGE3="libs"
# 步骤1: 检查yum源中是否存在指定软件包
LOG_INFO "检查yum源中是否存在软件包 $PACKAGE1$PACKAGE2"
if ! dnf list available "$PACKAGE1" "$PACKAGE2" &>/dev/null; then
LOG_ERROR "yum源中缺少软件包 $PACKAGE1$PACKAGE2"
exit 255
fi
# 步骤2: 检查系统是否已安装指定软件包
LOG_INFO "检查系统是否已安装软件包 $PACKAGE1$PACKAGE2"
if rpm -q "$PACKAGE1" "$PACKAGE2" &>/dev/null; then
LOG_INFO "软件包已安装,脚本结束后将保持安装状态"
INSTALLED=1
else
LOG_INFO "软件包未安装,将在测试过程中安装并在结束后卸载"
INSTALLED=0
fi
# 步骤3: 如果未安装,则安装软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装软件包 $PACKAGE1$PACKAGE2"
dnf install -y "$PACKAGE1" "$PACKAGE2"
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
# 步骤4: 测试nss-softokn-config命令的--libs选项
LOG_INFO "测试nss-softokn-config命令的--libs选项"
if ! nss-softokn-config --libs &>/dev/null; then
LOG_ERROR "nss-softokn-config命令不支持--libs选项"
exit 255
fi
# 执行命令并检查结果
nss-softokn-config --libs
CHECK_RESULT $? 0 0 "执行nss-softokn-config --libs命令失败"
# 步骤5: 如果需要清理环境,则卸载软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载软件包 $PACKAGE1$PACKAGE2"
dnf remove -y "$PACKAGE1" "$PACKAGE2"
CHECK_RESULT $? 0 0 "卸载软件包失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,70 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试nss-softokn-config命令指定nssdbm3动态库
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试nss-softokn-config命令指定nssdbm3动态库"
LOG_INFO "检查当前环境是否已安装nss-softokn-devel和nss-softokn软件包"
if dnf list installed nss-softokn-devel nss-softokn > /dev/null 2>&1; then
LOG_INFO "软件包已安装,测试结束后保持安装状态"
already_installed=1
else
LOG_INFO "软件包未安装,将在测试前安装"
already_installed=0
fi
LOG_INFO "检查yum源中是否存在nss-softokn-devel和nss-softokn软件包"
if ! dnf list available nss-softokn-devel nss-softokn > /dev/null 2>&1; then
LOG_ERROR "yum源中不存在nss-softokn-devel或nss-softokn软件包"
exit 255
fi
if [ ${already_installed} -eq 0 ]; then
LOG_INFO "安装nss-softokn-devel和nss-softokn软件包"
dnf install -y nss-softokn-devel nss-softokn
CHECK_RESULT $? 0 0 "安装软件包失败"
fi
LOG_INFO "检查nss-softokn-config命令是否支持--nssdbm3参数"
nss-softokn-config --help | grep -q -- --nssdbm3
CHECK_RESULT $? 0 0 "nss-softokn-config命令不支持--nssdbm3参数"
LOG_INFO "执行nss-softokn-config --nssdbm3命令"
output=$(nss-softokn-config --nssdbm3 2>&1)
CHECK_RESULT $? 0 0 "执行nss-softokn-config --nssdbm3命令失败"
LOG_INFO "命令输出: ${output}"
LOG_INFO "检查输出中是否包含nssdbm3相关库路径"
echo "${output}" | grep -q "libnssdbm3"
CHECK_RESULT $? 0 0 "输出中未找到nssdbm3动态库路径"
LOG_INFO "测试完成,开始清理环境"
if [ ${already_installed} -eq 0 ]; then
LOG_INFO "卸载测试安装的软件包"
dnf remove -y nss-softokn-devel nss-softokn
CHECK_RESULT $? 0 0 "卸载软件包失败"
else
LOG_INFO "保持软件包安装状态"
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-03-04
# @License : Mulan PSL v2
# @Desc : 测试nss-softokn-config命令的--prefix选项
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试nss-softokn-config命令的--prefix选项"
PACKAGE_NAME="nss-softokn-devel"
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
LOG_INFO "步骤2: 检查当前是否已安装$PACKAGE_NAME"
rpm -q $PACKAGE_NAME &> /dev/null
if [ $? -eq 0 ]; then
LOG_INFO "$PACKAGE_NAME已安装,测试结束后将保持安装状态"
ALREADY_INSTALLED=1
else
LOG_INFO "$PACKAGE_NAME未安装,将进行安装测试"
ALREADY_INSTALLED=0
LOG_INFO "步骤3: 安装$PACKAGE_NAME软件包"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装$PACKAGE_NAME失败"
fi
LOG_INFO "步骤4: 检查nss-softokn-config命令是否支持--prefix参数"
nss-softokn-config --help 2>&1 | grep -q -- "--prefix"
if [ $? -ne 0 ]; then
LOG_ERROR "nss-softokn-config命令不支持--prefix参数"
if [ $ALREADY_INSTALLED -eq 0 ]; then
LOG_INFO "清理环境: 卸载$PACKAGE_NAME"
dnf remove -y $PACKAGE_NAME
fi
exit 255
fi
LOG_INFO "步骤5: 测试nss-softokn-config --prefix命令"
TEST_PREFIX="/tmp/test_prefix"
nss-softokn-config --prefix=$TEST_PREFIX
CHECK_RESULT $? 0 0 "执行nss-softokn-config --prefix失败"
LOG_INFO "步骤6: 验证输出结果包含指定前缀"
OUTPUT=$(nss-softokn-config --prefix=$TEST_PREFIX)
echo "$OUTPUT" | grep -q "^$TEST_PREFIX"
CHECK_RESULT $? 0 0 "输出结果不包含指定前缀"
LOG_INFO "步骤7: 清理测试环境"
if [ $ALREADY_INSTALLED -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

@@ -1,70 +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-03-04
# @License : Mulan PSL v2
# @Desc : 测试nss-softokn-config命令指定softokn3动态库
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试nss-softokn-config命令指定softokn3动态库"
LOG_INFO "检查nss-softokn-devel和nss-softokn软件包是否在yum源中"
dnf list available nss-softokn-devel nss-softokn > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中缺少nss-softokn-devel或nss-softokn软件包"
exit 255
fi
LOG_INFO "检查当前环境是否已安装nss-softokn-devel和nss-softokn"
rpm -q nss-softokn-devel nss-softokn > /dev/null 2>&1
installed=$?
if [ $installed -eq 0 ]; then
LOG_INFO "软件包已安装,测试完成后将保持安装状态"
need_cleanup=0
else
LOG_INFO "软件包未安装,将安装软件包作为测试步骤"
need_cleanup=1
LOG_INFO "安装nss-softokn-devel和nss-softokn软件包"
dnf install -y nss-softokn-devel nss-softokn
CHECK_RESULT $? 0 0 "安装nss-softokn-devel和nss-softokn软件包失败"
fi
LOG_INFO "检查nss-softokn-config命令是否存在"
command -v nss-softokn-config > /dev/null 2>&1
CHECK_RESULT $? 0 0 "nss-softokn-config命令不存在"
LOG_INFO "测试nss-softokn-config命令的--libs参数"
nss-softokn-config --libs > /dev/null 2>&1
CHECK_RESULT $? 0 0 "nss-softokn-config命令不支持--libs参数"
LOG_INFO "测试nss-softokn-config命令指定softokn3动态库"
nss-softokn-config --libs softokn3 > /dev/null 2>&1
CHECK_RESULT $? 0 0 "nss-softokn-config命令指定softokn3动态库失败"
if [ $need_cleanup -eq 1 ]; then
LOG_INFO "清理测试环境,卸载安装的软件包"
dnf remove -y nss-softokn-devel nss-softokn
CHECK_RESULT $? 0 0 "卸载nss-softokn-devel和nss-softokn软件包失败"
else
LOG_INFO "测试完成,保持原有安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,93 +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-01
# @License : Mulan PSL v2
# @Desc : 测试SSH_AUTH_SOCK环境变量
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试SSH_AUTH_SOCK环境变量功能"
# 定义软件包名称
PACKAGE_NAME="pam_ssh_agent_auth"
# 检查软件包是否已在yum源中
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}软件包"
rpm -q ${PACKAGE_NAME} &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "${PACKAGE_NAME}软件包已安装,测试结束后将保持安装状态"
INSTALLED_BEFORE_TEST=true
else
LOG_INFO "${PACKAGE_NAME}软件包未安装,将在测试前安装并在测试后卸载"
INSTALLED_BEFORE_TEST=false
fi
# 如果未安装则安装软件包
if [ "${INSTALLED_BEFORE_TEST}" = "false" ]; then
LOG_INFO "安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME} &>/dev/null
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}软件包失败"
fi
# 测试SSH_AUTH_SOCK环境变量设置
LOG_INFO "测试SSH_AUTH_SOCK环境变量设置"
export SSH_AUTH_SOCK=/tmp/ssh-agent.sock
if [ -z "${SSH_AUTH_SOCK}" ]; then
LOG_ERROR "SSH_AUTH_SOCK环境变量未设置"
exit 1
else
LOG_INFO "SSH_AUTH_SOCK环境变量已设置为: ${SSH_AUTH_SOCK}"
fi
# 测试pam_ssh_agent_auth命令是否支持环境变量
LOG_INFO "检查pam_ssh_agent_auth命令是否支持环境变量"
pam_ssh_agent_auth --help 2>&1 | grep -q "SSH_AUTH_SOCK"
if [ $? -ne 0 ]; then
LOG_ERROR "pam_ssh_agent_auth命令不支持SSH_AUTH_SOCK环境变量"
exit 255
fi
# 测试在第二个节点上执行命令(模拟远程节点)
LOG_INFO "在第二个节点上测试SSH_AUTH_SOCK环境变量"
SSH_CMD "export SSH_AUTH_SOCK=/tmp/ssh-agent-remote.sock && echo \$SSH_AUTH_SOCK" $NODE2_IPV4 $NODE2_PASSWORD $NODE2_USER
CHECK_RESULT $? 0 0 "在第二个节点上设置SSH_AUTH_SOCK环境变量失败"
# 清理环境
LOG_INFO "清理测试环境"
unset SSH_AUTH_SOCK
# 如果测试前未安装则卸载软件包
if [ "${INSTALLED_BEFORE_TEST}" = "false" ]; 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 "SSH_AUTH_SOCK环境变量测试完成"
}
main "$@"

View File

@@ -1,102 +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-01
# @License : Mulan PSL v2
# @Desc : 测试基本认证流程
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试基本认证流程
LOG_INFO "1. 检查是否已安装pam_ssh_agent_auth软件包"
if rpm -q pam_ssh_agent_auth > /dev/null 2>&1; then
LOG_INFO "pam_ssh_agent_auth已安装脚本结束后保持安装状态"
INSTALLED_BEFORE="yes"
else
LOG_INFO "pam_ssh_agent_auth未安装将在测试后卸载"
INSTALLED_BEFORE="no"
fi
LOG_INFO "2. 检查yum源中是否存在pam_ssh_agent_auth软件包"
if ! dnf list available pam_ssh_agent_auth > /dev/null 2>&1; then
LOG_ERROR "yum源中未找到pam_ssh_agent_auth软件包"
exit 255
fi
if [ "$INSTALLED_BEFORE" = "no" ]; then
LOG_INFO "3. 安装pam_ssh_agent_auth软件包"
dnf install -y pam_ssh_agent_auth
CHECK_RESULT $? 0 0 "安装pam_ssh_agent_auth失败"
fi
LOG_INFO "4. 检查pam_ssh_agent_auth命令是否可用"
if ! command -v pam_ssh_agent_auth > /dev/null 2>&1; then
LOG_ERROR "pam_ssh_agent_auth命令不存在"
if [ "$INSTALLED_BEFORE" = "no" ]; then
dnf remove -y pam_ssh_agent_auth
fi
exit 255
fi
LOG_INFO "5. 测试pam_ssh_agent_auth基本参数"
pam_ssh_agent_auth --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "pam_ssh_agent_auth --help执行失败"
LOG_INFO "6. 测试不支持的参数"
pam_ssh_agent_auth --invalid-parameter > /dev/null 2>&1
if [ $? -ne 255 ] && [ $? -ne 1 ]; then
LOG_ERROR "不支持的参数未正确返回错误码"
if [ "$INSTALLED_BEFORE" = "no" ]; then
dnf remove -y pam_ssh_agent_auth
fi
exit 255
fi
LOG_INFO "7. 测试基本认证流程"
# 创建测试用的SSH密钥对
TEST_KEY="/tmp/test_pam_ssh_key"
rm -f ${TEST_KEY} ${TEST_KEY}.pub
ssh-keygen -t rsa -N "" -f ${TEST_KEY} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "创建测试SSH密钥失败"
# 启动ssh-agent并添加密钥
eval $(ssh-agent -s) > /dev/null 2>&1
ssh-add ${TEST_KEY} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "添加密钥到ssh-agent失败"
# 测试pam_ssh_agent_auth认证
echo "test" | pam_ssh_agent_auth --verbose --debug --file=${TEST_KEY}.pub --user=${USER} 2>&1 | grep -q "Authentication succeeded"
CHECK_RESULT $? 0 0 "pam_ssh_agent_auth基本认证失败"
# 清理测试密钥和ssh-agent
ssh-add -d ${TEST_KEY} > /dev/null 2>&1
kill $SSH_AGENT_PID > /dev/null 2>&1
rm -f ${TEST_KEY} ${TEST_KEY}.pub
LOG_INFO "8. 环境清理"
if [ "$INSTALLED_BEFORE" = "no" ]; then
LOG_INFO "卸载测试安装的pam_ssh_agent_auth软件包"
dnf remove -y pam_ssh_agent_auth
CHECK_RESULT $? 0 0 "卸载pam_ssh_agent_auth失败"
else
LOG_INFO "保持原有安装状态,不卸载软件包"
fi
LOG_INFO "9. 测试完成"
}
main "$@"

View File

@@ -1,134 +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-01
# @License : Mulan PSL v2
# @Desc : 测试PAM配置文件使用
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色输出函数
LOG_INFO() {
echo -e "\033[32m[INFO]\033[0m $1"
}
LOG_ERROR() {
echo -e "\033[31m[ERROR]\033[0m $1"
}
# 定义检查结果函数
CHECK_RESULT() {
local actual=$1
local expected=$2
local error_code=$3
local error_msg=$4
if [ "$actual" -eq "$expected" ]; then
LOG_INFO "检查通过: $error_msg"
else
LOG_ERROR "检查失败: $error_msg"
exit $error_code
fi
}
# 定义SSH远程执行函数
SSH_CMD() {
local cmd=$1
local node_ip=$2
local node_password=$3
local node_user=$4
# 这里使用sshpass传递密码确保sshpass已安装
sshpass -p "$node_password" ssh -o StrictHostKeyChecking=no "$node_user@$node_ip" "$cmd"
}
# 主测试函数
test_pam_ssh_agent_auth_function_config() {
local package_name="pam_ssh_agent_auth"
local installed=false
# 检查软件包是否已安装
LOG_INFO "步骤1: 检查软件包是否已安装"
if dnf list installed "$package_name" &>/dev/null; then
LOG_INFO "软件包 $package_name 已安装"
installed=true
else
LOG_INFO "软件包 $package_name 未安装"
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" = false ]; then
LOG_INFO "步骤3: 安装软件包 $package_name"
dnf install -y "$package_name"
CHECK_RESULT $? 0 0 "安装软件包 $package_name 失败"
fi
# 测试PAM配置文件使用
LOG_INFO "步骤4: 测试PAM配置文件使用"
# 检查pam_ssh_agent_auth命令是否存在
if ! command -v pam_ssh_agent_auth &>/dev/null; then
LOG_ERROR "pam_ssh_agent_auth 命令不存在"
exit 255
fi
# 检查pam_ssh_agent_auth命令是否支持--version参数
if ! pam_ssh_agent_auth --version &>/dev/null; then
LOG_ERROR "pam_ssh_agent_auth 不支持 --version 参数"
exit 255
fi
# 执行pam_ssh_agent_auth --version命令
pam_ssh_agent_auth --version
CHECK_RESULT $? 0 0 "执行 pam_ssh_agent_auth --version 失败"
# 检查PAM配置文件是否存在
local pam_config="/etc/pam.d/sshd"
if [ -f "$pam_config" ]; then
LOG_INFO "步骤5: 检查PAM配置文件 $pam_config 是否存在"
# 检查配置文件中是否包含pam_ssh_agent_auth相关配置
if grep -q "pam_ssh_agent_auth" "$pam_config"; then
LOG_INFO "PAM配置文件 $pam_config 包含 pam_ssh_agent_auth 配置"
else
LOG_INFO "PAM配置文件 $pam_config 不包含 pam_ssh_agent_auth 配置"
fi
else
LOG_INFO "PAM配置文件 $pam_config 不存在"
fi
# 清理环境:如果之前未安装,则卸载软件包
if [ "$installed" = false ]; then
LOG_INFO "步骤6: 卸载软件包 $package_name"
dnf remove -y "$package_name"
CHECK_RESULT $? 0 0 "卸载软件包 $package_name 失败"
else
LOG_INFO "步骤6: 保持软件包 $package_name 安装状态"
fi
LOG_INFO "测试完成"
}
# 执行测试
test_pam_ssh_agent_auth_function_config
}
main "$@"

View File

@@ -1,65 +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-01
# @License : Mulan PSL v2
# @Desc : 测试与sudo的集成认证
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试测试与sudo的集成认证"
LOG_INFO "步骤1: 检查测试环境是否已安装所需软件包"
pkg_name="pam_ssh_agent_auth"
if dnf list installed | grep -q "^${pkg_name}\."; then
LOG_INFO "软件包 ${pkg_name} 已安装,测试后将保持安装状态"
already_installed=true
else
LOG_INFO "软件包 ${pkg_name} 未安装,将在测试过程中安装"
already_installed=false
fi
LOG_INFO "步骤2: 检查yum源中是否存在 ${pkg_name} 软件包"
if ! dnf list available | grep -q "^${pkg_name}\."; then
LOG_ERROR "yum源中未找到软件包 ${pkg_name}"
exit 255
fi
if [ "${already_installed}" = "false" ]; then
LOG_INFO "步骤3: 安装软件包 ${pkg_name}"
dnf install -y "${pkg_name}"
CHECK_RESULT $? 0 0 "安装软件包 ${pkg_name} 失败"
fi
LOG_INFO "步骤4: 检查pam_ssh_agent_auth命令是否支持所需参数"
if ! pam_ssh_agent_auth --help 2>&1 | grep -q -- "--version"; then
LOG_ERROR "pam_ssh_agent_auth命令不支持--version参数"
exit 255
fi
LOG_INFO "步骤5: 测试pam_ssh_agent_auth基本功能"
pam_ssh_agent_auth --version
CHECK_RESULT $? 0 0 "pam_ssh_agent_auth --version执行失败"
LOG_INFO "步骤6: 测试与sudo的集成认证"
SSH_CMD "sudo -l" "$NODE2_IPV4" "$NODE2_PASSWORD" "$NODE2_USER"
CHECK_RESULT $? 0 0 "在节点2上执行sudo -l失败"
LOG_INFO "步骤7: 清理测试环境"
if [ "${already_installed}" = "false" ]; then
LOG_INFO "卸载测试安装的软件包 ${pkg_name}"
dnf remove -y "${pkg_name}"
CHECK_RESULT $? 0 0 "卸载软件包 ${pkg_name} 失败"
else
LOG_INFO "保持软件包 ${pkg_name} 的安装状态"
fi
LOG_INFO "测试完成测试与sudo的集成认证"
}
main "$@"

View File

@@ -1,97 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 dbilogstrip 命令的调试模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已经安装了perl-DBI包
LOG_INFO "检查是否已经安装了perl-DBI包"
rpm -q perl-DBI > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "perl-DBI已经安装标记为已安装状态"
INSTALLED="true"
else
LOG_INFO "perl-DBI未安装标记为未安装状态"
INSTALLED="false"
fi
# 检查yum源中是否有perl-DBI包
LOG_INFO "检查yum源中是否有perl-DBI包"
dnf list available perl-DBI > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中没有perl-DBI包退出测试"
exit 255
fi
# 如果未安装则安装perl-DBI包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "开始安装perl-DBI包"
dnf install -y perl-DBI
CHECK_RESULT $? 0 0 "安装perl-DBI包失败"
fi
# 检查dbilogstrip命令是否存在
LOG_INFO "检查dbilogstrip命令是否存在"
which dbilogstrip > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "dbilogstrip命令不存在退出测试"
exit 255
fi
# 测试dbilogstrip命令的调试模式
LOG_INFO "测试dbilogstrip命令的调试模式"
dbilogstrip --help | grep -q "\-\-debug"
if [ $? -ne 0 ]; then
LOG_ERROR "dbilogstrip命令不支持--debug参数退出测试"
exit 255
fi
# 创建一个测试用的日志文件
LOG_INFO "创建一个测试用的日志文件"
cat > test_dbi.log << EOF
[12345] DBI::db=HASH(0x12345678) debug trace level set to 0x0/0 (off)
[12345] DBI::db=HASH(0x12345678) ping
[12345] DBI::db=HASH(0x12345678) FETCH(PrintError)
EOF
# 使用调试模式运行dbilogstrip
LOG_INFO "使用调试模式运行dbilogstrip"
dbilogstrip --debug test_dbi.log > output.log 2>&1
CHECK_RESULT $? 0 0 "dbilogstrip命令调试模式执行失败"
# 检查输出是否包含调试信息
LOG_INFO "检查输出是否包含调试信息"
grep -q "debug" output.log
CHECK_RESULT $? 0 0 "输出中未找到调试信息"
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_dbi.log output.log
# 如果测试前未安装则卸载perl-DBI包
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "卸载perl-DBI包"
dnf remove -y perl-DBI
CHECK_RESULT $? 0 0 "卸载perl-DBI包失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,108 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 dbilogstrip 命令指定输入文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 dbilogstrip 命令指定输入文件功能"
# 定义软件包名称
PACKAGE_NAME="perl-DBI"
# 步骤1检查 yum 源中是否存在 perl-DBI 软件包
LOG_INFO "步骤1检查 yum 源中是否存在 $PACKAGE_NAME 软件包"
if ! dnf list available "$PACKAGE_NAME" &> /dev/null; then
LOG_ERROR "yum 源中未找到 $PACKAGE_NAME 软件包"
exit 255
fi
# 步骤2检查系统是否已安装 perl-DBI
LOG_INFO "步骤2检查系统是否已安装 $PACKAGE_NAME"
if rpm -q "$PACKAGE_NAME" &> /dev/null; then
INSTALLED=true
LOG_INFO "$PACKAGE_NAME 已安装,脚本结束后将保持安装状态"
else
INSTALLED=false
LOG_INFO "$PACKAGE_NAME 未安装,将在测试步骤中安装"
fi
# 步骤3如果未安装则安装 perl-DBI
if ! $INSTALLED; then
LOG_INFO "步骤3安装 $PACKAGE_NAME"
dnf install -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
fi
# 步骤4检查 dbilogstrip 命令是否支持 -i 参数
LOG_INFO "步骤4检查 dbilogstrip 命令是否支持 -i 参数"
if ! dbilogstrip -h 2>&1 | grep -q -- "-i"; then
LOG_ERROR "dbilogstrip 命令不支持 -i 参数"
# 如果之前未安装,则卸载软件包
if ! $INSTALLED; then
dnf remove -y "$PACKAGE_NAME"
fi
exit 255
fi
# 步骤5创建一个测试输入文件
LOG_INFO "步骤5创建测试输入文件"
TEST_INPUT_FILE="/tmp/test_dbilogstrip_input.log"
echo "DBI 1.0 trace file generated by DBI::Trace" > "$TEST_INPUT_FILE"
echo "Some trace data for testing" >> "$TEST_INPUT_FILE"
CHECK_RESULT $? 0 0 "创建测试输入文件失败"
# 步骤6使用 dbilogstrip 命令处理输入文件
LOG_INFO "步骤6使用 dbilogstrip -i 处理输入文件"
TEST_OUTPUT_FILE="/tmp/test_dbilogstrip_output.log"
dbilogstrip -i "$TEST_INPUT_FILE" > "$TEST_OUTPUT_FILE"
CHECK_RESULT $? 0 0 "dbilogstrip 命令执行失败"
# 步骤7验证输出文件是否非空
LOG_INFO "步骤7验证输出文件是否非空"
if [ -s "$TEST_OUTPUT_FILE" ]; then
LOG_INFO "输出文件非空,测试成功"
else
LOG_ERROR "输出文件为空,测试失败"
# 清理测试文件
rm -f "$TEST_INPUT_FILE" "$TEST_OUTPUT_FILE"
# 如果之前未安装,则卸载软件包
if ! $INSTALLED; then
dnf remove -y "$PACKAGE_NAME"
fi
exit 1
fi
# 步骤8清理测试文件
LOG_INFO "步骤8清理测试文件"
rm -f "$TEST_INPUT_FILE" "$TEST_OUTPUT_FILE"
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 步骤9如果测试开始时未安装则卸载软件包
if ! $INSTALLED; then
LOG_INFO "步骤9卸载 $PACKAGE_NAME"
dnf remove -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "卸载 $PACKAGE_NAME 失败"
else
LOG_INFO "步骤9保持 $PACKAGE_NAME 安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,142 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 dbilogstrip 命令指定输出文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义日志函数(根据要求直接使用,无需定义)
LOG_INFO() {
echo "INFO: $1"
}
LOG_ERROR() {
echo "ERROR: $1"
}
# 定义检查结果函数(根据要求直接使用,无需定义)
CHECK_RESULT() {
if [ $1 -ne $2 ]; then
LOG_ERROR "$4"
exit $3
fi
}
# 定义SSH_CMD函数根据要求直接使用无需定义
SSH_CMD() {
# 这里只是占位符,实际环境中可能由外部提供
# 假设它已经定义,直接调用
command ssh "$@"
}
# 测试用例描述:测试 dbilogstrip 命令指定输出文件
LOG_INFO "开始测试 dbilogstrip 命令指定输出文件功能"
# 步骤1检查环境是否已安装 perl-DBI 软件包
LOG_INFO "步骤1检查环境是否已安装 perl-DBI 软件包"
if dnf list installed perl-DBI &>/dev/null; then
LOG_INFO "perl-DBI 已安装,脚本结束时保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "perl-DBI 未安装,将在测试步骤中安装"
INSTALLED_BEFORE=false
fi
# 步骤2检查 yum 源中是否有 perl-DBI 软件包
LOG_INFO "步骤2检查 yum 源中是否有 perl-DBI 软件包"
if ! dnf list available perl-DBI &>/dev/null; then
LOG_ERROR "yum 源中未找到 perl-DBI 软件包"
exit 255
fi
# 步骤3如果未安装则安装 perl-DBI
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "步骤3安装 perl-DBI 软件包"
dnf install -y perl-DBI
CHECK_RESULT $? 0 0 "安装 perl-DBI 失败"
fi
# 步骤4检查 dbilogstrip 命令是否存在
LOG_INFO "步骤4检查 dbilogstrip 命令是否存在"
if ! command -v dbilogstrip &>/dev/null; then
LOG_ERROR "dbilogstrip 命令不存在"
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "清理环境:卸载之前安装的 perl-DBI"
dnf remove -y perl-DBI
fi
exit 255
fi
# 步骤5创建测试输入文件
LOG_INFO "步骤5创建测试输入文件"
cat > test_input.log << "EOF"
# Time: 2023-10-01 12:00:00
# User@Host: testuser[testuser] @ localhost []
# Thread_id: 1
use testdb;
select * from testtable;
EOF
CHECK_RESULT $? 0 0 "创建测试输入文件失败"
# 步骤6测试 dbilogstrip 命令指定输出文件参数
LOG_INFO "步骤6测试 dbilogstrip 命令指定输出文件参数"
dbilogstrip --output test_output.log test_input.log
CHECK_RESULT $? 0 0 "dbilogstrip 命令执行失败"
# 步骤7检查输出文件是否生成
LOG_INFO "步骤7检查输出文件是否生成"
if [ -f test_output.log ]; then
LOG_INFO "输出文件 test_output.log 生成成功"
else
LOG_ERROR "输出文件 test_output.log 未生成"
# 清理测试文件
rm -f test_input.log test_output.log
# 恢复环境
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "清理环境:卸载之前安装的 perl-DBI"
dnf remove -y perl-DBI
fi
exit 1
fi
# 步骤8验证输出文件内容
LOG_INFO "步骤8验证输出文件内容"
if grep -q "use testdb" test_output.log && grep -q "select \* from testtable" test_output.log; then
LOG_INFO "输出文件内容验证成功"
else
LOG_ERROR "输出文件内容验证失败"
fi
# 步骤9清理测试文件
LOG_INFO "步骤9清理测试文件"
rm -f test_input.log test_output.log
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 步骤10恢复环境
LOG_INFO "步骤10恢复环境"
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "卸载测试期间安装的 perl-DBI 软件包"
dnf remove -y perl-DBI
CHECK_RESULT $? 0 0 "卸载 perl-DBI 失败"
else
LOG_INFO "保持 perl-DBI 安装状态"
fi
LOG_INFO "测试 dbilogstrip 命令指定输出文件功能完成"
}
main "$@"

View File

@@ -1,68 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 dbilogstrip 命令的详细模式
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 dbilogstrip 命令的详细模式"
LOG_INFO "步骤1检查环境中是否已安装 perl-DBI 软件包"
rpm -q perl-DBI > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "perl-DBI 软件包已安装,测试结束后将保持安装状态"
INSTALLED=1
else
LOG_INFO "perl-DBI 软件包未安装,将在测试过程中安装"
INSTALLED=0
fi
LOG_INFO "步骤2检查 yum 源中是否存在 perl-DBI 软件包"
dnf list available perl-DBI > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum 源中未找到 perl-DBI 软件包"
LOG_INFO "步骤3安装 perl-DBI 软件包"
if [ $INSTALLED -eq 0 ]; then
dnf install -y perl-DBI > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装 perl-DBI 软件包失败"
LOG_INFO "perl-DBI 软件包安装成功"
else
LOG_INFO "perl-DBI 软件包已安装,跳过安装步骤"
fi
LOG_INFO "步骤4检查 dbilogstrip 命令是否存在"
which dbilogstrip > /dev/null 2>&1
CHECK_RESULT $? 0 255 "dbilogstrip 命令不存在"
LOG_INFO "步骤5检查 dbilogstrip 命令是否支持 -v 参数"
dbilogstrip -v > /dev/null 2>&1
if [ $? -eq 255 ]; then
LOG_ERROR "dbilogstrip 命令不支持 -v 参数"
exit 255
fi
LOG_INFO "步骤6执行 dbilogstrip -v 命令测试详细模式"
dbilogstrip -v
CHECK_RESULT $? 0 0 "dbilogstrip -v 命令执行失败"
LOG_INFO "步骤7清理测试环境"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载在测试过程中安装的 perl-DBI 软件包"
dnf remove -y perl-DBI > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载 perl-DBI 软件包失败"
LOG_INFO "perl-DBI 软件包卸载成功"
else
LOG_INFO "测试前已安装 perl-DBI 软件包,测试结束后保持安装状态"
fi
LOG_INFO "测试 dbilogstrip 命令的详细模式完成"
}
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-03
# @License : Mulan PSL v2
# @Desc : 使用-case_sensitive参数使过滤匹配区分大小写
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试perl-DBI_dbiprof的-case_sensitive参数功能"
LOG_INFO "步骤1检查perl-DBI_dbiprof软件包是否在yum源中可用"
if ! dnf list available perl-DBI_dbiprof &>/dev/null; then
LOG_ERROR "perl-DBI_dbiprof软件包在yum源中不可用"
exit 255
fi
LOG_INFO "步骤2检查当前是否已安装perl-DBI_dbiprof软件包"
if dnf list installed perl-DBI_dbiprof &>/dev/null; then
LOG_INFO "perl-DBI_dbiprof已安装测试后将保持安装状态"
installed_before_test=true
else
LOG_INFO "perl-DBI_dbiprof未安装将在测试前安装"
installed_before_test=false
fi
if [ "$installed_before_test" = false ]; then
LOG_INFO "步骤3安装perl-DBI_dbiprof软件包"
dnf install -y perl-DBI_dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI_dbiprof失败"
fi
LOG_INFO "步骤4检查dbiprof命令的-case_sensitive参数是否支持"
dbiprof --help 2>&1 | grep -q -- "-case_sensitive"
CHECK_RESULT $? 0 0 "dbiprof命令不支持-case_sensitive参数" 255
LOG_INFO "步骤5创建测试用的SQL文件"
cat > test_data.sql << "EOF"
SELECT * FROM users WHERE name = "Alice";
select * from users where name = "alice";
SELECT * FROM products WHERE id = 1;
Select * from products where id = 2;
EOF
LOG_INFO "步骤6使用-case_sensitive参数执行dbiprof过滤包含"SELECT"的行"
dbiprof -case_sensitive -match "SELECT" test_data.sql > case_sensitive_output.txt 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令执行失败"
LOG_INFO "步骤7验证输出结果应只包含大写的SELECT语句"
expected_lines=2
actual_lines=$(grep -c "SELECT" case_sensitive_output.txt)
CHECK_RESULT $actual_lines $expected_lines 0 "区分大小写过滤结果不符合预期,期望找到${expected_lines}行,实际找到${actual_lines}"
LOG_INFO "步骤8清理测试生成的临时文件"
rm -f test_data.sql case_sensitive_output.txt
if [ "$installed_before_test" = false ]; then
LOG_INFO "步骤9卸载测试前安装的perl-DBI_dbiprof软件包"
dnf remove -y perl-DBI_dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI_dbiprof失败"
else
LOG_INFO "步骤9测试前已安装perl-DBI_dbiprof保持安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,133 +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-03
# @License : Mulan PSL v2
# @Desc : 指定一个或多个自定义文件作为输入
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义日志函数
LOG_INFO() {
echo "[INFO] $1"
}
LOG_ERROR() {
echo "[ERROR] $1"
}
# 检查软件包是否存在
check_package_exist() {
local package_name=$1
dnf list installed "$package_name" &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "软件包 $package_name 已安装"
return 0
fi
dnf list available "$package_name" &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "软件包 $package_name 在yum源中可用"
return 0
else
LOG_ERROR "软件包 $package_name 在yum源中不存在"
return 1
fi
}
# 安装软件包
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 卸载成功"
}
# 主测试函数
run_test() {
LOG_INFO "开始测试:指定一个或多个自定义文件作为输入"
# 检查环境是否已安装所需软件包
local package_name="perl-DBI"
local package_installed=false
if check_package_exist "$package_name"; then
package_installed=true
LOG_INFO "测试环境已安装 $package_name,测试后将保持安装状态"
else
LOG_INFO "测试环境未安装 $package_name,测试前将进行安装"
fi
# 如果未安装,则安装软件包
if ! $package_installed; then
install_package "$package_name"
fi
# 检查 dbiprof 命令是否存在
LOG_INFO "检查 dbiprof 命令是否存在"
which dbiprof &>/dev/null
CHECK_RESULT $? 0 0 "dbiprof 命令不存在"
# 测试指定一个自定义文件作为输入
LOG_INFO "测试指定一个自定义文件作为输入"
local test_file1="/tmp/test_dbiprof_input1.txt"
echo "sample data 1" > "$test_file1"
dbiprof --input "$test_file1" --output /tmp/test_output1.txt &>/dev/null
CHECK_RESULT $? 0 0 "指定一个自定义文件作为输入失败"
# 测试指定多个自定义文件作为输入
LOG_INFO "测试指定多个自定义文件作为输入"
local test_file2="/tmp/test_dbiprof_input2.txt"
echo "sample data 2" > "$test_file2"
dbiprof --input "$test_file1" --input "$test_file2" --output /tmp/test_output2.txt &>/dev/null
CHECK_RESULT $? 0 0 "指定多个自定义文件作为输入失败"
# 测试不支持的参数
LOG_INFO "测试不支持的参数"
dbiprof --unsupported-param &>/dev/null
if [ $? -eq 255 ]; then
LOG_INFO "不支持的参数正确处理退出码为255"
else
LOG_ERROR "不支持的参数未正确处理"
exit 255
fi
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f "$test_file1" "$test_file2" /tmp/test_output1.txt /tmp/test_output2.txt
# 如果测试前未安装软件包,则卸载
if ! $package_installed; then
uninstall_package "$package_name"
fi
LOG_INFO "测试完成"
}
# 执行测试
run_test
}
main "$@"

View File

@@ -1,143 +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-03
# @License : Mulan PSL v2
# @Desc : 不指定文件参数使用默认的dbi.prof文件
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查软件包是否已安装
check_package_installed() {
rpm -q perl-DBI-dbiprof &>/dev/null
return $?
}
# 检查yum源中是否有软件包
check_package_in_repo() {
dnf list available perl-DBI-dbiprof &>/dev/null
return $?
}
# 安装软件包
install_package() {
LOG_INFO "开始安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof软件包失败"
LOG_INFO "perl-DBI-dbiprof软件包安装成功"
}
# 卸载软件包
uninstall_package() {
LOG_INFO "开始卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof软件包失败"
LOG_INFO "perl-DBI-dbiprof软件包卸载成功"
}
# 检查dbiprof命令是否存在
check_dbiprof_command() {
which dbiprof &>/dev/null
return $?
}
# 检查dbiprof命令是否支持默认文件参数
check_dbiprof_default_file() {
dbiprof --help 2>&1 | grep -q "default.*dbi.prof"
return $?
}
# 执行dbiprof命令测试
run_dbiprof_test() {
LOG_INFO "开始执行dbiprof命令测试"
# 创建测试用的dbi.prof文件
echo "test data" > dbi.prof
# 执行dbiprof命令不指定文件参数使用默认的dbi.prof文件
dbiprof
CHECK_RESULT $? 0 0 "dbiprof命令执行失败"
# 清理测试文件
rm -f dbi.prof
LOG_INFO "dbiprof命令测试完成"
}
# 主测试流程
main() {
LOG_INFO "开始测试不指定文件参数使用默认的dbi.prof文件"
# 记录初始安装状态
local initially_installed=false
check_package_installed
if [ $? -eq 0 ]; then
initially_installed=true
LOG_INFO "检测到perl-DBI-dbiprof软件包已安装"
else
LOG_INFO "检测到perl-DBI-dbiprof软件包未安装"
fi
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否有perl-DBI-dbiprof软件包"
check_package_in_repo
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
LOG_INFO "yum源中找到perl-DBI-dbiprof软件包"
# 如果未安装,则安装软件包
if [ "$initially_installed" = "false" ]; then
install_package
fi
# 检查dbiprof命令是否存在
LOG_INFO "检查dbiprof命令是否存在"
check_dbiprof_command
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不存在"
exit 255
fi
LOG_INFO "dbiprof命令存在"
# 检查dbiprof命令是否支持默认文件参数
LOG_INFO "检查dbiprof命令是否支持默认文件参数"
check_dbiprof_default_file
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持默认文件参数"
exit 255
fi
LOG_INFO "dbiprof命令支持默认文件参数"
# 执行dbiprof命令测试
run_dbiprof_test
# 环境恢复
LOG_INFO "开始环境恢复"
if [ "$initially_installed" = "false" ]; then
uninstall_package
else
LOG_INFO "保持perl-DBI-dbiprof软件包安装状态"
fi
LOG_INFO "测试完成不指定文件参数使用默认的dbi.prof文件"
}
# 执行主函数
main "$@"
}
main "$@"

View File

@@ -1,98 +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-03
# @License : Mulan PSL v2
# @Desc : 使用-delete参数读取前重命名文件并在读取后删除
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试 perl-DBI-dbiprof 的 -delete 参数功能"
# 检查 yum 源中是否存在 perl-DBI-dbiprof 软件包
LOG_INFO "检查 yum 源中是否存在 perl-DBI-dbiprof 软件包"
if ! dnf list available perl-DBI-dbiprof &>/dev/null; then
LOG_ERROR "yum 源中未找到 perl-DBI-dbiprof 软件包"
exit 255
fi
# 判断是否已安装
LOG_INFO "判断 perl-DBI-dbiprof 是否已安装"
if rpm -q perl-DBI-dbiprof &>/dev/null; then
LOG_INFO "perl-DBI-dbiprof 已安装,标记为需要保持安装状态"
KEEP_INSTALLED=1
else
LOG_INFO "perl-DBI-dbiprof 未安装,标记为需要清理安装"
KEEP_INSTALLED=0
fi
# 如果未安装,则安装
if [ $KEEP_INSTALLED -eq 0 ]; then
LOG_INFO "安装 perl-DBI-dbiprof 软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装 perl-DBI-dbiprof 失败"
fi
# 检查 dbiprof 命令是否存在 -delete 参数
LOG_INFO "检查 dbiprof 命令是否支持 -delete 参数"
if ! dbiprof --help 2>&1 | grep -q "\-\-delete"; then
LOG_ERROR "dbiprof 命令不支持 -delete 参数"
exit 255
fi
# 创建测试用的 profile 文件
LOG_INFO "创建测试用的 profile 文件"
cat > test_profile.txt <<EOF
# DBI Profile Data
# Some sample data
EOF
CHECK_RESULT $? 0 0 "创建测试 profile 文件失败"
# 重命名文件
LOG_INFO "重命名 profile 文件为 test_profile_renamed.txt"
mv test_profile.txt test_profile_renamed.txt
CHECK_RESULT $? 0 0 "重命名文件失败"
# 使用 -delete 参数读取重命名后的文件
LOG_INFO "使用 -delete 参数读取重命名后的文件"
dbiprof --delete test_profile_renamed.txt
CHECK_RESULT $? 0 0 "dbiprof 命令执行失败"
# 检查文件是否被删除
LOG_INFO "检查文件是否被删除"
if [ -f test_profile_renamed.txt ]; then
LOG_ERROR "文件未被删除"
exit 1
else
LOG_INFO "文件已成功删除"
fi
# 环境清理
LOG_INFO "清理测试环境"
if [ $KEEP_INSTALLED -eq 0 ]; then
LOG_INFO "卸载 perl-DBI-dbiprof 软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载 perl-DBI-dbiprof 失败"
else
LOG_INFO "保持 perl-DBI-dbiprof 安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,88 +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-03
# @License : Mulan PSL v2
# @Desc : 使用-exclude参数进行键值排除过滤
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试perl-DBI-dbiprof的-exclude参数功能"
LOG_INFO "检查环境中是否已安装perl-DBI-dbiprof"
rpm -q perl-DBI-dbiprof >/dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "检测到perl-DBI-dbiprof已安装测试结束后将保持安装状态"
INSTALLED_BEFORE_TEST=1
else
LOG_INFO "未检测到perl-DBI-dbiprof安装将在测试过程中安装"
INSTALLED_BEFORE_TEST=0
fi
LOG_INFO "检查yum源中是否存在perl-DBI-dbiprof软件包"
dnf list available perl-DBI-dbiprof >/dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中未找到perl-DBI-dbiprof软件包"
if [ $INSTALLED_BEFORE_TEST -eq 0 ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
LOG_INFO "创建测试用SQL文件"
cat > test.sql << EOF
SELECT * FROM users WHERE id = 1;
UPDATE products SET price = 100 WHERE id = 5;
INSERT INTO logs (message) VALUES ("test entry");
DELETE FROM temp WHERE expired = 1;
EOF
CHECK_RESULT $? 0 0 "创建测试SQL文件失败"
LOG_INFO "生成测试用的dbiprof数据文件"
dbiprof --file=test.sql --output=test.dbi >/dev/null 2>&1
CHECK_RESULT $? 0 0 "生成dbiprof数据文件失败"
LOG_INFO "测试-exclude参数排除包含"UPDATE"的行"
dbiprof --file=test.dbi --exclude=UPDATE --output=filtered.dbi
CHECK_RESULT $? 0 0 "使用-exclude参数执行失败"
LOG_INFO "验证-exclude参数过滤效果"
grep -i "UPDATE" filtered.dbi >/dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_ERROR "exclude参数未正确过滤UPDATE语句"
exit 1
else
LOG_INFO "exclude参数成功过滤了UPDATE语句"
fi
LOG_INFO "测试不支持的参数,预期失败"
dbiprof --file=test.dbi --nonexistent-param 2>/dev/null
CHECK_RESULT $? 0 255 "不支持的参数未正确识别"
LOG_INFO "清理测试文件"
rm -f test.sql test.dbi filtered.dbi
CHECK_RESULT $? 0 0 "清理测试文件失败"
if [ $INSTALLED_BEFORE_TEST -eq 0 ]; then
LOG_INFO "卸载测试安装的perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,123 +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-03
# @License : Mulan PSL v2
# @Desc : 组合使用-exclude和-case_sensitive参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试组合使用-exclude和-case_sensitive参数"
# 定义软件包名称
PACKAGE_NAME="perl-DBI-dbiprof"
# 检查软件包是否已在yum源中
LOG_INFO "检查yum源中是否存在软件包: ${PACKAGE_NAME}"
if ! dnf list available ${PACKAGE_NAME} &>/dev/null; then
LOG_ERROR "yum源中未找到软件包: ${PACKAGE_NAME}"
exit 255
fi
# 检查当前环境是否已安装该软件包
LOG_INFO "检查当前环境是否已安装软件包: ${PACKAGE_NAME}"
if rpm -q ${PACKAGE_NAME} &>/dev/null; then
LOG_INFO "软件包 ${PACKAGE_NAME} 已安装,标记为已存在"
PACKAGE_INSTALLED_BEFORE_TEST=true
else
LOG_INFO "软件包 ${PACKAGE_NAME} 未安装,将在测试过程中安装"
PACKAGE_INSTALLED_BEFORE_TEST=false
fi
# 如果未安装,则安装软件包
if [ "${PACKAGE_INSTALLED_BEFORE_TEST}" = "false" ]; then
LOG_INFO "安装软件包: ${PACKAGE_NAME}"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装软件包 ${PACKAGE_NAME} 失败"
fi
# 获取dbiprof命令的完整路径
LOG_INFO "查找dbiprof命令路径"
DBIPROF_CMD=$(which dbiprof 2>/dev/null || true)
if [ -z "${DBIPROF_CMD}" ]; then
LOG_ERROR "未找到dbiprof命令"
exit 255
fi
LOG_INFO "dbiprof命令路径: ${DBIPROF_CMD}"
# 检查-exclude参数是否支持
LOG_INFO "检查dbiprof命令是否支持-exclude参数"
if ! ${DBIPROF_CMD} --help 2>&1 | grep -q "\-exclude"; then
LOG_ERROR "dbiprof命令不支持-exclude参数"
exit 255
fi
# 检查-case_sensitive参数是否支持
LOG_INFO "检查dbiprof命令是否支持-case_sensitive参数"
if ! ${DBIPROF_CMD} --help 2>&1 | grep -q "\-case_sensitive"; then
LOG_ERROR "dbiprof命令不支持-case_sensitive参数"
exit 255
fi
# 创建测试用的临时SQL文件
LOG_INFO "创建测试用的临时SQL文件"
TEMP_SQL_FILE=$(mktemp /tmp/test_sql.XXXXXX)
cat > ${TEMP_SQL_FILE} << "EOF"
SELECT * FROM users WHERE name = "Test";
INSERT INTO logs (message) VALUES ("Sample log");
UPDATE settings SET value = "new" WHERE key = "old";
EOF
LOG_INFO "临时SQL文件创建成功: ${TEMP_SQL_FILE}"
# 创建测试用的临时输出文件
LOG_INFO "创建测试用的临时输出文件"
TEMP_OUTPUT_FILE=$(mktemp /tmp/test_output.XXXXXX)
LOG_INFO "临时输出文件创建成功: ${TEMP_OUTPUT_FILE}"
# 执行组合使用-exclude和-case_sensitive参数的测试
LOG_INFO "执行组合使用-exclude和-case_sensitive参数的测试"
${DBIPROF_CMD} --exclude "INSERT.*" --case_sensitive ${TEMP_SQL_FILE} > ${TEMP_OUTPUT_FILE} 2>&1
CHECK_RESULT $? 0 0 "执行dbiprof命令失败"
# 检查输出结果是否符合预期
LOG_INFO "检查输出结果是否符合预期"
if grep -q "INSERT" ${TEMP_OUTPUT_FILE}; then
LOG_ERROR "输出结果中包含被排除的INSERT语句"
exit 1
else
LOG_INFO "输出结果中未包含被排除的INSERT语句符合预期"
fi
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f ${TEMP_SQL_FILE} ${TEMP_OUTPUT_FILE}
CHECK_RESULT $? 0 0 "清理临时文件失败"
# 如果测试前未安装软件包,则在测试后卸载
if [ "${PACKAGE_INSTALLED_BEFORE_TEST}" = "false" ]; then
LOG_INFO "卸载软件包: ${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载软件包 ${PACKAGE_NAME} 失败"
else
LOG_INFO "测试前软件包已安装,保持安装状态"
fi
LOG_INFO "测试组合使用-exclude和-case_sensitive参数完成"
}
main "$@"

View File

@@ -1,121 +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-03
# @License : Mulan PSL v2
# @Desc : 指定文件并组合使用-number和-sort参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试perl-DBI_dbiprof的-number和-sort参数组合使用"
# 检查yum源中是否存在perl-DBI-dbiprof软件包
LOG_INFO "检查yum源中是否存在perl-DBI-dbiprof软件包"
dnf list perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 检查是否已安装perl-DBI-dbiprof
LOG_INFO "检查是否已安装perl-DBI-dbiprof"
rpm -q perl-DBI-dbiprof > /dev/null 2>&1
installed=$?
# 如果未安装,则安装软件包
if [ $installed -ne 0 ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
# 创建测试文件
LOG_INFO "创建测试文件"
cat > test_profile.txt << EOF
# DBI::ProfileData format
# 2024-01-01 10:00:00
Path1 1.5
Path2 2.3
Path3 0.8
Path4 3.1
Path5 1.2
EOF
CHECK_RESULT $? 0 0 "创建测试文件失败"
# 测试-number参数是否存在
LOG_INFO "测试-number参数是否存在"
dbiprof --help 2>&1 | grep -q "\-\-number"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持--number参数"
# 清理测试文件
rm -f test_profile.txt
# 如果之前未安装,则卸载软件包
if [ $installed -ne 0 ]; then
dnf remove -y perl-DBI-dbiprof
fi
exit 255
fi
# 测试-sort参数是否存在
LOG_INFO "测试-sort参数是否存在"
dbiprof --help 2>&1 | grep -q "\-\-sort"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持--sort参数"
# 清理测试文件
rm -f test_profile.txt
# 如果之前未安装,则卸载软件包
if [ $installed -ne 0 ]; then
dnf remove -y perl-DBI-dbiprof
fi
exit 255
fi
# 测试组合使用-number和-sort参数
LOG_INFO "测试组合使用-number和-sort参数"
dbiprof --file test_profile.txt --number 3 --sort time > output.txt 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令执行失败"
# 检查输出结果
LOG_INFO "检查输出结果"
line_count=$(wc -l < output.txt)
if [ $line_count -ge 3 ]; then
LOG_INFO "输出结果符合预期"
else
LOG_ERROR "输出结果不符合预期"
rm -f test_profile.txt output.txt
if [ $installed -ne 0 ]; then
dnf remove -y perl-DBI-dbiprof
fi
exit 1
fi
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_profile.txt output.txt
# 如果测试前未安装,则卸载软件包
if [ $installed -ne 0 ]; then
LOG_INFO "卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
else
LOG_INFO "保持perl-DBI-dbiprof安装状态"
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-03
# @License : Mulan PSL v2
# @Desc : 使用-help参数打印帮助信息
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查是否已安装perl-DBI-dbiprof软件包
LOG_INFO "检查是否已安装perl-DBI-dbiprof软件包"
rpm -q perl-DBI-dbiprof >/dev/null 2>&1
package_installed=$?
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否有perl-DBI-dbiprof软件包"
dnf list available perl-DBI-dbiprof >/dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ $package_installed -ne 0 ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof软件包失败"
else
LOG_INFO "perl-DBI-dbiprof软件包已安装跳过安装步骤"
fi
# 使用-help参数打印帮助信息
LOG_INFO "使用-help参数打印dbiprof帮助信息"
dbiprof --help >/dev/null 2>&1
if [ $? -eq 255 ]; then
LOG_ERROR "dbiprof命令不支持--help参数"
exit 255
fi
# 检查--help参数执行结果
dbiprof --help > dbiprof_help_output.txt 2>&1
CHECK_RESULT $? 0 0 "执行dbiprof --help命令失败"
# 验证帮助信息输出是否包含关键内容
LOG_INFO "验证帮助信息输出"
grep -i "usage\|help\|option" dbiprof_help_output.txt >/dev/null 2>&1
CHECK_RESULT $? 0 0 "帮助信息输出不符合预期"
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f dbiprof_help_output.txt
# 如果测试前未安装软件包,则在测试后卸载
if [ $package_installed -ne 0 ]; then
LOG_INFO "卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof软件包失败"
else
LOG_INFO "保持perl-DBI-dbiprof软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,127 +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-03
# @License : Mulan PSL v2
# @Desc : 使用-match参数进行键值匹配过滤
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试perl-DBI-dbiprof的-match参数功能"
# 检查软件包是否存在
LOG_INFO "检查yum源中是否存在perl-DBI-dbiprof软件包"
if ! dnf list available perl-DBI-dbiprof &>/dev/null; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 检查当前环境是否已安装
LOG_INFO "检查系统是否已安装perl-DBI-dbiprof"
if rpm -q perl-DBI-dbiprof &>/dev/null; then
LOG_INFO "检测到系统已安装perl-DBI-dbiprof测试完成后将保持安装状态"
already_installed=1
else
LOG_INFO "系统未安装perl-DBI-dbiprof将在测试过程中安装"
already_installed=0
fi
# 安装软件包(如果未安装)
if [ $already_installed -eq 0 ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
# 检查dbiprof命令是否支持-match参数
LOG_INFO "检查dbiprof命令是否支持-match参数"
if ! dbiprof --help 2>&1 | grep -q "\-\-match"; then
LOG_ERROR "dbiprof命令不支持-match参数"
if [ $already_installed -eq 0 ]; then
LOG_INFO "清理安装的软件包"
dnf remove -y perl-DBI-dbiprof
fi
exit 255
fi
# 创建测试用的profile文件
LOG_INFO "创建测试用的profile文件"
cat > test_profile.txt << EOF
DBI::ProfileData format 1.0
{
"statements": [
{
"statement": "SELECT * FROM users",
"total_time": 1.5,
"calls": 10
},
{
"statement": "UPDATE users SET name="test"",
"total_time": 0.8,
"calls": 5
},
{
"statement": "DELETE FROM logs",
"total_time": 2.1,
"calls": 3
}
]
}
EOF
CHECK_RESULT $? 0 0 "创建测试profile文件失败"
# 测试-match参数功能
LOG_INFO "测试使用-match参数进行键值匹配过滤"
LOG_INFO "测试1: 匹配包含"SELECT"的语句"
dbiprof --match "SELECT" test_profile.txt > select_output.txt 2>&1
CHECK_RESULT $? 0 0 "使用-match参数匹配SELECT失败"
grep -q "SELECT" select_output.txt
CHECK_RESULT $? 0 0 "输出中未找到匹配SELECT的内容"
LOG_INFO "测试2: 匹配包含"UPDATE"的语句"
dbiprof --match "UPDATE" test_profile.txt > update_output.txt 2>&1
CHECK_RESULT $? 0 0 "使用-match参数匹配UPDATE失败"
grep -q "UPDATE" update_output.txt
CHECK_RESULT $? 0 0 "输出中未找到匹配UPDATE的内容"
LOG_INFO "测试3: 匹配不存在的模式"
dbiprof --match "NOSUCHPATTERN" test_profile.txt > no_match_output.txt 2>&1
CHECK_RESULT $? 0 0 "使用-match参数匹配不存在的模式失败"
if [ -s no_match_output.txt ]; then
LOG_INFO "无匹配内容时输出正常"
else
LOG_ERROR "无匹配内容时输出异常"
CHECK_RESULT 1 0 0 "无匹配内容时输出异常"
fi
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_profile.txt select_output.txt update_output.txt no_match_output.txt
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 卸载软件包(如果是测试过程中安装的)
if [ $already_installed -eq 0 ]; then
LOG_INFO "卸载测试过程中安装的perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
else
LOG_INFO "保持系统原有的perl-DBI-dbiprof安装状态"
fi
LOG_INFO "perl-DBI-dbiprof的-match参数功能测试完成"
}
main "$@"

View File

@@ -1,117 +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-03
# @License : Mulan PSL v2
# @Desc : 组合使用-match和-case_sensitive参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试脚本开始
LOG_INFO "开始测试组合使用-match和-case_sensitive参数"
# 步骤1检查是否已安装perl-DBI-dbiprof软件包
LOG_INFO "步骤1检查是否已安装perl-DBI-dbiprof软件包"
rpm -q perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "perl-DBI-dbiprof已安装测试结束后将保持安装状态"
INSTALLED_BEFORE="yes"
else
LOG_INFO "perl-DBI-dbiprof未安装将在测试过程中安装并在结束后卸载"
INSTALLED_BEFORE="no"
fi
# 步骤2检查yum源中是否有perl-DBI-dbiprof软件包
LOG_INFO "步骤2检查yum源中是否有perl-DBI-dbiprof软件包"
dnf list available perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 步骤3如果未安装则安装perl-DBI-dbiprof软件包
if [ "$INSTALLED_BEFORE" = "no" ]; then
LOG_INFO "步骤3安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof软件包失败"
fi
# 步骤4验证dbiprof命令是否支持-match和-case_sensitive参数
LOG_INFO "步骤4验证dbiprof命令是否支持-match和-case_sensitive参数"
dbiprof --help | grep -q "\-\-match"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持--match参数"
if [ "$INSTALLED_BEFORE" = "no" ]; then
dnf remove -y perl-DBI-dbiprof
fi
exit 255
fi
dbiprof --help | grep -q "\-\-case_sensitive"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持--case_sensitive参数"
if [ "$INSTALLED_BEFORE" = "no" ]; then
dnf remove -y perl-DBI-dbiprof
fi
exit 255
fi
# 步骤5创建测试用的SQL日志文件
LOG_INFO "步骤5创建测试用的SQL日志文件"
cat > test_sql.log << EOF
SELECT * FROM users WHERE name = "Alice";
SELECT * FROM users WHERE name = "alice";
SELECT * FROM users WHERE name = "BOB";
SELECT * FROM users WHERE name = "bob";
EOF
CHECK_RESULT $? 0 0 "创建测试SQL日志文件失败"
# 步骤6测试组合使用-match和-case_sensitive参数区分大小写
LOG_INFO "步骤6测试组合使用-match和-case_sensitive参数区分大小写"
dbiprof --match "Alice" --case_sensitive test_sql.log > case_sensitive_output.txt 2>&1
CHECK_RESULT $? 0 0 "执行dbiprof命令失败区分大小写"
# 步骤7验证区分大小写的结果
LOG_INFO "步骤7验证区分大小写的结果"
grep -c "Alice" case_sensitive_output.txt > /dev/null
CHECK_RESULT $? 0 0 "在区分大小写模式下未找到匹配项"
# 步骤8测试组合使用-match和-case_sensitive参数不区分大小写
LOG_INFO "步骤8测试组合使用-match和-case_sensitive参数不区分大小写"
dbiprof --match "alice" --case_sensitive=0 test_sql.log > case_insensitive_output.txt 2>&1
CHECK_RESULT $? 0 0 "执行dbiprof命令失败不区分大小写"
# 步骤9验证不区分大小写的结果
LOG_INFO "步骤9验证不区分大小写的结果"
grep -c "alice" case_insensitive_output.txt > /dev/null
CHECK_RESULT $? 0 0 "在不区分大小写模式下未找到匹配项"
# 步骤10清理测试文件
LOG_INFO "步骤10清理测试文件"
rm -f test_sql.log case_sensitive_output.txt case_insensitive_output.txt
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 步骤11如果测试前未安装则卸载perl-DBI-dbiprof软件包
if [ "$INSTALLED_BEFORE" = "no" ]; then
LOG_INFO "步骤11卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof软件包失败"
fi
LOG_INFO "测试组合使用-match和-case_sensitive参数完成"
}
main "$@"

View File

@@ -1,107 +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-03
# @License : Mulan PSL v2
# @Desc : 组合使用-match和-exclude参数进行过滤
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试:组合使用-match和-exclude参数进行过滤"
# 检查软件包是否在yum源中
LOG_INFO "检查perl-DBI-dbiprof软件包是否在yum源中"
if ! dnf list available perl-DBI-dbiprof &>/dev/null; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 判断环境是否已安装
LOG_INFO "检查环境是否已安装perl-DBI-dbiprof"
if rpm -q perl-DBI-dbiprof &>/dev/null; then
LOG_INFO "环境已安装perl-DBI-dbiprof测试结束后将保持安装状态"
INSTALLED=1
else
LOG_INFO "环境未安装perl-DBI-dbiprof将安装软件包作为测试步骤"
INSTALLED=0
fi
# 如果未安装,则安装软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
# 测试dbiprof命令是否支持-match和-exclude参数
LOG_INFO "检查dbiprof命令是否支持-match和-exclude参数"
if ! dbiprof --help 2>&1 | grep -qE -- "-match|-exclude"; then
LOG_ERROR "dbiprof命令不支持-match或-exclude参数"
exit 255
fi
# 创建一个简单的测试文件
LOG_INFO "创建测试文件test_profile.txt"
cat > test_profile.txt << "EOF"
DBI::ProfileDump::Data=HASH(0x55b5d1c5c1d0)
Path = [ "foo", "bar" ]
Count = 10
Time = 0.123456
DBI::ProfileDump::Data=HASH(0x55b5d1c5c2b0)
Path = [ "foo", "baz" ]
Count = 20
Time = 0.234567
DBI::ProfileDump::Data=HASH(0x55b5d1c5c390)
Path = [ "qux", "quux" ]
Count = 30
Time = 0.345678
EOF
CHECK_RESULT $? 0 0 "创建测试文件失败"
# 组合使用-match和-exclude参数进行过滤
LOG_INFO "执行dbiprof命令组合使用-match和-exclude参数过滤"
dbiprof --match "foo" --exclude "baz" test_profile.txt > output.txt 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令执行失败"
# 检查输出是否符合预期
LOG_INFO "检查输出结果是否符合预期"
if grep -q "bar" output.txt && ! grep -q "baz" output.txt && ! grep -q "qux" output.txt; then
LOG_INFO "输出结果符合预期:包含"bar",不包含"baz"和"qux""
else
LOG_ERROR "输出结果不符合预期"
CHECK_RESULT 1 0 0 "输出结果验证失败"
fi
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_profile.txt output.txt
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 如果测试前未安装,则卸载软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
else
LOG_INFO "测试前已安装perl-DBI-dbiprof保持安装状态"
fi
LOG_INFO "测试完成:组合使用-match和-exclude参数进行过滤"
}
main "$@"

View File

@@ -1,88 +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-03
# @License : Mulan PSL v2
# @Desc : 组合使用-match、-exclude和-case_sensitive参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试perl-DBI-dbiprof的-match、-exclude和-case_sensitive参数组合使用功能"
LOG_INFO "步骤1: 检查yum源中是否存在perl-DBI-dbiprof软件包"
dnf list --available perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
LOG_INFO "软件包perl-DBI-dbiprof在yum源中存在"
LOG_INFO "步骤2: 检查当前环境中是否已安装perl-DBI-dbiprof"
rpm -qa | grep -q perl-DBI-dbiprof
if [ $? -eq 0 ]; then
LOG_INFO "perl-DBI-dbiprof已安装标记为已安装状态"
INSTALLED="true"
else
LOG_INFO "perl-DBI-dbiprof未安装标记为未安装状态"
INSTALLED="false"
fi
LOG_INFO "步骤3: 如果未安装则安装perl-DBI-dbiprof软件包"
if [ "$INSTALLED" = "false" ]; then
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
LOG_INFO "perl-DBI-dbiprof安装成功"
fi
LOG_INFO "步骤4: 验证dbiprof命令是否支持-match、-exclude和-case_sensitive参数"
dbiprof --help 2>&1 | grep -q -E "\-\-match|\-\-exclude|\-\-case_sensitive"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持-match、-exclude或-case_sensitive参数"
exit 255
fi
LOG_INFO "dbiprof命令支持-match、-exclude和-case_sensitive参数"
LOG_INFO "步骤5: 创建测试用的SQL文件用于dbiprof分析"
cat > test_query.sql << EOF
SELECT * FROM users WHERE name = "Alice";
SELECT * FROM users WHERE name = "alice";
SELECT * FROM products WHERE id = 1;
EOF
LOG_INFO "测试SQL文件创建完成"
LOG_INFO "步骤6: 执行dbiprof命令组合使用-match、-exclude和-case_sensitive参数进行测试"
dbiprof --match "SELECT.*users" --exclude "Alice" --case_sensitive test_query.sql > output.txt 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令执行失败"
LOG_INFO "步骤7: 验证输出结果是否符合预期"
grep -q "SELECT \* FROM users WHERE name = "alice";" output.txt
CHECK_RESULT $? 0 0 "输出结果中未找到预期的匹配项"
LOG_INFO "输出结果验证成功,符合预期"
LOG_INFO "步骤8: 清理测试过程中产生的临时文件"
rm -f test_query.sql output.txt
LOG_INFO "临时文件清理完成"
LOG_INFO "步骤9: 如果测试前未安装perl-DBI-dbiprof则在测试完成后卸载"
if [ "$INSTALLED" = "false" ]; then
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
LOG_INFO "perl-DBI-dbiprof卸载成功环境已恢复"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,164 +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-03
# @License : Mulan PSL v2
# @Desc : 使用-number参数指定显示前N个结果
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义日志函数
LOG_INFO() {
echo "[INFO] $1"
}
LOG_ERROR() {
echo "[ERROR] $1"
}
# 定义软件包名称
PACKAGE_NAME="perl-DBI-dbiprof"
# 步骤1: 检查yum源中是否存在指定的软件包
LOG_INFO "步骤1: 检查yum源中是否存在指定的软件包"
dnf list available $PACKAGE_NAME > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $PACKAGE_NAME 在yum源中不存在"
exit 255
fi
# 步骤2: 检查是否已经安装软件包
LOG_INFO "步骤2: 检查是否已经安装软件包"
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
# 步骤3: 如果未安装,则安装软件包
if [ "$INSTALLED_BEFORE" = "no" ]; then
LOG_INFO "步骤3: 安装软件包 $PACKAGE_NAME"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
fi
# 步骤4: 检查dbiprof命令是否存在
LOG_INFO "步骤4: 检查dbiprof命令是否存在"
which dbiprof > /dev/null 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令不存在"
# 步骤5: 检查-number参数是否支持
LOG_INFO "步骤5: 检查-number参数是否支持"
dbiprof --help 2>&1 | grep -q "\-number"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持-number参数"
exit 255
fi
# 步骤6: 创建测试用的DBI配置文件
LOG_INFO "步骤6: 创建测试用的DBI配置文件"
TEST_CONFIG_FILE="/tmp/test_dbiprof_config.txt"
cat > $TEST_CONFIG_FILE << EOF
DBI_PROFILE=2/DBI::ProfileDumper
EOF
CHECK_RESULT $? 0 0 "创建DBI配置文件失败"
# 步骤7: 创建测试用的Perl脚本
LOG_INFO "步骤7: 创建测试用的Perl脚本"
TEST_PERL_SCRIPT="/tmp/test_dbiprof.pl"
cat > $TEST_PERL_SCRIPT << "EOF"
#!/usr/bin/perl
use DBI;
my $dbh = DBI->connect("dbi:ExampleP:", "", "", {AutoCommit=>0});
for (my $i=0; $i<10; $i++) {
my $sth = $dbh->prepare("SELECT * FROM foo WHERE id=?");
$sth->execute($i);
while (my @row = $sth->fetchrow_array) {
# do nothing
}
$sth->finish;
}
$dbh->disconnect;
EOF
chmod +x $TEST_PERL_SCRIPT
CHECK_RESULT $? 0 0 "创建Perl测试脚本失败"
# 步骤8: 运行Perl脚本生成性能数据
LOG_INFO "步骤8: 运行Perl脚本生成性能数据"
DBI_PROFILE_FILE="/tmp/test_dbiprof.out"
export DBI_PROFILE_FILE
perl $TEST_PERL_SCRIPT > /dev/null 2>&1
CHECK_RESULT $? 0 0 "运行Perl脚本生成性能数据失败"
# 步骤9: 使用-number参数测试显示前3个结果
LOG_INFO "步骤9: 使用-number参数测试显示前3个结果"
dbiprof -number 3 $DBI_PROFILE_FILE > /tmp/dbiprof_output.txt 2>&1
CHECK_RESULT $? 0 0 "使用-number参数运行dbiprof失败"
# 步骤10: 验证输出结果包含指定数量的条目
LOG_INFO "步骤10: 验证输出结果包含指定数量的条目"
LINE_COUNT=$(grep -c "^[0-9]" /tmp/dbiprof_output.txt)
if [ $LINE_COUNT -le 3 ]; then
LOG_INFO "输出结果包含 $LINE_COUNT 个条目,符合-number参数指定"
CHECK_RESULT 0 0 0 "输出结果数量验证失败"
else
LOG_ERROR "输出结果包含 $LINE_COUNT 个条目,超过-number参数指定的3个"
CHECK_RESULT 1 0 0 "输出结果数量验证失败"
fi
# 步骤11: 测试-number参数为0的情况
LOG_INFO "步骤11: 测试-number参数为0的情况"
dbiprof -number 0 $DBI_PROFILE_FILE > /tmp/dbiprof_output_zero.txt 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "-number参数为0时命令执行成功"
CHECK_RESULT 0 0 0 "-number参数为0时应该失败但实际成功"
else
LOG_INFO "-number参数为0时命令执行失败符合预期"
CHECK_RESULT 0 0 0 "-number参数为0测试失败"
fi
# 步骤12: 测试-number参数为负数的情况
LOG_INFO "步骤12: 测试-number参数为负数的情况"
dbiprof -number -1 $DBI_PROFILE_FILE > /tmp/dbiprof_output_negative.txt 2>&1
if [ $? -eq 0 ]; then
LOG_ERROR "-number参数为负数时命令执行成功不符合预期"
CHECK_RESULT 1 0 0 "-number参数为负数测试失败"
else
LOG_INFO "-number参数为负数时命令执行失败符合预期"
CHECK_RESULT 0 0 0 "-number参数为负数测试失败"
fi
# 步骤13: 清理临时文件
LOG_INFO "步骤13: 清理临时文件"
rm -f $TEST_CONFIG_FILE $TEST_PERL_SCRIPT $DBI_PROFILE_FILE /tmp/dbiprof_output*.txt
CHECK_RESULT $? 0 0 "清理临时文件失败"
# 步骤14: 如果测试前未安装,则卸载软件包
if [ "$INSTALLED_BEFORE" = "no" ]; then
LOG_INFO "步骤14: 卸载软件包 $PACKAGE_NAME"
dnf remove -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
else
LOG_INFO "步骤14: 测试前已安装软件包,保持安装状态"
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -1,110 +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-03
# @License : Mulan PSL v2
# @Desc : 组合使用-number和-reverse参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查环境是否已安装perl-DBI-dbiprof软件包
LOG_INFO "检查环境是否已安装perl-DBI-dbiprof软件包"
rpm -q perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "环境已安装perl-DBI-dbiprof测试结束后将保持安装状态"
INSTALLED=1
else
LOG_INFO "环境未安装perl-DBI-dbiprof将在测试前安装测试结束后卸载"
INSTALLED=0
fi
# 检查yum源中是否有perl-DBI-dbiprof软件包
LOG_INFO "检查yum源中是否有perl-DBI-dbiprof软件包"
dnf list available perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
# 验证dbiprof命令是否存在
LOG_INFO "验证dbiprof命令是否存在"
which dbiprof > /dev/null 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令不存在"
# 检查dbiprof命令是否支持-number参数
LOG_INFO "检查dbiprof命令是否支持-number参数"
dbiprof --help 2>&1 | grep -q "\-number"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持-number参数"
exit 255
fi
# 检查dbiprof命令是否支持-reverse参数
LOG_INFO "检查dbiprof命令是否支持-reverse参数"
dbiprof --help 2>&1 | grep -q "\-reverse"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持-reverse参数"
exit 255
fi
# 创建测试用的trace文件
LOG_INFO "创建测试用的trace文件"
cat > test_trace.txt << EOF
# DBI::Profile data
+ 1 0.001
+ 2 0.002
+ 3 0.003
EOF
CHECK_RESULT $? 0 0 "创建trace文件失败"
# 组合使用-number和-reverse参数进行测试
LOG_INFO "组合使用-number和-reverse参数进行测试"
dbiprof -number 2 -reverse test_trace.txt > output.txt 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令执行失败"
# 验证输出结果
LOG_INFO "验证输出结果"
if [ -s output.txt ]; then
LOG_INFO "dbiprof命令成功执行并产生输出"
cat output.txt
else
LOG_ERROR "dbiprof命令未产生输出"
exit 1
fi
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f test_trace.txt output.txt
CHECK_RESULT $? 0 0 "清理临时文件失败"
# 如果测试前未安装,则卸载软件包
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,101 +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-03
# @License : Mulan PSL v2
# @Desc : 组合使用-number和-sort参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试组合使用-number和-sort参数"
LOG_INFO "检查环境是否已安装perl-DBI-dbiprof软件包"
# 检查软件包是否已安装
if rpm -q perl-DBI-dbiprof >/dev/null 2>&1; then
LOG_INFO "检测到perl-DBI-dbiprof已安装测试结束后将保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "未检测到perl-DBI-dbiprof安装测试结束后将卸载"
INSTALLED_BEFORE=false
fi
# 检查yum源中是否有该软件包
LOG_INFO "检查yum源中是否存在perl-DBI-dbiprof软件包"
if ! dnf list available perl-DBI-dbiprof >/dev/null 2>&1; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
# 检查dbiprof命令是否存在
LOG_INFO "检查dbiprof命令是否存在"
if ! command -v dbiprof >/dev/null 2>&1; then
LOG_ERROR "dbiprof命令不存在"
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "清理环境,卸载已安装的软件包"
dnf remove -y perl-DBI-dbiprof
fi
exit 255
fi
# 检查-number参数是否存在
LOG_INFO "检查dbiprof命令是否支持-number参数"
if ! dbiprof --help 2>&1 | grep -q -- "-number"; then
LOG_ERROR "dbiprof命令不支持-number参数"
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "清理环境,卸载已安装的软件包"
dnf remove -y perl-DBI-dbiprof
fi
exit 255
fi
# 检查-sort参数是否存在
LOG_INFO "检查dbiprof命令是否支持-sort参数"
if ! dbiprof --help 2>&1 | grep -q -- "-sort"; then
LOG_ERROR "dbiprof命令不支持-sort参数"
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "清理环境,卸载已安装的软件包"
dnf remove -y perl-DBI-dbiprof
fi
exit 255
fi
# 测试组合使用-number和-sort参数
LOG_INFO "测试组合使用-number和-sort参数"
dbiprof -number 5 -sort total_time
CHECK_RESULT $? 0 0 "组合使用-number和-sort参数执行失败"
LOG_INFO "测试组合使用-number和-sort参数成功"
# 清理环境
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "清理环境,卸载测试安装的软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
else
LOG_INFO "环境已恢复,保持软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,104 +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-03
# @License : Mulan PSL v2
# @Desc : 组合使用-number、-sort和-reverse参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试组合使用-number、-sort和-reverse参数"
LOG_INFO "检查是否已安装perl-DBI-dbiprof软件包"
rpm -q perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "软件包已安装,测试结束后保持安装状态"
INSTALLED=true
else
LOG_INFO "软件包未安装,将在测试前安装"
INSTALLED=false
fi
LOG_INFO "检查yum源中是否存在perl-DBI-dbiprof软件包"
dnf list available perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
if [ "$INSTALLED" = false ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
LOG_INFO "检查dbiprof命令是否支持-number参数"
dbiprof --help 2>&1 | grep -q -- "-number"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持-number参数"
exit 255
fi
LOG_INFO "检查dbiprof命令是否支持-sort参数"
dbiprof --help 2>&1 | grep -q -- "-sort"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持-sort参数"
exit 255
fi
LOG_INFO "检查dbiprof命令是否支持-reverse参数"
dbiprof --help 2>&1 | grep -q -- "-reverse"
if [ $? -ne 0 ]; then
LOG_ERROR "dbiprof命令不支持-reverse参数"
exit 255
fi
LOG_INFO "创建测试用的profile文件"
cat > test_profile.txt << EOF
1.2.3.4: SELECT * FROM users WHERE id=1
1.2.3.4: SELECT * FROM products WHERE price>100
1.2.3.5: UPDATE orders SET status="shipped" WHERE id=5
EOF
CHECK_RESULT $? 0 0 "创建测试profile文件失败"
LOG_INFO "执行dbiprof命令组合使用-number、-sort和-reverse参数"
dbiprof -number 2 -sort total -reverse test_profile.txt > output.txt 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令执行失败"
LOG_INFO "检查输出结果是否符合预期"
lines=$(wc -l < output.txt)
if [ "$lines" -ge 2 ]; then
LOG_INFO "输出结果符合预期,显示了排序后的数据"
else
LOG_ERROR "输出结果不符合预期"
exit 1
fi
LOG_INFO "清理临时文件"
rm -f test_profile.txt output.txt
CHECK_RESULT $? 0 0 "清理临时文件失败"
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
else
LOG_INFO "保持perl-DBI-dbiprof软件包安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,100 +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-03
# @License : Mulan PSL v2
# @Desc : 使用-reverse参数反转排序顺序
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 环境检查判断是否已安装perl-DBI-dbiprof
LOG_INFO "检查是否已安装perl-DBI-dbiprof软件包"
if dnf list installed perl-DBI-dbiprof &>/dev/null; then
LOG_INFO "perl-DBI-dbiprof已安装标记为已安装状态"
INSTALLED=true
else
LOG_INFO "perl-DBI-dbiprof未安装标记为未安装状态"
INSTALLED=false
fi
# 检查yum源中是否存在perl-DBI-dbiprof软件包
LOG_INFO "检查yum源中是否存在perl-DBI-dbiprof软件包"
if ! dnf list available perl-DBI-dbiprof &>/dev/null; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "开始安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
LOG_INFO "perl-DBI-dbiprof安装成功"
fi
# 检查dbiprof命令是否支持-reverse参数
LOG_INFO "检查dbiprof命令是否支持-reverse参数"
if ! dbiprof --help 2>&1 | grep -q -- "-reverse"; then
LOG_ERROR "dbiprof命令不支持-reverse参数"
exit 255
fi
# 创建测试用的profile文件
LOG_INFO "创建测试用的profile文件"
cat > test_profile.txt << EOF
# DBI Profile Data
# 2024-01-01 00:00:00
# Total time: 1.234567 seconds
# Method, Calls, TotalTime, AvgTime
execute, 10, 0.123456, 0.012345
prepare, 5, 0.045678, 0.009135
fetch, 20, 0.078901, 0.003945
EOF
CHECK_RESULT $? 0 0 "创建测试profile文件失败"
# 测试使用-reverse参数反转排序顺序
LOG_INFO "测试使用-reverse参数反转排序顺序"
dbiprof --reverse test_profile.txt > output.txt 2>&1
CHECK_RESULT $? 0 0 "执行dbiprof --reverse命令失败"
# 验证输出包含预期的反转排序内容
LOG_INFO "验证输出结果"
if grep -q "fetch.*20.*0.078901" output.txt && grep -q "prepare.*5.*0.045678" output.txt && grep -q "execute.*10.*0.123456" output.txt; then
LOG_INFO "输出结果符合反转排序预期"
else
LOG_ERROR "输出结果不符合反转排序预期"
CHECK_RESULT 1 0 0 "输出验证失败"
fi
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_profile.txt output.txt
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 环境恢复:如果测试前未安装,则卸载软件包
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
LOG_INFO "perl-DBI-dbiprof卸载成功"
else
LOG_INFO "保持perl-DBI-dbiprof已安装状态"
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -1,109 +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-03
# @License : Mulan PSL v2
# @Desc : 使用-sort参数按指定字段排序
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:使用-sort参数按指定字段排序"
# 检查软件包是否在yum源中
LOG_INFO "检查perl-DBI-dbiprof软件包是否在yum源中"
if ! dnf list available perl-DBI-dbiprof &>/dev/null; then
LOG_ERROR "yum源中未找到perl-DBI-dbiprof软件包"
exit 255
fi
# 检查是否已安装
LOG_INFO "检查perl-DBI-dbiprof是否已安装"
if rpm -q perl-DBI-dbiprof &>/dev/null; then
LOG_INFO "perl-DBI-dbiprof已安装测试后保持安装状态"
already_installed=true
else
LOG_INFO "perl-DBI-dbiprof未安装将安装作为测试步骤"
already_installed=false
fi
# 如果未安装,则安装软件包
if [ "$already_installed" = false ]; then
LOG_INFO "安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
# 检查dbiprof命令是否存在
LOG_INFO "检查dbiprof命令是否存在"
if ! command -v dbiprof &>/dev/null; then
LOG_ERROR "dbiprof命令不存在"
exit 255
fi
# 检查-sort参数是否支持
LOG_INFO "检查-sort参数是否支持"
if ! dbiprof --help 2>&1 | grep -q -- "-sort"; then
LOG_ERROR "dbiprof命令不支持-sort参数"
exit 255
fi
# 创建测试数据文件
LOG_INFO "创建测试数据文件"
cat > test_data.txt << EOF
Query,Time,Calls
SELECT * FROM users,0.5,10
UPDATE accounts SET balance=100,1.2,5
INSERT INTO logs VALUES ("test"),0.3,20
EOF
CHECK_RESULT $? 0 0 "创建测试数据文件失败"
# 测试-sort参数按Time字段排序
LOG_INFO "测试-sort参数按Time字段排序"
dbiprof -sort Time test_data.txt > sorted_by_time.txt
CHECK_RESULT $? 0 0 "使用-sort参数按Time字段排序失败"
# 验证排序结果
LOG_INFO "验证排序结果"
expected_order="INSERT INTO logs VALUES ("test")
SELECT * FROM users
UPDATE accounts SET balance=100"
actual_order=$(awk -F"," "NR>1 {print $1}" sorted_by_time.txt | tr "\n" " " | sed "s/ $//")
if [ "$(echo "$actual_order" | tr " " "\n")" != "$expected_order" ]; then
LOG_ERROR "排序结果不符合预期"
CHECK_RESULT 1 0 0 "排序验证失败"
else
LOG_INFO "排序结果验证成功"
CHECK_RESULT 0 0 0 ""
fi
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_data.txt sorted_by_time.txt
CHECK_RESULT $? 0 0 "清理测试文件失败"
# 如果测试前未安装,则卸载软件包
if [ "$already_installed" = false ]; then
LOG_INFO "卸载perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
else
LOG_INFO "保持perl-DBI-dbiprof安装状态"
fi
LOG_INFO "测试完成:使用-sort参数按指定字段排序"
}
main "$@"

View File

@@ -1,106 +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-03
# @License : Mulan PSL v2
# @Desc : 组合使用-sort和-reverse参数
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试组合使用-sort和-reverse参数"
# 定义软件包名称
PACKAGE_NAME="perl-DBI-dbiprof"
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 "步骤2: 检查系统是否已安装${PACKAGE_NAME}"
if rpm -q ${PACKAGE_NAME} &>/dev/null; then
INSTALLED_BEFORE="yes"
LOG_INFO "软件包${PACKAGE_NAME}已安装"
else
INSTALLED_BEFORE="no"
LOG_INFO "软件包${PACKAGE_NAME}未安装,将进行安装"
fi
if [[ ${INSTALLED_BEFORE} == "no" ]]; then
LOG_INFO "步骤3: 安装软件包${PACKAGE_NAME}"
dnf install -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "安装软件包${PACKAGE_NAME}失败"
fi
LOG_INFO "步骤4: 验证dbiprof命令是否存在"
if ! command -v dbiprof &>/dev/null; then
LOG_ERROR "dbiprof命令未找到"
exit 255
fi
LOG_INFO "步骤5: 检查dbiprof命令是否支持-sort参数"
if ! dbiprof --help 2>&1 | grep -q -- "-sort"; then
LOG_ERROR "dbiprof命令不支持-sort参数"
exit 255
fi
LOG_INFO "步骤6: 检查dbiprof命令是否支持-reverse参数"
if ! dbiprof --help 2>&1 | grep -q -- "-reverse"; then
LOG_ERROR "dbiprof命令不支持-reverse参数"
exit 255
fi
LOG_INFO "步骤7: 创建测试用的profile文件用于测试"
TEST_PROFILE=$(mktemp /tmp/test_profile.XXXXXX)
cat > ${TEST_PROFILE} << "EOF"
# DBI::ProfileData
Path: [ "main", "execute" ]
Program: test.pl
{
"main::execute" => {
"count" => 10,
"total_time" => "0.500000"
}
}
EOF
CHECK_RESULT $? 0 0 "创建测试profile文件失败"
LOG_INFO "步骤8: 组合使用-sort和-reverse参数执行dbiprof命令"
dbiprof -sort total_time -reverse ${TEST_PROFILE} > /tmp/dbiprof_output.txt 2>&1
CHECK_RESULT $? 0 0 "dbiprof命令执行失败"
LOG_INFO "步骤9: 验证输出结果非空"
[[ -s /tmp/dbiprof_output.txt ]]
CHECK_RESULT $? 0 0 "dbiprof命令未产生输出"
LOG_INFO "步骤10: 清理临时文件"
rm -f ${TEST_PROFILE} /tmp/dbiprof_output.txt
if [[ ${INSTALLED_BEFORE} == "no" ]]; then
LOG_INFO "步骤11: 卸载测试安装的软件包${PACKAGE_NAME}"
dnf remove -y ${PACKAGE_NAME}
CHECK_RESULT $? 0 0 "卸载软件包${PACKAGE_NAME}失败"
else
LOG_INFO "步骤11: 保持软件包${PACKAGE_NAME}的安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,72 +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-03
# @License : Mulan PSL v2
# @Desc : 使用-version参数打印版本号并退出
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "1. 检查perl-DBI-dbiprof软件包是否在yum源中"
dnf list available perl-DBI-dbiprof > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "软件包perl-DBI-dbiprof不在yum源中"
exit 255
fi
LOG_INFO "2. 检查dbiprof命令是否已安装"
if command -v dbiprof > /dev/null 2>&1; then
LOG_INFO "dbiprof命令已安装标记为已存在安装"
INSTALLED_BEFORE="true"
else
LOG_INFO "dbiprof命令未安装标记为未安装"
INSTALLED_BEFORE="false"
fi
if [ "$INSTALLED_BEFORE" = "false" ]; then
LOG_INFO "3. 安装perl-DBI-dbiprof软件包"
dnf install -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "安装perl-DBI-dbiprof失败"
fi
LOG_INFO "4. 验证dbiprof命令的-version参数"
dbiprof -version > /dev/null 2>&1
if [ $? -eq 255 ]; then
LOG_ERROR "dbiprof命令不支持-version参数"
exit 255
fi
LOG_INFO "5. 执行dbiprof -version命令并检查输出"
VERSION_OUTPUT=$(dbiprof -version 2>&1)
CHECK_RESULT $? 0 0 "执行dbiprof -version失败"
echo "$VERSION_OUTPUT" | grep -q "version"
CHECK_RESULT $? 0 0 "版本输出中未找到version关键字"
LOG_INFO "6. 清理环境"
if [ "$INSTALLED_BEFORE" = "false" ]; then
LOG_INFO "卸载之前安装的perl-DBI-dbiprof软件包"
dnf remove -y perl-DBI-dbiprof
CHECK_RESULT $? 0 0 "卸载perl-DBI-dbiprof失败"
else
LOG_INFO "环境已安装,保持安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,227 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 DBI->connect 数据库连接
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试DBI->connect数据库连接功能
LOG_INFO "开始测试DBI->connect数据库连接功能"
# 检查Perl DBI模块是否已安装
LOG_INFO "检查Perl DBI模块是否已安装"
if rpm -q perl-DBI &>/dev/null; then
LOG_INFO "Perl DBI模块已安装"
INSTALLED_BEFORE=true
else
LOG_INFO "Perl DBI模块未安装"
INSTALLED_BEFORE=false
fi
# 检查yum源中是否有perl-DBI软件包
LOG_INFO "检查yum源中是否有perl-DBI软件包"
if ! dnf list available perl-DBI &>/dev/null; then
LOG_ERROR "yum源中未找到perl-DBI软件包"
exit 255
fi
# 如果未安装则安装perl-DBI
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "安装perl-DBI软件包"
dnf install -y perl-DBI
CHECK_RESULT $? 0 0 "安装perl-DBI失败"
fi
# 检查Perl是否已安装
LOG_INFO "检查Perl是否已安装"
if ! command -v perl &>/dev/null; then
LOG_INFO "安装Perl"
dnf install -y perl
CHECK_RESULT $? 0 0 "安装Perl失败"
fi
# 测试DBI->connect基本连接功能
LOG_INFO "测试DBI->connect基本连接功能"
cat > /tmp/test_dbi_connect.pl << "EOF"
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh;
eval {
# 尝试连接到内存中的SQLite数据库
$dbh = DBI->connect("dbi:SQLite:dbname=:memory:", "", "", {
PrintError => 0,
RaiseError => 1
});
};
if ($@) {
print "DBI连接失败: $@\n";
exit 1;
} else {
print "DBI连接成功\n";
# 测试简单的SQL查询
my $sth = $dbh->prepare("SELECT 1+1 as result");
$sth->execute();
while (my @row = $sth->fetchrow_array()) {
print "查询结果: @row\n";
}
$sth->finish();
$dbh->disconnect();
exit 0;
}
EOF
# 执行Perl测试脚本
LOG_INFO "执行DBI连接测试脚本"
perl /tmp/test_dbi_connect.pl
CHECK_RESULT $? 0 0 "DBI->connect连接测试失败"
# 测试带参数的连接
LOG_INFO "测试带参数的DBI连接"
cat > /tmp/test_dbi_connect_params.pl << "EOF"
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh;
eval {
# 尝试连接到内存中的SQLite数据库带更多参数
$dbh = DBI->connect(
"dbi:SQLite:dbname=:memory:",
"",
"",
{
PrintError => 0,
RaiseError => 1,
AutoCommit => 1,
ChopBlanks => 1,
InactiveDestroy => 1
}
);
};
if ($@) {
print "带参数DBI连接失败: $@\n";
exit 1;
} else {
print "带参数DBI连接成功\n";
# 创建测试表
$dbh->do("CREATE TABLE test (id INTEGER, name TEXT)");
# 插入测试数据
my $sth = $dbh->prepare("INSERT INTO test (id, name) VALUES (?, ?)");
$sth->execute(1, "test1");
$sth->execute(2, "test2");
# 查询数据
$sth = $dbh->prepare("SELECT * FROM test ORDER BY id");
$sth->execute();
my $row_count = 0;
while (my $row = $sth->fetchrow_hashref()) {
$row_count++;
print "$row_count: id=$row->{id}, name=$row->{name}\n";
}
$sth->finish();
$dbh->disconnect();
if ($row_count == 2) {
print "数据操作测试成功\n";
exit 0;
} else {
print "数据操作测试失败期望2行实际$row_count行\n";
exit 1;
}
}
EOF
# 执行带参数的连接测试
LOG_INFO "执行带参数的DBI连接测试"
perl /tmp/test_dbi_connect_params.pl
CHECK_RESULT $? 0 0 "带参数DBI连接测试失败"
# 测试连接错误处理
LOG_INFO "测试DBI连接错误处理"
cat > /tmp/test_dbi_connect_error.pl << "EOF"
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh;
eval {
# 尝试连接到不存在的数据库文件
$dbh = DBI->connect("dbi:SQLite:dbname=/tmp/nonexistent.db", "", "", {
PrintError => 0,
RaiseError => 1
});
};
if ($@) {
print "连接错误处理测试成功: 正确捕获到错误\n";
exit 0;
} else {
print "连接错误处理测试失败: 应该失败但实际成功了\n";
$dbh->disconnect() if $dbh;
exit 1;
}
EOF
# 执行错误处理测试
LOG_INFO "执行DBI连接错误处理测试"
perl /tmp/test_dbi_connect_error.pl
CHECK_RESULT $? 0 0 "DBI连接错误处理测试失败"
# 清理临时文件
LOG_INFO "清理临时测试文件"
rm -f /tmp/test_dbi_connect.pl /tmp/test_dbi_connect_params.pl /tmp/test_dbi_connect_error.pl
# 环境恢复
LOG_INFO "开始环境恢复"
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "卸载测试安装的perl-DBI软件包"
dnf remove -y perl-DBI
CHECK_RESULT $? 0 0 "卸载perl-DBI失败"
# 检查是否安装了Perl如果是本次测试安装的则卸载
if rpm -q perl &>/dev/null; then
# 检查是否有其他依赖Perl的软件包
if ! rpm -q --whatrequires perl | grep -v "^perl-" &>/dev/null; then
LOG_INFO "卸载测试安装的Perl"
dnf remove -y perl
else
LOG_INFO "有其他软件包依赖Perl保留Perl安装"
fi
fi
else
LOG_INFO "保持原有的perl-DBI安装状态"
fi
LOG_INFO "DBI->connect数据库连接功能测试完成"
}
main "$@"

View File

@@ -1,118 +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-03
# @License : Mulan PSL v2
# @Desc : 测试数据库连接断开
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试数据库连接断开
# 定义软件包名称
PACKAGE_NAME="perl-DBI"
# 检查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
ALREADY_INSTALLED="true"
LOG_INFO "${PACKAGE_NAME}已安装"
else
ALREADY_INSTALLED="false"
LOG_INFO "${PACKAGE_NAME}未安装,将在测试中安装"
fi
# 如果未安装,则安装软件包
if [ "${ALREADY_INSTALLED}" = "false" ]; then
LOG_INFO "安装${PACKAGE_NAME}软件包"
dnf install -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装${PACKAGE_NAME}失败"
fi
# 验证perl命令是否可用
LOG_INFO "验证perl命令是否可用"
which perl > /dev/null 2>&1
CHECK_RESULT $? 0 0 "perl命令不可用"
# 验证DBI模块是否可用
LOG_INFO "验证DBI模块是否可用"
perl -e "use DBI;" > /dev/null 2>&1
CHECK_RESULT $? 0 0 "DBI模块加载失败"
# 测试数据库连接断开功能
LOG_INFO "测试数据库连接断开功能"
# 创建一个简单的perl脚本测试连接和断开
TEST_SCRIPT=$(mktemp /tmp/test_dbi_XXXXXX.pl)
cat > ${TEST_SCRIPT} << "EOF"
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
# 尝试连接到不存在的数据库(仅测试连接对象创建和断开)
my $dbh;
eval {
# 尝试创建连接对象(使用无效连接字符串)
$dbh = DBI->connect("dbi:mysql:database=nonexistent;host=localhost", "test", "test");
};
if ($@) {
# 连接失败是预期的,因为数据库不存在
print "连接失败(预期):$@\n";
exit(0);
}
if ($dbh) {
# 如果连接成功,则断开连接
$dbh->disconnect();
print "连接已断开(预期)\n";
exit(0);
} else {
print "连接对象未创建\n";
exit(1);
}
EOF
# 执行测试脚本
perl ${TEST_SCRIPT} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "数据库连接断开测试失败"
# 清理临时文件
rm -f ${TEST_SCRIPT}
LOG_INFO "清理临时文件"
# 环境恢复
LOG_INFO "恢复测试环境"
if [ "${ALREADY_INSTALLED}" = "false" ]; then
LOG_INFO "卸载${PACKAGE_NAME}软件包"
dnf remove -y ${PACKAGE_NAME} > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载${PACKAGE_NAME}失败"
else
LOG_INFO "保持${PACKAGE_NAME}安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,69 +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-03
# @License : Mulan PSL v2
# @Desc : 测试执行简单 SQL 查询语句
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:测试执行简单 SQL 查询语句"
# 检查是否已安装 perl-DBI 包
LOG_INFO "检查是否已安装 perl-DBI 包"
rpm -q perl-DBI > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "perl-DBI 已安装,脚本结束后保持安装状态"
INSTALLED=1
else
LOG_INFO "perl-DBI 未安装,将在测试过程中安装"
INSTALLED=0
fi
# 检查 yum 源中是否有 perl-DBI 包
LOG_INFO "检查 yum 源中是否有 perl-DBI 包"
dnf list available perl-DBI > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum 源中未找到 perl-DBI 包,退出"
exit 255
fi
# 如果未安装,则安装 perl-DBI
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装 perl-DBI 包"
dnf install -y perl-DBI
CHECK_RESULT $? 0 0 "安装 perl-DBI 失败"
fi
# 测试执行简单 SQL 查询语句
LOG_INFO "测试执行简单 SQL 查询语句"
perl -e "use DBI; my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:", "", "", {RaiseError => 1}); my $sth = $dbh->prepare("CREATE TABLE test (id INT, name TEXT)"); $sth->execute(); $sth = $dbh->prepare("INSERT INTO test VALUES (1, \"test\")"); $sth->execute(); $sth = $dbh->prepare("SELECT * FROM test"); $sth->execute(); my @row = $sth->fetchrow_array(); print "Result: @row\n"; $dbh->disconnect();"
CHECK_RESULT $? 0 0 "执行简单 SQL 查询语句失败"
# 清理环境
LOG_INFO "清理环境"
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载 perl-DBI 包"
dnf remove -y perl-DBI
CHECK_RESULT $? 0 0 "卸载 perl-DBI 失败"
else
LOG_INFO "保持 perl-DBI 安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,122 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 fetchrow_array 等方法获取结果
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试脚本开始
LOG_INFO "1. 检查测试环境是否已安装perl-DBI软件包"
if dnf list installed perl-DBI &> /dev/null; then
LOG_INFO "perl-DBI软件包已安装测试结束后将保持安装状态"
ENV_INSTALLED=true
else
LOG_INFO "perl-DBI软件包未安装将在测试过程中安装并在测试结束后卸载"
ENV_INSTALLED=false
fi
LOG_INFO "2. 检查yum源中是否存在perl-DBI软件包"
if ! dnf list available perl-DBI &> /dev/null; then
LOG_ERROR "yum源中未找到perl-DBI软件包"
exit 255
fi
LOG_INFO "3. 检查fetchrow_array方法是否被支持"
if ! perl -e "use DBI;" &> /dev/null; then
LOG_ERROR "DBI模块未加载无法检查fetchrow_array方法"
exit 255
fi
LOG_INFO "4. 安装perl-DBI软件包如果未安装"
if [ "$ENV_INSTALLED" = false ]; then
dnf install -y perl-DBI
CHECK_RESULT $? 0 0 "安装perl-DBI软件包失败"
fi
LOG_INFO "5. 创建测试Perl脚本用于测试fetchrow_array等方法"
cat > test_fetchrow.pl << "EOF"
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect("DBI:SQLite:dbname=:memory:", "", "", { RaiseError => 1, AutoCommit => 1 });
# 创建测试表
$dbh->do("CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)");
# 插入测试数据
$dbh->do("INSERT INTO test_table (name) VALUES ("Alice")");
$dbh->do("INSERT INTO test_table (name) VALUES ("Bob")");
# 测试fetchrow_array方法
my $sth = $dbh->prepare("SELECT * FROM test_table");
$sth->execute();
my @row = $sth->fetchrow_array();
if (@row && $row[0] == 1 && $row[1] eq "Alice") {
print "fetchrow_array方法测试通过\n";
} else {
print "fetchrow_array方法测试失败\n";
exit 1;
}
# 测试fetchrow_arrayref方法
@row = ();
$sth->execute();
my $row_ref = $sth->fetchrow_arrayref();
if ($row_ref && $row_ref->[0] == 1 && $row_ref->[1] eq "Alice") {
print "fetchrow_arrayref方法测试通过\n";
} else {
print "fetchrow_arrayref方法测试失败\n";
exit 1;
}
# 测试fetchrow_hashref方法
$sth->execute();
my $hash_ref = $sth->fetchrow_hashref();
if ($hash_ref && $hash_ref->{id} == 1 && $hash_ref->{name} eq "Alice") {
print "fetchrow_hashref方法测试通过\n";
} else {
print "fetchrow_hashref方法测试失败\n";
exit 1;
}
$dbh->disconnect();
EOF
LOG_INFO "6. 执行Perl脚本测试fetchrow_array等方法"
perl test_fetchrow.pl
CHECK_RESULT $? 0 0 "fetchrow_array等方法测试失败"
LOG_INFO "7. 清理临时Perl脚本"
rm -f test_fetchrow.pl
LOG_INFO "8. 恢复测试环境"
if [ "$ENV_INSTALLED" = false ]; then
LOG_INFO "卸载在测试过程中安装的perl-DBI软件包"
dnf remove -y perl-DBI
CHECK_RESULT $? 0 0 "卸载perl-DBI软件包失败"
else
LOG_INFO "测试环境已恢复perl-DBI软件包保持安装状态"
fi
LOG_INFO "测试脚本执行完成"
}
main "$@"

View File

@@ -1,117 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 DBI 错误处理机制
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 初始化日志函数(如果未定义)
if ! type LOG_INFO &>/dev/null; then
LOG_INFO() { echo "[INFO] $*"; }
fi
if ! type LOG_ERROR &>/dev/null; then
LOG_ERROR() { echo "[ERROR] $*"; }
fi
# 检查DBI包是否在yum源中
LOG_INFO "检查perl-DBI包是否在yum源中"
if ! dnf list available perl-DBI &>/dev/null; then
LOG_ERROR "yum源中未找到perl-DBI包"
exit 255
fi
# 检查perl-DBI是否已安装
LOG_INFO "检查perl-DBI是否已安装"
if rpm -q perl-DBI &>/dev/null; then
LOG_INFO "perl-DBI已安装标记为需要保持安装状态"
KEEP_INSTALLED=1
else
LOG_INFO "perl-DBI未安装标记为需要测试安装"
KEEP_INSTALLED=0
fi
# 如果未安装则安装perl-DBI
if [ $KEEP_INSTALLED -eq 0 ]; then
LOG_INFO "安装perl-DBI包"
dnf install -y perl-DBI
CHECK_RESULT $? 0 0 "安装perl-DBI失败"
fi
# 测试DBI错误处理机制
LOG_INFO "测试DBI错误处理机制连接不存在的数据库"
perl -e "
use DBI;
my $dbh = DBI->connect("dbi:mysql:database=nonexistentdb;host=127.0.0.1", "user", "pass", { RaiseError => 0, PrintError => 0 });
if (!$dbh) {
print "连接失败(预期):" . $DBI::errstr . "\n";
exit 0;
} else {
print "连接成功(非预期)\n";
exit 1;
}
"
CHECK_RESULT $? 0 0 "DBI错误处理机制测试失败连接不存在的数据库未正确处理"
LOG_INFO "测试DBI错误处理机制执行无效SQL语句"
perl -e "
use DBI;
my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:", "", "", { RaiseError => 0, PrintError => 0 });
if (!$dbh) {
print "连接内存数据库失败:" . $DBI::errstr . "\n";
exit 1;
}
my $sth = $dbh->prepare("INVALID SQL STATEMENT");
if (!$sth) {
print "准备语句失败(预期):" . $dbh->errstr . "\n";
exit 0;
} else {
print "准备语句成功(非预期)\n";
exit 1;
}
"
CHECK_RESULT $? 0 0 "DBI错误处理机制测试失败执行无效SQL语句未正确处理"
LOG_INFO "测试DBI错误处理机制捕获RaiseError异常"
perl -e "
use DBI;
eval {
my $dbh = DBI->connect("dbi:mysql:database=nonexistentdb;host=127.0.0.1", "user", "pass", { RaiseError => 1 });
};
if ($@) {
print "捕获到异常(预期):$@\n";
exit 0;
} else {
print "未捕获到异常(非预期)\n";
exit 1;
}
"
CHECK_RESULT $? 0 0 "DBI错误处理机制测试失败RaiseError异常未正确捕获"
# 清理环境如果测试前未安装则卸载perl-DBI
if [ $KEEP_INSTALLED -eq 0 ]; then
LOG_INFO "卸载perl-DBI包"
dnf remove -y perl-DBI
CHECK_RESULT $? 0 0 "卸载perl-DBI失败"
else
LOG_INFO "保持perl-DBI安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,107 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 prepare 和 execute 方法
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
set -e
LOG_INFO "开始测试 prepare 和 execute 方法"
# 定义软件包名称
PACKAGE_NAME="perl-DBI"
# 检查软件包是否已在yum源中
LOG_INFO "检查yum源中是否存在软件包 $PACKAGE_NAME"
if ! dnf list available "$PACKAGE_NAME" &>/dev/null; then
LOG_ERROR "yum源中未找到软件包 $PACKAGE_NAME"
exit 255
fi
# 检查是否已安装
LOG_INFO "检查系统是否已安装 $PACKAGE_NAME"
if rpm -q "$PACKAGE_NAME" &>/dev/null; then
LOG_INFO "软件包 $PACKAGE_NAME 已安装,测试结束后将保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "软件包 $PACKAGE_NAME 未安装,将在测试前安装"
INSTALLED_BEFORE=false
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED_BEFORE" = "false" ]; then
LOG_INFO "安装软件包 $PACKAGE_NAME"
dnf install -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "安装软件包 $PACKAGE_NAME 失败"
fi
# 测试 prepare 和 execute 方法
LOG_INFO "测试 prepare 和 execute 方法"
# 创建一个简单的Perl脚本来测试DBI的prepare和execute
TEST_SCRIPT="/tmp/test_dbi_prepare_execute.pl"
cat > "$TEST_SCRIPT" << "EOF"
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect("dbi:SQLite:dbname=:memory:", "", "", { RaiseError => 1, PrintError => 0 });
my $sth = $dbh->prepare("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)");
$sth->execute();
$sth = $dbh->prepare("INSERT INTO test (name) VALUES (?)");
$sth->execute("OpenEuler");
$sth = $dbh->prepare("SELECT name FROM test WHERE id = ?");
$sth->execute(1);
my @row = $sth->fetchrow_array();
if ($row[0] eq "OpenEuler") {
print "SUCCESS\n";
} else {
print "FAILURE\n";
}
$dbh->disconnect();
EOF
# 执行测试脚本
LOG_INFO "执行Perl测试脚本"
perl "$TEST_SCRIPT" > /tmp/test_output.txt
CHECK_RESULT $? 0 0 "执行Perl测试脚本失败"
# 检查输出结果
LOG_INFO "检查测试输出结果"
if grep -q "SUCCESS" /tmp/test_output.txt; then
LOG_INFO "prepare 和 execute 方法测试成功"
else
LOG_ERROR "prepare 和 execute 方法测试失败"
exit 1
fi
# 清理临时文件
LOG_INFO "清理临时文件"
rm -f "$TEST_SCRIPT" /tmp/test_output.txt
# 如果测试前未安装,则卸载软件包
if [ "$INSTALLED_BEFORE" = "false" ]; then
LOG_INFO "卸载软件包 $PACKAGE_NAME"
dnf remove -y "$PACKAGE_NAME"
CHECK_RESULT $? 0 0 "卸载软件包 $PACKAGE_NAME 失败"
fi
LOG_INFO "测试 prepare 和 execute 方法完成"
}
main "$@"

View File

@@ -1,116 +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-03
# @License : Mulan PSL v2
# @Desc : 测试 begin_work 和 commit 事务
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 Perl DBI 模块的事务功能 (begin_work 和 commit)"
# 检查是否已安装 perl-DBI 包
LOG_INFO "检查 perl-DBI 软件包是否已安装"
if dnf list installed perl-DBI &>/dev/null; then
LOG_INFO "perl-DBI 软件包已安装,测试完成后将保持安装状态"
INSTALLED_BEFORE=true
else
LOG_INFO "perl-DBI 软件包未安装,将在测试前安装并在测试后卸载"
INSTALLED_BEFORE=false
fi
# 检查 yum 源中是否存在 perl-DBI 包
LOG_INFO "检查 yum 源中是否存在 perl-DBI 软件包"
if ! dnf list available perl-DBI &>/dev/null; then
LOG_ERROR "yum 源中未找到 perl-DBI 软件包"
exit 255
fi
# 如果未安装,则安装 perl-DBI
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "安装 perl-DBI 软件包"
dnf install -y perl-DBI
CHECK_RESULT $? 0 0 "安装 perl-DBI 失败"
fi
# 准备测试用的 Perl 脚本
LOG_INFO "创建测试 Perl 脚本以验证事务功能"
cat > test_transaction.pl << "EOF"
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect("DBI:SQLite:dbname=:memory:", "", "", { AutoCommit => 0 });
unless ($dbh) {
die "无法连接数据库: $DBI::errstr";
}
eval {
$dbh->begin_work or die "无法开始事务: " . $dbh->errstr;
$dbh->do("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)");
$dbh->do("INSERT INTO test (name) VALUES ("Alice")");
$dbh->do("INSERT INTO test (name) VALUES ("Bob")");
$dbh->commit or die "提交事务失败: " . $dbh->errstr;
my $sth = $dbh->prepare("SELECT * FROM test");
$sth->execute();
my $rows = $sth->rows;
print "插入的行数: $rows\n";
if ($rows == 2) {
print "事务测试成功\n";
exit 0;
} else {
die "事务测试失败,预期 2 行,实际 $rows";
}
};
if ($@) {
$dbh->rollback;
die "事务出错: $@";
}
$dbh->disconnect;
EOF
# 设置脚本执行权限
chmod +x test_transaction.pl
# 执行测试脚本
LOG_INFO "执行 Perl 脚本测试事务功能"
perl test_transaction.pl
CHECK_RESULT $? 0 0 "Perl DBI 事务测试失败"
# 清理测试文件
LOG_INFO "清理测试文件"
rm -f test_transaction.pl
# 如果测试前未安装,则卸载 perl-DBI
if [ "$INSTALLED_BEFORE" = false ]; then
LOG_INFO "卸载 perl-DBI 软件包"
dnf remove -y perl-DBI
CHECK_RESULT $? 0 0 "卸载 perl-DBI 失败"
else
LOG_INFO "保持 perl-DBI 软件包安装状态"
fi
LOG_INFO "Perl DBI 事务功能测试完成"
}
main "$@"

View File

@@ -1,76 +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 : 2025-12-12
# @License : Mulan PSL v2
# @Desc : Test shell detection functionality
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试shell检测功能
LOG_INFO "开始测试shell检测功能"
# 检查是否已安装python3-shellingham-help
LOG_INFO "检查是否已安装python3-shellingham-help"
dnf list installed python3-shellingham-help > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "python3-shellingham-help已安装脚本结束后保持安装状态"
installed=true
else
LOG_INFO "python3-shellingham-help未安装将在测试结束后卸载"
installed=false
fi
# 检查yum源中是否有python3-shellingham-help软件包
LOG_INFO "检查yum源中是否有python3-shellingham-help软件包"
dnf list available python3-shellingham-help > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到python3-shellingham-help软件包"
exit 255
fi
# 安装python3-shellingham-help软件包
if [ "$installed" = false ]; then
LOG_INFO "安装python3-shellingham-help软件包"
dnf install -y python3-shellingham-help
CHECK_RESULT $? 0 0 "安装python3-shellingham-help失败"
fi
# 测试shell检测功能
LOG_INFO "测试shell检测功能"
shell_detect_output=$(python3 -m shellingham --help)
CHECK_RESULT $? 0 0 "执行shell检测命令失败"
# 验证参数是否存在或不支持
LOG_INFO "验证参数是否存在或不支持"
if [[ "$shell_detect_output" != *"--help"* ]]; then
LOG_ERROR "参数--help不存在或不支持"
exit 255
fi
# 清理环境:如果之前未安装,则卸载软件包
if [ "$installed" = false ]; then
LOG_INFO "卸载python3-shellingham-help软件包"
dnf remove -y python3-shellingham-help
CHECK_RESULT $? 0 0 "卸载python3-shellingham-help失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,139 +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-02-23
# @License : Mulan PSL v2
# @Desc : Test saving or loading drive config
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 判断smartmontools是否已安装
LOG_INFO "检查smartmontools是否已安装"
rpm -q smartmontools > /dev/null 2>&1
installed=$?
# 如果未安装则进行安装
if [ $installed -ne 0 ]; then
LOG_INFO "smartmontools未安装准备安装"
# 检查yum源中是否有smartmontools软件包
LOG_INFO "检查yum源中是否有smartmontools软件包"
dnf list available smartmontools > /dev/null 2>&1
CHECK_RESULT $? 0 0 "yum源中未找到smartmontools软件包"
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到smartmontools软件包"
exit 255
fi
LOG_INFO "安装smartmontools"
dnf install -y smartmontools > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装smartmontools失败"
LOG_INFO "smartmontools安装成功"
fi
# 测试保存驱动器配置
LOG_INFO "测试保存驱动器配置功能"
# 首先获取一个可用的磁盘设备
disk_device=$(lsblk -d -n -o NAME | head -1)
if [ -z "$disk_device" ]; then
LOG_ERROR "未找到可用的磁盘设备"
exit 1
fi
full_device="/dev/${disk_device}"
LOG_INFO "使用磁盘设备: ${full_device}"
# 检查smartctl是否支持--save参数
LOG_INFO "检查smartctl是否支持--save参数"
smartctl --help | grep -q "\-\-save"
if [ $? -ne 0 ]; then
LOG_ERROR "smartctl不支持--save参数"
exit 255
fi
# 创建临时配置文件路径
temp_config="/tmp/smart_config_${disk_device}.cfg"
LOG_INFO "创建临时配置文件: ${temp_config}"
# 尝试保存驱动器配置
LOG_INFO "执行保存驱动器配置命令"
smartctl --save ${full_device} > ${temp_config} 2>&1
save_result=$?
# 检查保存操作结果
if [ $save_result -eq 0 ]; then
LOG_INFO "保存驱动器配置成功"
# 检查配置文件是否非空
if [ -s "${temp_config}" ]; then
LOG_INFO "配置文件已保存且非空"
else
LOG_INFO "配置文件已保存但为空"
fi
elif [ $save_result -eq 4 ]; then
LOG_INFO "设备不支持保存配置功能,这是预期行为"
else
LOG_ERROR "保存驱动器配置失败,退出码: ${save_result}"
CHECK_RESULT ${save_result} 0 0 "保存驱动器配置失败"
fi
# 测试加载驱动器配置
LOG_INFO "测试加载驱动器配置功能"
# 检查smartctl是否支持--load参数
LOG_INFO "检查smartctl是否支持--load参数"
smartctl --help | grep -q "\-\-load"
if [ $? -ne 0 ]; then
LOG_ERROR "smartctl不支持--load参数"
exit 255
fi
# 尝试加载驱动器配置(如果配置文件存在且非空)
if [ -s "${temp_config}" ]; then
LOG_INFO "执行加载驱动器配置命令"
smartctl --load ${full_device} < ${temp_config} 2>&1
load_result=$?
if [ $load_result -eq 0 ]; then
LOG_INFO "加载驱动器配置成功"
elif [ $load_result -eq 4 ]; then
LOG_INFO "设备不支持加载配置功能,这是预期行为"
else
LOG_ERROR "加载驱动器配置失败,退出码: ${load_result}"
CHECK_RESULT ${load_result} 0 0 "加载驱动器配置失败"
fi
else
LOG_INFO "配置文件为空或不存在,跳过加载测试"
fi
# 清理临时文件
LOG_INFO "清理临时文件"
if [ -f "${temp_config}" ]; then
rm -f "${temp_config}"
LOG_INFO "临时文件已清理"
fi
# 如果脚本开始时未安装smartmontools则在结束时卸载
if [ $installed -ne 0 ]; then
LOG_INFO "卸载smartmontools"
dnf remove -y smartmontools > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载smartmontools失败"
LOG_INFO "smartmontools已卸载"
else
LOG_INFO "保持smartmontools安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,76 +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-02-23
# @License : Mulan PSL v2
# @Desc : Test reading drive error logs
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:读取驱动器错误日志"
LOG_INFO "步骤1检查smartmontools软件包是否在yum源中"
if ! dnf list available smartmontools &>/dev/null; then
LOG_ERROR "smartmontools软件包不在yum源中"
exit 255
fi
LOG_INFO "步骤2检查当前是否已安装smartmontools"
if rpm -q smartmontools &>/dev/null; then
LOG_INFO "smartmontools已安装标记为保持安装状态"
KEEP_INSTALLED=true
else
LOG_INFO "smartmontools未安装将在测试中安装"
KEEP_INSTALLED=false
fi
if [ "$KEEP_INSTALLED" = "false" ]; then
LOG_INFO "步骤3安装smartmontools软件包"
dnf install -y smartmontools
CHECK_RESULT $? 0 0 "安装smartmontools失败"
fi
LOG_INFO "步骤4检查smartctl命令的--log=error参数是否支持"
if ! smartctl --help | grep -q "\-\-log=error"; then
LOG_ERROR "smartctl命令不支持--log=error参数"
exit 255
fi
LOG_INFO "步骤5获取系统第一个磁盘设备"
DISK_DEVICE=$(lsblk -d -o NAME,TYPE | grep disk | head -1 | awk "{print $1}")
if [ -z "$DISK_DEVICE" ]; then
LOG_ERROR "未找到磁盘设备"
CHECK_RESULT 1 0 1 "未找到磁盘设备"
fi
DISK_PATH="/dev/$DISK_DEVICE"
LOG_INFO "使用磁盘设备:$DISK_PATH"
LOG_INFO "步骤6执行smartctl --log=error命令读取错误日志"
smartctl --log=error "$DISK_PATH"
CHECK_RESULT $? 0 0 "读取驱动器错误日志失败"
LOG_INFO "步骤7清理环境"
if [ "$KEEP_INSTALLED" = "false" ]; then
LOG_INFO "卸载smartmontools软件包"
dnf remove -y smartmontools
CHECK_RESULT $? 0 0 "卸载smartmontools失败"
else
LOG_INFO "保持smartmontools安装状态"
fi
LOG_INFO "测试完成"
}
main "$@"

View File

@@ -1,92 +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-02-23
# @License : Mulan PSL v2
# @Desc : Test accessing the manual page for smartmontools-help
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义变量
PACKAGE_NAME="smartmontools"
MAN_PAGE_COMMAND="man smartmontools"
# 判断yum源中是否有smartmontools软件包
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 "yum源中存在 $PACKAGE_NAME 软件包"
# 检查当前是否已安装smartmontools
LOG_INFO "检查当前是否已安装 $PACKAGE_NAME"
rpm -q $PACKAGE_NAME &>/dev/null
if [ $? -eq 0 ]; then
LOG_INFO "$PACKAGE_NAME 已安装,标记为保持安装状态"
KEEP_INSTALLED=1
else
LOG_INFO "$PACKAGE_NAME 未安装,将在测试过程中安装"
KEEP_INSTALLED=0
fi
# 如果未安装,则安装软件包
if [ $KEEP_INSTALLED -eq 0 ]; then
LOG_INFO "安装 $PACKAGE_NAME 软件包"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
LOG_INFO "$PACKAGE_NAME 安装成功"
fi
# 检查man命令是否存在
LOG_INFO "检查 man 命令是否存在"
which man &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "man 命令不存在"
exit 255
fi
LOG_INFO "man 命令存在"
# 检查smartmontools的man page是否存在
LOG_INFO "检查 $MAN_PAGE_COMMAND 是否存在"
$MAN_PAGE_COMMAND &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "$MAN_PAGE_COMMAND 不存在或不支持"
exit 255
fi
LOG_INFO "$MAN_PAGE_COMMAND 存在"
# 执行测试访问smartmontools的man page
LOG_INFO "执行测试:访问 $MAN_PAGE_COMMAND"
$MAN_PAGE_COMMAND &>/dev/null
CHECK_RESULT $? 0 0 "访问 $MAN_PAGE_COMMAND 失败"
LOG_INFO "成功访问 $MAN_PAGE_COMMAND"
# 清理环境:如果测试前未安装,则卸载软件包
if [ $KEEP_INSTALLED -eq 0 ]; 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 "测试完成"
}
main "$@"

View File

@@ -1,95 +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-02-23
# @License : Mulan PSL v2
# @Desc : Test initiating a drive self-test
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试Test initiating a drive self-test"
LOG_INFO "步骤1: 检查smartmontools软件包是否在yum源中"
if ! dnf list available smartmontools &>/dev/null; then
LOG_ERROR "yum源中没有smartmontools软件包"
exit 255
fi
LOG_INFO "步骤2: 检查当前是否已安装smartmontools"
if rpm -q smartmontools &>/dev/null; then
LOG_INFO "smartmontools已安装测试后保持安装状态"
INSTALLED=true
else
LOG_INFO "smartmontools未安装将在测试中安装"
INSTALLED=false
fi
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "步骤3: 安装smartmontools软件包"
dnf install -y smartmontools
CHECK_RESULT $? 0 0 "安装smartmontools失败"
fi
LOG_INFO "步骤4: 检查smartctl命令是否支持--test选项"
smartctl --help | grep -q "\-\-test"
CHECK_RESULT $? 0 0 "smartctl命令不支持--test参数" 255
LOG_INFO "步骤5: 获取第一个可用磁盘设备"
DISK_DEVICE=$(lsblk -d -o NAME,TYPE | grep disk | head -1 | awk "{print "/dev/"$1}")
if [ -z "$DISK_DEVICE" ]; then
LOG_ERROR "未找到可用磁盘设备"
exit 1
fi
LOG_INFO "使用磁盘设备: $DISK_DEVICE"
LOG_INFO "步骤6: 执行磁盘自检"
smartctl --test=short $DISK_DEVICE
CHECK_RESULT $? 0 0 "执行磁盘自检失败"
LOG_INFO "步骤7: 检查自检是否启动成功"
sleep 5
smartctl -a $DISK_DEVICE | grep -q "Self-test execution status:.*in progress"
CHECK_RESULT $? 0 0 "磁盘自检未成功启动"
LOG_INFO "步骤8: 等待自检完成"
for i in {1..60}; do
smartctl -a $DISK_DEVICE | grep -q "Self-test execution status:.*completed"
if [ $? -eq 0 ]; then
LOG_INFO "磁盘自检已完成"
break
fi
sleep 10
done
smartctl -a $DISK_DEVICE | grep -q "Self-test execution status:.*completed"
CHECK_RESULT $? 0 0 "磁盘自检未在指定时间内完成"
LOG_INFO "步骤9: 检查自检结果"
smartctl -a $DISK_DEVICE | grep -q "SMART overall-health self-assessment test result: PASSED"
CHECK_RESULT $? 0 0 "磁盘自检结果异常"
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "步骤10: 清理环境卸载smartmontools"
dnf remove -y smartmontools
CHECK_RESULT $? 0 0 "卸载smartmontools失败"
else
LOG_INFO "步骤10: 保持smartmontools安装状态跳过卸载"
fi
LOG_INFO "测试完成Test initiating a drive self-test"
}
main "$@"

View File

@@ -1,88 +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-02-23
# @License : Mulan PSL v2
# @Desc : Test checking the version of smartmontools-help
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查环境是否已安装smartmontools
LOG_INFO "检查smartmontools是否已安装"
rpm -q smartmontools > /dev/null 2>&1
is_installed=$?
# 记录初始安装状态
initial_installed=$is_installed
# 检查yum源中是否有smartmontools软件包
LOG_INFO "检查yum源中是否有smartmontools软件包"
dnf list available smartmontools > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中未找到smartmontools软件包"
exit 255
fi
# 如果未安装,则安装软件包
if [ $is_installed -ne 0 ]; then
LOG_INFO "安装smartmontools软件包"
dnf install -y smartmontools > /dev/null 2>&1
CHECK_RESULT $? 0 0 "安装smartmontools失败"
fi
# 测试smartctl --version命令
LOG_INFO "测试smartctl --version命令"
smartctl --version > /dev/null 2>&1
CHECK_RESULT $? 0 0 "smartctl --version命令执行失败"
# 测试smartctl --help命令
LOG_INFO "测试smartctl --help命令"
smartctl --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "smartctl --help命令执行失败"
# 测试smartctl -V命令版本信息
LOG_INFO "测试smartctl -V命令"
smartctl -V > /dev/null 2>&1
CHECK_RESULT $? 0 0 "smartctl -V命令执行失败"
# 测试不存在的参数
LOG_INFO "测试smartctl不存在的参数--invalid-param"
smartctl --invalid-param > /dev/null 2>&1
if [ $? -ne 255 ] && [ $? -ne 1 ]; then
LOG_ERROR "不存在的参数未返回预期错误码"
exit 255
fi
# 测试不支持的参数
LOG_INFO "测试smartctl不支持的参数--unsupported-option"
smartctl --unsupported-option > /dev/null 2>&1
if [ $? -ne 255 ] && [ $? -ne 1 ]; then
LOG_ERROR "不支持的参数未返回预期错误码"
exit 255
fi
# 环境清理
LOG_INFO "清理测试环境"
if [ $initial_installed -ne 0 ]; then
LOG_INFO "卸载smartmontools软件包"
dnf remove -y smartmontools > /dev/null 2>&1
CHECK_RESULT $? 0 0 "卸载smartmontools失败"
else
LOG_INFO "保持smartmontools已安装状态"
fi
}
main "$@"

View File

@@ -1,66 +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 : 2025-09-30
# @License : Mulan PSL v2
# @Desc : Test package installation
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 检查texlive-chess-doc软件包是否已安装
LOG_INFO "检查texlive-chess-doc软件包是否已安装"
rpm -q texlive-chess-doc > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "texlive-chess-doc软件包已安装脚本结束时将保持安装状态"
INSTALLED=true
else
LOG_INFO "texlive-chess-doc软件包未安装将在测试结束后卸载"
INSTALLED=false
fi
# 检查yum源中是否存在texlive-chess-doc软件包
LOG_INFO "检查yum源中是否存在texlive-chess-doc软件包"
dnf list available texlive-chess-doc > /dev/null 2>&1
CHECK_RESULT $? 0 255 "yum源中不存在texlive-chess-doc软件包"
# 安装texlive-chess-doc软件包
LOG_INFO "安装texlive-chess-doc软件包"
dnf install -y texlive-chess-doc
CHECK_RESULT $? 0 0 "安装texlive-chess-doc软件包失败"
# 验证软件包是否成功安装
LOG_INFO "验证texlive-chess-doc软件包是否成功安装"
rpm -q texlive-chess-doc > /dev/null 2>&1
CHECK_RESULT $? 0 0 "texlive-chess-doc软件包未成功安装"
# 测试完成后根据初始状态决定是否卸载
if [ "$INSTALLED" = false ]; then
LOG_INFO "卸载texlive-chess-doc软件包"
dnf remove -y texlive-chess-doc
CHECK_RESULT $? 0 0 "卸载texlive-chess-doc软件包失败"
# 验证软件包是否成功卸载
LOG_INFO "验证texlive-chess-doc软件包是否成功卸载"
rpm -q texlive-chess-doc > /dev/null 2>&1
CHECK_RESULT $? 1 0 "texlive-chess-doc软件包未成功卸载"
else
LOG_INFO "保持texlive-chess-doc软件包已安装状态"
fi
LOG_INFO "测试完成,环境已恢复"
}
main "$@"

View File

@@ -1,101 +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-03-20
# @License : Mulan PSL v2
# @Desc : Test documentation content validity
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试:测试文档内容有效性"
# 步骤1: 检查软件包是否在yum源中
LOG_INFO "检查yum源中是否存在texlive-colorwav-doc软件包"
dnf list available texlive-colorwav-doc > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum源中不存在texlive-colorwav-doc软件包"
exit 255
fi
# 步骤2: 检查当前是否已安装软件包
LOG_INFO "检查当前是否已安装texlive-colorwav-doc软件包"
rpm -q texlive-colorwav-doc > /dev/null 2>&1
if [ $? -eq 0 ]; then
already_installed=true
LOG_INFO "软件包已安装,测试完成后将保持安装状态"
else
already_installed=false
LOG_INFO "软件包未安装,将在测试过程中安装"
fi
# 步骤3: 安装软件包(如果未安装)
if [ "$already_installed" = false ]; then
LOG_INFO "开始安装texlive-colorwav-doc软件包"
dnf install -y texlive-colorwav-doc
CHECK_RESULT $? 0 0 "安装texlive-colorwav-doc软件包失败"
fi
# 步骤4: 测试文档内容有效性
LOG_INFO "测试文档内容有效性"
# 这里假设texlive-colorwav-doc软件包包含的文档文件在/usr/share/doc/texlive-colorwav-doc/目录下
if [ -d "/usr/share/doc/texlive-colorwav-doc/" ]; then
LOG_INFO "检查文档目录是否存在"
CHECK_RESULT $? 0 0 "文档目录不存在"
# 检查文档文件是否为空
LOG_INFO "检查文档文件是否为空"
doc_files=$(find /usr/share/doc/texlive-colorwav-doc/ -type f -name "*.txt" -o -name "*.pdf" -o -name "*.html" 2>/dev/null | head -5)
if [ -z "$doc_files" ]; then
LOG_ERROR "未找到文档文件"
exit 1
fi
# 检查文档文件是否可读
LOG_INFO "检查文档文件是否可读"
for file in $doc_files; do
if [ -r "$file" ]; then
LOG_INFO "文档文件 $file 可读"
else
LOG_ERROR "文档文件 $file 不可读"
exit 1
fi
done
# 检查文档内容是否包含特定关键词(假设关键词为"color"和"wave"
LOG_INFO "检查文档内容是否包含关键词"
for file in $doc_files; do
if grep -q -i "color" "$file" 2>/dev/null || grep -q -i "wave" "$file" 2>/dev/null; then
LOG_INFO "文档文件 $file 包含相关关键词"
else
LOG_INFO "文档文件 $file 不包含相关关键词,但继续测试"
fi
done
else
LOG_ERROR "文档目录不存在"
exit 1
fi
# 步骤5: 清理环境(如果测试前未安装)
if [ "$already_installed" = false ]; then
LOG_INFO "卸载texlive-colorwav-doc软件包"
dnf remove -y texlive-colorwav-doc
CHECK_RESULT $? 0 0 "卸载texlive-colorwav-doc软件包失败"
fi
LOG_INFO "测试完成:文档内容有效性测试通过"
}
main "$@"

View File

@@ -1,83 +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-03-20
# @License : Mulan PSL v2
# @Desc : Test package version info
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试软件包版本信息
LOG_INFO "开始测试 texlive-colorwav-doc 软件包版本信息"
# 初始化变量
PACKAGE_NAME="texlive-colorwav-doc"
INSTALLED_FLAG=0
# 检查软件包是否已安装
LOG_INFO "步骤1: 检查软件包是否已安装"
if rpm -q $PACKAGE_NAME &> /dev/null; then
LOG_INFO "软件包 $PACKAGE_NAME 已安装"
INSTALLED_FLAG=1
else
LOG_INFO "软件包 $PACKAGE_NAME 未安装"
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_FLAG -eq 0 ]; then
LOG_INFO "步骤3: 安装 $PACKAGE_NAME 软件包"
dnf install -y $PACKAGE_NAME
CHECK_RESULT $? 0 0 "安装 $PACKAGE_NAME 失败"
LOG_INFO "软件包 $PACKAGE_NAME 安装成功"
fi
# 测试软件包版本信息
LOG_INFO "步骤4: 测试软件包版本信息"
rpm -q $PACKAGE_NAME --queryformat="%{VERSION}-%{RELEASE}"
CHECK_RESULT $? 0 0 "获取 $PACKAGE_NAME 版本信息失败"
# 获取版本信息并验证
VERSION_INFO=$(rpm -q $PACKAGE_NAME --queryformat="%{VERSION}-%{RELEASE}")
if [ -z "$VERSION_INFO" ]; then
LOG_ERROR "获取到的版本信息为空"
exit 1
fi
LOG_INFO "软件包 $PACKAGE_NAME 版本信息: $VERSION_INFO"
LOG_INFO "版本信息测试通过"
# 环境清理
LOG_INFO "步骤5: 清理测试环境"
if [ $INSTALLED_FLAG -eq 0 ]; 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 "测试完成"
}
main "$@"

View File

@@ -1,66 +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 : 2025-12-11
# @License : Mulan PSL v2
# @Desc : Test basic functionality of texlive-outliner
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试 texlive-outliner 的基本功能"
# 检查是否已安装 texlive-outliner
LOG_INFO "检查 texlive-outliner 是否已安装"
dnf list installed texlive-outliner > /dev/null 2>&1
if [ $? -eq 0 ]; then
LOG_INFO "texlive-outliner 已安装,测试结束后将保持安装状态"
INSTALLED=1
else
LOG_INFO "texlive-outliner 未安装,将在测试结束后卸载"
INSTALLED=0
fi
# 检查 yum 源中是否有 texlive-outliner
LOG_INFO "检查 yum 源中是否有 texlive-outliner"
dnf list available texlive-outliner > /dev/null 2>&1
if [ $? -ne 0 ]; then
LOG_ERROR "yum 源中未找到 texlive-outliner退出测试"
exit 255
fi
# 如果未安装,则安装 texlive-outliner
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "安装 texlive-outliner"
dnf install -y texlive-outliner
CHECK_RESULT $? 0 0 "安装 texlive-outliner 失败"
fi
# 测试基本功能
LOG_INFO "测试 texlive-outliner 的基本功能"
texlive-outliner --help > /dev/null 2>&1
CHECK_RESULT $? 0 0 "texlive-outliner 基本功能测试失败"
# 清理环境
if [ $INSTALLED -eq 0 ]; then
LOG_INFO "卸载 texlive-outliner"
dnf remove -y texlive-outliner
CHECK_RESULT $? 0 0 "卸载 texlive-outliner失败"
fi
LOG_INFO "测试完成"
}
main "$@"