diff --git a/docs/system_base/easymock/tc_easymock_test_fun001.yaml b/docs/system_base/easymock/tc_easymock_test_fun001.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ea97dbef6fdfa4848cca558e716e6f19b700e60b --- /dev/null +++ b/docs/system_base/easymock/tc_easymock_test_fun001.yaml @@ -0,0 +1,79 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, easymock +用例描述: 测试 easymock 软件包基础安装完整性,包括RPM信息、文件系统、文件属性和内容验证 +修改人: douzhichong + +前置条件: +- 安装 easymock 软件包 +- 确保系统已安装 file、grep、head 等基础命令 +- 确保测试环境有足够的权限访问 /usr/share/java、/usr/share/licenses 等目录 + +测试步骤: + +- ## 验证JAR文件完整性 + - 检查easymock主要JAR文件是否存在 + - /usr/share/java/easymock.jar + - /usr/share/java/easymock3.jar + - /usr/share/java/easymock-test-java8.jar + - /usr/share/java/easymock-test-junit5.jar + - /usr/share/java/easymock-test-testng.jar + - /usr/share/java/easymock3-test-java8.jar + - /usr/share/java/easymock3-test-junit5.jar + - /usr/share/java/easymock3-test-testng.jar + - 期望结果: 所有JAR文件均存在 + +- ## 验证许可证和元数据文件 + - 检查许可证目录是否存在 [命令: [ -d /usr/share/licenses/easymock ]] + - 检查许可证文件是否存在 [命令: [ -f /usr/share/licenses/easymock/LICENSE.txt ]] + - 检查Maven元数据文件是否存在 [命令: [ -f /usr/share/maven-metadata/easymock.xml ]] + - 期望结果: 所有目录和文件均存在 + +- ## 验证POM文件完整性 + - 检查所有POM文件是否存在,包括: + - /usr/share/maven-poms/easymock-parent.pom + - /usr/share/maven-poms/easymock.pom + - /usr/share/maven-poms/easymock-test-java8.pom + - /usr/share/maven-poms/easymock-test-junit5.pom + - /usr/share/maven-poms/easymock-test-testng.pom + - /usr/share/maven-poms/easymock3-parent.pom + - /usr/share/maven-poms/easymock3.pom + - /usr/share/maven-poms/easymock3-test-java8.pom + - /usr/share/maven-poms/easymock3-test-junit5.pom + - /usr/share/maven-poms/easymock3-test-testng.pom + - 期望结果: 所有POM文件均存在 + +- ## 验证文件权限和可读性 + - 检查所有JAR文件是否可读 [命令: [ -r ]] + - 期望结果: 所有JAR文件均可读 + +- ## 验证JAR文件有效性 + - 使用file命令检查每个JAR文件是否为有效的Java归档文件 [命令: file | grep -qi "jar\\|zip\\|java"] + - 期望结果: 所有JAR文件均被识别为有效的Java/JAR/ZIP文件 + +- ## 验证许可证文件内容 + - 检查许可证文件是否非空 [命令: head -5 /usr/share/licenses/easymock/LICENSE.txt | wc -l] + - 期望结果: 许可证文件包含内容 + +- ## 验证Maven元数据格式 + - 检查Maven元数据文件是否为XML格式 [命令: head -10 /usr/share/maven-metadata/easymock.xml | grep -q "<"] + - 期望结果: 文件包含XML标记 + +- ## 验证包依赖关系 + - 检查包是否有依赖关系 [命令: rpm -qR easymock | head -1] + - 期望结果: 能够查询到依赖信息 + +期望结果: +- easymock RPM包已正确安装 +- 所有JAR文件存在且有效 +- 许可证和Maven元数据文件完整 +- 所有POM文件存在 +- 文件权限设置正确 +- JAR文件格式验证通过 +- 许可证文件包含有效内容 +- Maven元数据为有效XML格式 +- 包依赖关系可正常查询 +- 所有验证步骤返回码均为0 \ No newline at end of file diff --git a/docs/system_base/easymock/tc_easymock_test_fun002.yaml b/docs/system_base/easymock/tc_easymock_test_fun002.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a306cebe434913e72c44415fdabdbb7a7cd43e67 --- /dev/null +++ b/docs/system_base/easymock/tc_easymock_test_fun002.yaml @@ -0,0 +1,79 @@ +作者: douzhichong +优先级: P1 +支持架构: noarch +执行方式: 自动 +测试类型: 功能测试 +通用标签: local, easymock +用例描述: 测试 easymock 软件包高级功能,包括Java兼容性、JAR内容结构、POM文件格式和包完整性验证 +修改人: douzhichong + +前置条件: +- 安装 easymock 软件包 +- 确保系统已安装 java、jar、grep 等命令 +- 确保测试环境可以访问Java环境(可选) + +测试步骤: +- ## 检查Java环境可用性 + - 检查Java是否在PATH中 [命令: which java 2>/dev/null] + - 如果Java不存在,记录信息并跳过Java相关测试 + - 期望结果: 能够检测Java环境状态 + +- ## 验证JAR文件详细内容 + - 检查easymock主JAR文件可读性 + - /usr/share/java/easymock.jar + - /usr/share/java/easymock3.jar + - 使用jar命令列出JAR内容 [命令: jar tf 2>/dev/null | head -1] + - 验证JAR包含easymock相关类 [命令: jar tf 2>/dev/null | grep -i "easymock" | head -1] + - 期望结果: JAR文件可读且包含easymock类 + +- ## 验证POM文件格式 + - 检查主要POM文件格式 + - /usr/share/maven-poms/easymock.pom + - /usr/share/maven-poms/easymock3.pom + - 验证是否为有效XML/POM文件 [命令: head -1 | grep -q ""] + - 验证包含groupId元素 [命令: grep -i "" ] + - 验证包含artifactId元素 [命令: grep -i "" ] + - 期望结果: POM文件格式正确且包含必要元素 + +- ## 验证文件大小和非空检查 + - 检查所有JAR文件大小 [命令: [ -s ]] + - 包括所有easymock和easymock3相关JAR文件 + - 期望结果: 所有JAR文件非空且具有有效大小 + +- ## 验证测试JAR文件 + - 检查测试相关JAR文件 + - /usr/share/java/easymock-test-junit5.jar + - /usr/share/java/easymock-test-testng.jar + - /usr/share/java/easymock3-test-junit5.jar + - /usr/share/java/easymock3-test-testng.jar + - 验证测试JAR可读性 [命令: jar tf 2>/dev/null | head -5] + - 期望结果: 测试JAR文件可读且包含内容 + +- ## Java环境功能测试(如果Java可用) + - 尝试使用Java加载easymock JAR [命令: java -cp /usr/share/java/easymock.jar -version 2>&1 | head -1] + - 验证JAR包含类文件 [命令: jar tf /usr/share/java/easymock.jar | grep -i "class$" | head -3] + - 期望结果: Java能够识别JAR文件且JAR包含Java类 + +- ## 验证包版本信息 + - 查询easymock包版本 [命令: rpm -q --queryformat="%{VERSION}-%{RELEASE}\n" easymock] + - 期望结果: 能够获取包版本信息 + +- ## 验证包文件数量 + - 统计包包含的文件数量 [命令: rpm -ql easymock | wc -l] + - 期望结果: 包包含足够数量的文件(大于10个) + +- ## 验证包提供信息 + - 检查包提供easymock相关功能 [命令: rpm -q --provides easymock | grep -i "easymock" | head -1] + - 期望结果: 包正确提供easymock相关功能 + +期望结果: +- Java环境检测正确(无论是否存在) +- 主要JAR文件内容结构完整 +- POM文件格式符合Maven标准 +- 所有JAR文件大小正常 +- 测试JAR文件功能正常 +- Java兼容性验证通过(如果Java环境存在) +- 包版本信息可正常查询 +- 包文件数量符合预期 +- 包提供信息正确 +- 所有验证步骤返回码均为0(除非明确跳过) \ No newline at end of file diff --git a/tests/system_base/easymock/tc_easymock_test_fun001.py b/tests/system_base/easymock/tc_easymock_test_fun001.py new file mode 100644 index 0000000000000000000000000000000000000000..1d7dcbe104d0500601ab3ea48267dcaf18c6c017 --- /dev/null +++ b/tests/system_base/easymock/tc_easymock_test_fun001.py @@ -0,0 +1,86 @@ +""" +@File: tc_easymock_test_fun001.py +@Time: 2025/12/10 15:45:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_easymock_test_fun001.yaml for details + + :avocado: tags=P1,noarch,local,easymock + """ + PARAM_DIC = {"pkg_name": "easymock"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + + def test(self): + + jar_files = [ + '/usr/share/java/easymock.jar', + '/usr/share/java/easymock3.jar', + '/usr/share/java/easymock-test-java8.jar', + '/usr/share/java/easymock-test-junit5.jar', + '/usr/share/java/easymock-test-testng.jar', + '/usr/share/java/easymock3-test-java8.jar', + '/usr/share/java/easymock3-test-junit5.jar', + '/usr/share/java/easymock3-test-testng.jar' + ] + + for jar_file in jar_files: + code, result = self.cmd(f'[ -f {jar_file} ]') + self.assertEqual(code, 0, f"easymock JAR file {jar_file} not found") + + code, result = self.cmd('[ -d /usr/share/licenses/easymock ]') + self.assertEqual(code, 0, "easymock license directory not found") + + code, result = self.cmd('[ -f /usr/share/licenses/easymock/LICENSE.txt ]') + self.assertEqual(code, 0, "easymock license file not found") + + code, result = self.cmd('[ -f /usr/share/maven-metadata/easymock.xml ]') + self.assertEqual(code, 0, "easymock Maven metadata file not found") + + pom_files = [ + '/usr/share/maven-poms/easymock-parent.pom', + '/usr/share/maven-poms/easymock.pom', + '/usr/share/maven-poms/easymock-test-java8.pom', + '/usr/share/maven-poms/easymock-test-junit5.pom', + '/usr/share/maven-poms/easymock-test-testng.pom', + '/usr/share/maven-poms/easymock3-parent.pom', + '/usr/share/maven-poms/easymock3.pom', + '/usr/share/maven-poms/easymock3-test-java8.pom', + '/usr/share/maven-poms/easymock3-test-junit5.pom', + '/usr/share/maven-poms/easymock3-test-testng.pom' + ] + + for pom_file in pom_files: + code, result = self.cmd(f'[ -f {pom_file} ]') + self.assertEqual(code, 0, f"easymock POM file {pom_file} not found") + + for jar_file in jar_files: + code, result = self.cmd(f'[ -r {jar_file} ]') + self.assertEqual(code, 0, f"easymock JAR file {jar_file} is not readable") + + for jar_file in jar_files: + code, result = self.cmd(f'file {jar_file} | grep -qi "jar\\|zip\\|java"') + self.assertEqual(code, 0, f"{jar_file} is not a valid JAR file") + + code, result = self.cmd('head -5 /usr/share/licenses/easymock/LICENSE.txt | wc -l') + self.assertTrue(int(result.strip()) > 0, "easymock license file is empty") + + code, result = self.cmd('head -10 /usr/share/maven-metadata/easymock.xml | grep -q "<"') + self.assertEqual(code, 0, "easymock Maven metadata does not contain XML") + + code, result = self.cmd('rpm -qR easymock | head -1') + self.assertEqual(code, 0, "Cannot query easymock package dependencies") + + def tearDown(self): + super().tearDown(self.PARAM_DIC) \ No newline at end of file diff --git a/tests/system_base/easymock/tc_easymock_test_fun002.py b/tests/system_base/easymock/tc_easymock_test_fun002.py new file mode 100644 index 0000000000000000000000000000000000000000..e9e08a74e191791cec5b57694a452aead187ae99 --- /dev/null +++ b/tests/system_base/easymock/tc_easymock_test_fun002.py @@ -0,0 +1,107 @@ +""" +@File: tc_easymock_test_fun002.py +@Time: 2025/12/10 15:45:00 +@Author: douzhichong +@Version: 1.0 +@Contact: douzhichong@inspur.com +@License: Mulan PSL v2 +@Modify: douzhichong +""" + +from common.basetest import LocalTest + + +class Test(LocalTest): + """ + See tc_easymock_test_fun002.yaml for details + + :avocado: tags=P1,noarch,local,easymock + """ + PARAM_DIC = {"pkg_name": "easymock"} + + def setUp(self): + super().setUp(self.PARAM_DIC) + + def test(self): + + code, result = self.cmd('which java 2>/dev/null') + if code != 0: + print("INFO: Java not found in PATH, skipping Java-specific tests") + has_java = False + else: + has_java = True + + main_jars = [ + '/usr/share/java/easymock.jar', + '/usr/share/java/easymock3.jar' + ] + + for jar_file in main_jars: + + code, result = self.cmd(f'jar tf {jar_file} 2>/dev/null | head -1') + self.assertEqual(code, 0, f"Cannot read JAR file: {jar_file}") + + code, result = self.cmd(f'jar tf {jar_file} 2>/dev/null | grep -i "easymock" | head -1') + self.assertEqual(code, 0, f"{jar_file} does not contain easymock classes") + + main_poms = [ + '/usr/share/maven-poms/easymock.pom', + '/usr/share/maven-poms/easymock3.pom' + ] + + for pom_file in main_poms: + + code, result = self.cmd(f'head -1 {pom_file} | grep -q ""') + self.assertEqual(code, 0, f"{pom_file} is not a valid XML/POM file") + + code, result = self.cmd(f'grep -i "" {pom_file}') + self.assertEqual(code, 0, f"{pom_file} missing groupId") + + code, result = self.cmd(f'grep -i "" {pom_file}') + self.assertEqual(code, 0, f"{pom_file} missing artifactId") + + all_jar_files = [ + '/usr/share/java/easymock.jar', + '/usr/share/java/easymock3.jar', + '/usr/share/java/easymock-test-java8.jar', + '/usr/share/java/easymock-test-junit5.jar', + '/usr/share/java/easymock-test-testng.jar', + '/usr/share/java/easymock3-test-java8.jar', + '/usr/share/java/easymock3-test-junit5.jar', + '/usr/share/java/easymock3-test-testng.jar' + ] + + for jar_file in all_jar_files: + code, result = self.cmd(f'[ -s {jar_file} ]') + self.assertEqual(code, 0, f"{jar_file} is empty or has zero size") + + test_jars = [ + '/usr/share/java/easymock-test-junit5.jar', + '/usr/share/java/easymock-test-testng.jar', + '/usr/share/java/easymock3-test-junit5.jar', + '/usr/share/java/easymock3-test-testng.jar' + ] + + for test_jar in test_jars: + code, result = self.cmd(f'jar tf {test_jar} 2>/dev/null | head -5') + self.assertEqual(code, 0, f"Cannot read test JAR: {test_jar}") + + if has_java: + + code, result = self.cmd('java -cp /usr/share/java/easymock.jar -version 2>&1 | head -1') + + code, result = self.cmd('jar tf /usr/share/java/easymock.jar | grep -i "class$" | head -3') + self.assertEqual(code, 0, "easymock.jar does not contain any class files") + + code, result = self.cmd('rpm -q --queryformat="%{VERSION}-%{RELEASE}\n" easymock') + self.assertEqual(code, 0, "Cannot query easymock version") + + code, result = self.cmd('rpm -ql easymock | wc -l') + file_count = int(result.strip()) + self.assertTrue(file_count > 10, f"easymock package has too few files: {file_count}") + + code, result = self.cmd('rpm -q --provides easymock | grep -i "easymock" | head -1') + self.assertEqual(code, 0, "easymock package does not provide easymock") + + def tearDown(self): + super().tearDown(self.PARAM_DIC) \ No newline at end of file