update testcase for testsuite pcp-pmda-libvirt

This commit is contained in:
2026-04-25 01:25:03 +08:00
parent 1c53ddcb5f
commit 78ac458a7d
5 changed files with 0 additions and 579 deletions

View File

@@ -9,22 +9,6 @@
{
"name": "test_pcp-pmda-libvirt_function_uninstall",
"desc": "Test package uninstallation"
},
{
"name": "test_pcp-pmda-libvirt_function_enable",
"desc": "Test enabling PMDA"
},
{
"name": "test_pcp-pmda-libvirt_function_start",
"desc": "Test PMDA service start"
},
{
"name": "test_pcp-pmda-libvirt_function_collect",
"desc": "Test metrics collection"
},
{
"name": "test_pcp-pmda-libvirt_function_query",
"desc": "Test query specific metric"
}
]
}

View File

@@ -1,146 +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-21
# @License : Mulan PSL v2
# @Desc : Test metrics collection
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 测试指标收集功能
LOG_INFO "开始测试指标收集功能"
# 检查是否已安装pcp-pmda-libvirt
LOG_INFO "检查pcp-pmda-libvirt是否已安装"
if rpm -q pcp-pmda-libvirt &>/dev/null; then
LOG_INFO "pcp-pmda-libvirt已安装标记为需要保持安装状态"
INSTALLED_BEFORE_TEST=true
else
LOG_INFO "pcp-pmda-libvirt未安装"
INSTALLED_BEFORE_TEST=false
fi
# 检查yum源中是否有pcp-pmda-libvirt包
LOG_INFO "检查yum源中是否有pcp-pmda-libvirt包"
if ! dnf list available pcp-pmda-libvirt &>/dev/null; then
LOG_ERROR "yum源中未找到pcp-pmda-libvirt包"
exit 255
fi
# 如果未安装,则安装软件包
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "安装pcp-pmda-libvirt包"
dnf install -y pcp-pmda-libvirt
CHECK_RESULT $? 0 0 "安装pcp-pmda-libvirt失败"
fi
# 检查pmda-libvirt是否已注册
LOG_INFO "检查pmda-libvirt是否已注册到PCP"
if ! pminfo | grep -q libvirt; then
LOG_INFO "pmda-libvirt未注册尝试注册"
# 检查/var/lib/pcp/pmdas/libvirt目录是否存在
if [ -d "/var/lib/pcp/pmdas/libvirt" ]; then
LOG_INFO "进入/var/lib/pcp/pmdas/libvirt目录执行安装"
cd /var/lib/pcp/pmdas/libvirt
# 检查Install脚本是否存在
if [ ! -f "./Install" ]; then
LOG_ERROR "未找到Install脚本"
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
dnf remove -y pcp-pmda-libvirt
fi
exit 255
fi
# 检查Install脚本是否支持remove参数
if ! grep -q "remove" ./Install; then
LOG_ERROR "Install脚本不支持remove参数"
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
dnf remove -y pcp-pmda-libvirt
fi
exit 255
fi
# 执行安装
LOG_INFO "执行Install脚本安装pmda-libvirt"
./Install
CHECK_RESULT $? 0 0 "安装pmda-libvirt失败"
else
LOG_ERROR "/var/lib/pcp/pmdas/libvirt目录不存在"
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
dnf remove -y pcp-pmda-libvirt
fi
exit 255
fi
else
LOG_INFO "pmda-libvirt已注册"
fi
# 等待pmda启动
LOG_INFO "等待pmda-libvirt启动"
sleep 2
# 测试指标收集
LOG_INFO "测试libvirt指标收集功能"
# 检查是否有libvirt相关的指标
LOG_INFO "检查libvirt相关指标"
pminfo libvirt
CHECK_RESULT $? 0 0 "获取libvirt指标失败"
# 测试具体指标收集
LOG_INFO "测试具体指标收集"
pmprobe libvirt.domain.count
CHECK_RESULT $? 0 0 "收集libvirt.domain.count指标失败"
# 测试多个指标
LOG_INFO "测试多个指标同时收集"
pmprobe libvirt.domain.count libvirt.domain.state
CHECK_RESULT $? 0 0 "同时收集多个指标失败"
# 测试指标值获取
LOG_INFO "测试指标值获取"
pminfo -f libvirt.domain.count
CHECK_RESULT $? 0 0 "获取指标值失败"
# 如果测试前未安装,则在测试结束后卸载
if [ "$INSTALLED_BEFORE_TEST" = false ]; then
LOG_INFO "测试完成,清理测试环境"
# 如果已经注册了pmda先卸载
LOG_INFO "检查是否需要卸载pmda-libvirt"
if pminfo | grep -q libvirt; then
LOG_INFO "卸载pmda-libvirt"
if [ -d "/var/lib/pcp/pmdas/libvirt" ]; then
cd /var/lib/pcp/pmdas/libvirt
./Install -R
CHECK_RESULT $? 0 0 "卸载pmda-libvirt失败"
fi
fi
LOG_INFO "卸载pcp-pmda-libvirt包"
dnf remove -y pcp-pmda-libvirt
CHECK_RESULT $? 0 0 "卸载pcp-pmda-libvirt包失败"
else
LOG_INFO "测试完成,保持原安装状态"
fi
LOG_INFO "指标收集功能测试完成"
}
main "$@"

View File

@@ -1,167 +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-21
# @License : Mulan PSL v2
# @Desc : Test enabling PMDA
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
# 定义颜色变量用于日志输出
LOG_INFO() {
echo -e "\033[32m[INFO]\033[0m $*"
}
LOG_ERROR() {
echo -e "\033[31m[ERROR]\033[0m $*"
}
# 检查软件包是否在yum源中
check_package_in_repo() {
local package_name="$1"
dnf list available "$package_name" &>/dev/null
if [ $? -ne 0 ]; then
LOG_ERROR "软件包 $package_name 不在yum源中"
exit 255
fi
}
# 检查命令参数是否存在
check_command_param() {
local command="$1"
local param="$2"
# 使用--help检查参数是否支持
if $command --help 2>&1 | grep -q "\s$param\s"; then
return 0
else
LOG_ERROR "命令 $command 不支持参数 $param"
exit 255
fi
}
# 检查环境是否已安装
check_installation() {
LOG_INFO "检查pcp-pmda-libvirt是否已安装"
rpm -q pcp-pmda-libvirt &>/dev/null
local installed=$?
if [ $installed -eq 0 ]; then
LOG_INFO "pcp-pmda-libvirt已安装"
INSTALLED_BEFORE_TEST=1
else
LOG_INFO "pcp-pmda-libvirt未安装"
INSTALLED_BEFORE_TEST=0
fi
}
# 安装软件包
install_package() {
local package_name="$1"
LOG_INFO "安装软件包: $package_name"
check_package_in_repo "$package_name"
dnf install -y "$package_name"
CHECK_RESULT $? 0 0 "安装 $package_name 失败"
}
# 卸载软件包
uninstall_package() {
local package_name="$1"
LOG_INFO "卸载软件包: $package_name"
dnf remove -y "$package_name"
CHECK_RESULT $? 0 0 "卸载 $package_name 失败"
}
# 清理环境
cleanup_environment() {
LOG_INFO "开始清理测试环境"
# 如果测试前未安装,测试后需要卸载
if [ $INSTALLED_BEFORE_TEST -eq 0 ]; then
uninstall_package "pcp-pmda-libvirt"
else
LOG_INFO "保持pcp-pmda-libvirt安装状态"
fi
}
# 主测试函数
test_enable_pmda() {
LOG_INFO "开始测试: 启用PMDA"
# 步骤1: 检查环境安装状态
check_installation
# 步骤2: 如果未安装则安装
if [ $INSTALLED_BEFORE_TEST -eq 0 ]; then
install_package "pcp-pmda-libvirt"
fi
# 步骤3: 检查pmda命令是否可用
LOG_INFO "检查pmda命令是否可用"
which pmda &>/dev/null
CHECK_RESULT $? 0 0 "pmda命令不可用"
# 步骤4: 检查pmda命令的libvirt参数
LOG_INFO "检查pmda命令的libvirt参数支持"
check_command_param "pmda" "libvirt"
# 步骤5: 尝试启用libvirt PMDA
LOG_INFO "尝试启用libvirt PMDA"
pmda libvirt --help &>/dev/null
CHECK_RESULT $? 0 0 "启用libvirt PMDA失败"
# 步骤6: 检查PMDA是否成功启用
LOG_INFO "检查PMDA是否成功启用"
pcp | grep -i libvirt &>/dev/null
local check_result=$?
# 如果pcp命令不存在使用其他方式检查
if [ $check_result -eq 127 ]; then
LOG_INFO "使用替代方法检查PMDA状态"
systemctl list-unit-files | grep -i pcp &>/dev/null
CHECK_RESULT $? 0 0 "PMDA启用状态检查失败"
else
CHECK_RESULT $check_result 0 0 "PMDA未成功启用"
fi
LOG_INFO "PMDA启用测试完成"
}
# 主程序
main() {
# 初始化变量
INSTALLED_BEFORE_TEST=0
# 设置错误处理
set -e
# 执行测试
test_enable_pmda
# 清理环境
cleanup_environment
LOG_INFO "测试脚本执行完成"
}
# 执行主程序
main
}
main "$@"

View File

@@ -1,179 +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-21
# @License : Mulan PSL v2
# @Desc : Test query specific metric
# ############################################
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_command() {
command -v "$1" >/dev/null 2>&1
return $?
}
# 检查软件包是否在yum源中
check_package_in_repo() {
local package_name="$1"
dnf list available "$package_name" >/dev/null 2>&1
return $?
}
# 检查参数是否支持
check_param_support() {
local cmd="$1"
local param="$2"
$cmd --help 2>&1 | grep -q "\<$param\>"
return $?
}
# 安装软件包
install_package() {
local package_name="$1"
LOG_INFO "正在安装软件包: $package_name"
dnf install -y "$package_name" >/dev/null 2>&1
return $?
}
# 卸载软件包
uninstall_package() {
local package_name="$1"
LOG_INFO "正在卸载软件包: $package_name"
dnf remove -y "$package_name" >/dev/null 2>&1
return $?
}
# 检查libvirt服务状态
check_libvirt_status() {
systemctl is-active libvirtd >/dev/null 2>&1
return $?
}
# 启动libvirt服务
start_libvirt_service() {
LOG_INFO "正在启动libvirt服务"
systemctl start libvirtd >/dev/null 2>&1
return $?
}
# 停止libvirt服务
stop_libvirt_service() {
LOG_INFO "正在停止libvirt服务"
systemctl stop libvirtd >/dev/null 2>&1
return $?
}
# 主测试函数
test_query_specific_metric() {
local test_package="pcp-pmda-libvirt"
local need_cleanup=0
local libvirt_was_running=0
# 步骤1: 检查软件包是否在yum源中
LOG_INFO "步骤1: 检查软件包是否在yum源中"
check_package_in_repo "$test_package"
CHECK_RESULT $? 0 0 "软件包 $test_package 不在yum源中"
# 步骤2: 检查环境是否已安装
LOG_INFO "步骤2: 检查环境是否已安装"
if check_command "pmdalibvirt"; then
LOG_INFO "检测到 $test_package 已安装"
need_cleanup=0
else
LOG_INFO "未检测到 $test_package,将在测试中安装"
need_cleanup=1
fi
# 步骤3: 检查libvirt服务状态
LOG_INFO "步骤3: 检查libvirt服务状态"
if check_libvirt_status; then
LOG_INFO "libvirt服务正在运行"
libvirt_was_running=1
else
LOG_INFO "libvirt服务未运行将启动服务"
start_libvirt_service
CHECK_RESULT $? 0 0 "启动libvirt服务失败"
fi
# 步骤4: 如果未安装,则安装软件包
if [ $need_cleanup -eq 1 ]; then
LOG_INFO "步骤4: 安装 $test_package 软件包"
install_package "$test_package"
CHECK_RESULT $? 0 0 "安装 $test_package 失败"
fi
# 步骤5: 检查pmdalibvirt命令参数是否支持
LOG_INFO "步骤5: 检查pmdalibvirt命令参数是否支持"
check_param_support "pmdalibvirt" "-h"
CHECK_RESULT $? 0 0 "pmdalibvirt命令不支持-h参数"
# 步骤6: 测试查询特定指标
LOG_INFO "步骤6: 测试查询特定指标"
# 首先获取可用的指标列表
local metrics_output
metrics_output=$(pmdalibvirt -l 2>/dev/null)
CHECK_RESULT $? 0 0 "获取libvirt指标列表失败"
# 从指标列表中提取第一个指标进行测试
local first_metric
first_metric=$(echo "$metrics_output" | grep -E "^[a-zA-Z]" | head -1 | awk "{print $1}")
if [ -z "$first_metric" ]; then
LOG_ERROR "未找到可用的libvirt指标"
exit 1
fi
LOG_INFO "使用指标 $first_metric 进行测试"
# 步骤7: 执行查询命令
LOG_INFO "步骤7: 执行查询命令"
pmdalibvirt -q "$first_metric" >/dev/null 2>&1
CHECK_RESULT $? 0 0 "查询指标 $first_metric 失败"
LOG_INFO "指标查询测试成功"
# 步骤8: 清理环境
LOG_INFO "步骤8: 清理环境"
# 如果之前libvirt服务未运行则停止它
if [ $libvirt_was_running -eq 0 ]; then
stop_libvirt_service
CHECK_RESULT $? 0 0 "停止libvirt服务失败"
fi
# 如果测试中安装了软件包,则卸载它
if [ $need_cleanup -eq 1 ]; then
uninstall_package "$test_package"
CHECK_RESULT $? 0 0 "卸载 $test_package 失败"
fi
LOG_INFO "测试完成,环境已恢复"
}
# 执行测试
test_query_specific_metric
}
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-03-21
# @License : Mulan PSL v2
# @Desc : Test PMDA service start
# ############################################
source "$OET_PATH/libs/locallibs/common_lib.sh"
function run_test() {
LOG_INFO "开始测试PMDA服务启动功能"
LOG_INFO "检查当前环境是否已安装pcp-pmda-libvirt软件包"
if dnf list installed | grep -q "pcp-pmda-libvirt"; then
LOG_INFO "环境已安装pcp-pmda-libvirt标记为已安装状态"
INSTALLED="true"
else
LOG_INFO "环境未安装pcp-pmda-libvirt"
INSTALLED="false"
fi
LOG_INFO "检查yum源中是否有pcp-pmda-libvirt软件包"
if ! dnf list available | grep -q "pcp-pmda-libvirt"; then
LOG_ERROR "yum源中未找到pcp-pmda-libvirt软件包"
exit 255
fi
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "开始安装pcp-pmda-libvirt软件包"
dnf install -y pcp-pmda-libvirt
CHECK_RESULT $? 0 0 "安装pcp-pmda-libvirt失败"
fi
LOG_INFO "检查pcp-pmda-libvirt服务是否支持start参数"
if ! pcp-pmda-libvirt --help 2>&1 | grep -q "start"; then
LOG_ERROR "pcp-pmda-libvirt不支持start参数"
exit 255
fi
LOG_INFO "启动pcp-pmda-libvirt服务"
pcp-pmda-libvirt start
CHECK_RESULT $? 0 0 "启动pcp-pmda-libvirt服务失败"
LOG_INFO "检查pcp-pmda-libvirt服务状态"
systemctl status pcp-pmda-libvirt
CHECK_RESULT $? 0 0 "pcp-pmda-libvirt服务未正常运行"
if [ "$INSTALLED" = "false" ]; then
LOG_INFO "测试完成清理安装的pcp-pmda-libvirt软件包"
dnf remove -y pcp-pmda-libvirt
CHECK_RESULT $? 0 0 "卸载pcp-pmda-libvirt失败"
else
LOG_INFO "测试完成,保持原安装状态"
fi
LOG_INFO "PMDA服务启动功能测试完成"
}
main "$@"