From ac0bad1fbe0b6f0668a759e05b8b5ad0cb397b3b Mon Sep 17 00:00:00 2001 From: xufei Date: Wed, 29 Apr 2026 11:26:56 +0800 Subject: [PATCH] add a mtr test case --- docs/system_base/mtr/tc_mtr_fun_001.yaml | 69 +++++++++++++++++++++ tests/system_base/mtr/tc_mtr_fun_001.py | 79 ++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 docs/system_base/mtr/tc_mtr_fun_001.yaml create mode 100644 tests/system_base/mtr/tc_mtr_fun_001.py diff --git a/docs/system_base/mtr/tc_mtr_fun_001.yaml b/docs/system_base/mtr/tc_mtr_fun_001.yaml new file mode 100644 index 00000000000..5b06e5db0c5 --- /dev/null +++ b/docs/system_base/mtr/tc_mtr_fun_001.yaml @@ -0,0 +1,69 @@ +作者: xufei +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local +用例描述: 测试mtr网络诊断工具功能 +修改人: xufei + +前置条件: +- 可安装mtr工具 +- 具有root权限 +- 有网络连接 +- 支持DNS解析 +- 支持网络诊断 +- 支持mtr命令 +- 支持awk/grep工具 +- 有网络出口访问权限 + +测试步骤: +- 安装mtr工具 +- 安装mtr网络诊断工具 +- 检查版本 +- 使用mtr -v检查 +- 检查帮助 +- 使用mtr -h检查 +- 获取网关地址 +- 获取默认网关IP +- 执行基本测试 +- 使用mtr -n -r -c测试 +- 保存输出日志 +- 验证测试结果 +- 检查日志中的网关信息 +- 执行包大小测试 +- 使用mtr -n -r -s测试 +- 执行XML输出测试 +- 使用mtr -n --xml测试 +- 检查XML格式 +- 验证XML输出 +- 执行CSV输出测试 +- 使用mtr -n --csv测试 +- 检查CSV格式 +- 验证CSV输出 +- 执行TCP测试 +- 使用mtr -T -r测试 +- 执行UDP测试 +- 使用mtr -u -r测试 +- 清理日志文件 +- 删除临时日志 +- 清理环境 + +期望结果: +- 成功安装mtr工具 +- 成功获取mtr版本 +- 成功获取帮助信息 +- 成功获取网关地址 +- 成功执行基本测试 +- 成功验证日志内容 +- 成功执行包大小测试 +- 成功执行XML测试 +- 成功验证XML输出 +- 成功执行CSV测试 +- 成功验证CSV输出 +- 成功执行TCP测试 +- 成功执行UDP测试 +- 成功清理日志文件 +- 成功清理环境 +- 所有命令返回码符合预期 +- mtr功能测试通过 \ No newline at end of file diff --git a/tests/system_base/mtr/tc_mtr_fun_001.py b/tests/system_base/mtr/tc_mtr_fun_001.py new file mode 100644 index 00000000000..473c53c512e --- /dev/null +++ b/tests/system_base/mtr/tc_mtr_fun_001.py @@ -0,0 +1,79 @@ +# -*- encoding: utf-8 -*- + +""" +@File: tc_mtr_fun_001.py +@Time: 2026/04/29 11:23:53 +@Author: xufei +@Version: 1.0 +@Contact: xufei@inspur.com +@License: Mulan PSL v2 +@Modify: xufei +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_mtr_fun_001.yaml for details + + :avocado: tags=P1,noarch,local,mtr + """ + PARAM_DIC = {"pkg_name": "mtr"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + + def test(self): + self.log.info("Start to run test.") + + code1, result1 = self.cmd('mtr -v') + self.assertEqual(code1, 0, "check mtr version error") + + code2, result2 = self.cmd('mtr -h') + self.assertEqual(code2, 0, "check mtr help error") + + code3, result3 = self.cmd('ip route | grep default | awk \'{print $3}\'') + self.assertEqual(code3, 0, "Failed to get default gateway") + gateway = result3.strip() + + code4, result4 = self.cmd('mtr -n -r dns.google -c 15 > mtr.tmp1 2>&1') + self.assertEqual(code4, 0, "execute -n -r -c cmd error") + + code5, result5 = self.cmd(f'grep "{gateway}" mtr.tmp1 | awk \'{{print $4}}\'') + self.assertEqual(code5, 0, "check log error after execute -n -r -c") + s_value = result5.strip() + self.assertEqual(s_value, "15", "check log error after execute -n -r -c") + + code6, result6 = self.cmd('mtr -n -r -s 50 dns.google') + self.assertEqual(code6, 0, "execute -n -r -s cmd error") + + code7, result7 = self.cmd('mtr -n --xml dns.google > mtr.tmp2 2>&1') + self.assertEqual(code7, 0, "execute -n --xml cmd error") + + code8, result8 = self.cmd(f'grep "{gateway}" mtr.tmp2 | grep \'\'') + self.assertEqual(code8, 0, "check log error after execute -n --xml") + + code9, result9 = self.cmd('mtr -n --csv dns.google > mtr.tmp3 2>&1') + self.assertEqual(code9, 0, "execute -n --csv cmd error") + + code10, result10 = self.cmd(f'grep "{gateway}" mtr.tmp3 | awk -F \',\' \'{{print $6}}\'') + self.assertEqual(code10, 0, "check log error after execute --csv") + target_value = result10.strip() + self.assertEqual(target_value, gateway, f"check log error after execute --csv: {target_value} != {gateway}") + + code11, result11 = self.cmd('mtr -T -r dns.google') + self.assertEqual(code11, 0, "execute -T -r cmd error") + + code12, result12 = self.cmd('mtr -u -r dns.google') + self.assertEqual(code12, 0, "execute -u -r cmd error") + + self.log.info("End to run test.") + + def tearDown(self): + super().tearDown(self.PARAM_DIC) + self.log.info("start environment cleanup.") + self.cmd('rm -rf mtr.tmp*') + self.log.info("Finish environment cleanup!") + + -- Gitee