尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
JDK Docker 容器测试在 Ubuntu 18.04 失败怎么设置 docker 镜像参数排查?
JDK Docker 容器测试在 Ubuntu 18.04 失败怎么设置 docker 镜像参数排查【免费下载链接】jdkJDK main-line development https://openjdk.org/projects/jdk项目地址: https://gitcode.com/GitHub_Trending/jd/jdk在 OpenJDK 主开发仓库jdk中用make test跑 HotSpot 的 Docker 容器测试时如果你的宿主机是 Ubuntu 18.04x86测试可能会直接失败——同样的命令在 Ubuntu 16.04 上能通过。原因是默认 Docker 镜像里的 glibc 版本与宿主机不兼容文档举的例子是 Oracle Linux 7.6 for x86。解决方式不是改测试代码而是通过两个系统属性指定与宿主机匹配的 docker 镜像名和版本。本文基于 doc/testing.md 的 Docker Tests 一节和 DockerfileConfig.java 的默认值说明给出复现、修复和验证的完整路径。失败现象glibc 不兼容导致默认镜像跑不过doc/testing.md 明确记载Docker tests with default parameters may fail on systems with glibc versions not compatible with the one used in the default docker image。具体到 x86 上同一命令在 Ubuntu 16.04 上通过、在 Ubuntu 18.04 上失败。默认参数下运行 Docker 容器测试的命令是$ make test TESTjtreg:test/hotspot/jtreg/containers/docker这里的jtreg:test/hotspot/jtreg/containers/docker是一个完全限定的测试描述符指向 test/hotspot/jtreg/containers/docker/ 下的全部容器测试。如果失败运行结束时的测试汇总Test summary中TOTAL 与 PASS 不相等的行会被 ... 标记出来且make test以非零退出码结束。准备条件按 doc/testing.md 的说明运行这类测试需要满足已在本地构建过 JDKAssuming youve built the JDK locally测试通过 make 目标直接跑在构建产物上configure能找到 JTReg 框架自动发现即可否则用--with-jtregpath to jtreg home指向包含lib/jtreg.jar的 JTReg home 目录构建不是 ASAN 构建。Docker 容器测试如 DockerBasicTest.java带有requires container.support和requires !vm.asan即需要容器环境支持、且非 ASAN 构建才会执行。排查步骤一复现失败并确认是镜像问题先用默认参数复现$ make test TESTjtreg:test/hotspot/jtreg/containers/docker观察运行结束时的 Test summary如果 docker 测试对应的行出现FAIL或ERROR计数TOTAL ≠ PASS行首尾带 ... 标记且你的宿主机正是 Ubuntu 18.04 或类似 glibc 较新的系统就符合文档描述的场景。所有测试结果保存在build/$BUILD/test-results/$TEST_IDTEST_ID 是测试描述符的路径安全转换形式该路径也会打印在测试运行结束的日志里可用于进一步查看失败详情。排查步骤二用 JAVA_OPTIONS 指定 docker 镜像名和版本在 Ubuntu 18.04 上按文档给出的修复命令通过JTREG的JAVA_OPTIONS关键字传入两个系统属性jdk.test.docker.image.name和jdk.test.docker.image.version$ make test TESTjtreg:test/hotspot/jtreg/containers/docker \ JTREGJAVA_OPTIONS-Djdk.test.docker.image.nameubuntu -Djdk.test.docker.image.versionlatest两点用法说明均来自 doc/testing.md 的 Test suite control 一节JAVA_OPTIONS是 JTReg 的通用关键字其中的 Java 选项会作为-javaoption传给测试框架也就是测试进程读到的系统属性多个keywordvalue对用;分隔整个赋值建议写在引号内以保留空格和;。文档原样展示了上面这种多行写法续行后的空格会被保留直接照抄即可。这两个属性在测试库 DockerfileConfig.java 中被读取jdk.test.docker.image.name基础镜像名。未设置时按平台返回默认值——x86 默认ubuntuaarch64 默认arm64v8/ubuntuppc64le 默认ppc64le/ubuntus390x 默认s390x/ubuntujdk.test.docker.image.version镜像版本。未设置时默认latestPPC 平台除外因 Ubuntu 22.04 ppc 在 Power8 宿主机上会在libz inflateReset处崩溃PPC 默认固定为20.04。所以非 x86 架构的宿主机上出现同类失败时可以对照上表的默认镜像名把自己的镜像名和版本显式传进去。该文件的注释还特别提醒镜像版本不能是空字符串需要最新版本时用latest。DockerfileConfig 注释里还给出直接调用 jtreg 的等价方式属性直接以-D传给 jtreg$ jtreg -Djdk.test.docker.image.nameubuntu -Djdk.test.docker.image.versionlatest test/hotspot/jtreg/containers/docker/这是可选分支日常用上面的make test形式即可。结果验证修复后重跑用与复现时相同的方式判断是否解决运行结束看 Test summarydocker 容器测试这一行的 TOTAL 应等于 PASS不再出现 ... 标记和 FAIL/ERROR 计数make test返回退出码 0有失败时为非零如需核对单个用例去build/$BUILD/test-results/下对应 TEST_ID 目录查看路径在测试结束日志中打印。以 DockerBasicTest.java 为例测试自身会校验镜像内/jdk/bin/java -version以退出码 0 执行并包含 VM 名称、HelloDocker程序在容器内输出Hello Docker——这些是框架内部的断言你只需要以 summary 全 PASS 作为最终判断。边界与限制文档只说明 Ubuntu 18.04 上需要额外传镜像参数具体换成哪个镜像名和版本文档给出的示例是ubuntulatest其他取值例如针对特定架构或特定版本按 DockerfileConfig 的默认值表对照选取文档未给出更多组合示例。ASAN 构建下这些容器测试要求不满足会被跳过而非失败排查失败时先确认构建类型。测试失败时的失败处理器failure handler可能因sudo配置弹出密码提示可用--enable-jtreg-failure-handlerno关闭详见 doc/testing.md 的 Configuration 一节。【免费下载链接】jdkJDK main-line development https://openjdk.org/projects/jdk项目地址: https://gitcode.com/GitHub_Trending/jd/jdk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

逻辑漏洞——权限控制问题

逻辑漏洞——权限控制问题

一、权限控制 1、什么是权限控制 2、权限控制的方式 (1)、ACL(访问控制列表) (2)、RBAC(角色型访问控制) 3、权限控制的问题 权限控制有两个问题:一、未授权访问 二、越…

📅 2026/9/14 20:43:29
PrimeVue 入门指南:下一代 Vue UI 组件库的架构、Pass Through 与双模式主题系统

PrimeVue 入门指南:下一代 Vue UI 组件库的架构、Pass Through 与双模式主题系统

PrimeVue 入门指南:下一代 Vue UI 组件库的架构、Pass Through 与双模式主题系统 【免费下载链接】primevue Next Generation Vue UI Component Library 项目地址: https://gitcode.com/GitHub_Trending/pr/primevue 导读 本文以 PrimeVue 官方 Introductio…

📅 2026/9/14 20:43:29
逻辑漏洞——验证机制问题

逻辑漏洞——验证机制问题

一、验证机制验证机制注意分为:设计缺陷和执行缺陷Web程序常用的验证机制有:二、设计缺陷 1、可预测的用户名2、非唯一性用户名3、弱口令4、密码确认不完善5、可预测的密码6、密码重置7、记住密码8、证书当验证机制设置不完全的时候,可以通过…

📅 2026/9/14 20:43:29
MORE NEWS

更多资讯

📰

杂记(前后端通信)

PathVariable / RequestParam / RequestBody 三者的区别 PathVariable:URL 路径上的变量,REST 风格,放在 / 之间 GET /user/123 RequestParam:URL 问号后面的查询参数 GET /user?namezhangsan&age18 RequestBody&#…

📰

数学方法在软件测试中的高效应用与实践

1. 项目概述在软件测试领域,算法优化一直是提升测试效率和质量的关键突破口。作为一名从业十余年的测试工程师,我发现很多团队在测试用例设计和缺陷预测方面仍停留在经验主义阶段,缺乏系统性的数学方法论支撑。本文将分享如何将离散数学、概率…

📰

yq 取模运算符(%)完全指南:整数、浮点数与除零行为深度解析

yq 取模运算符(%)完全指南:整数、浮点数与除零行为深度解析 【免费下载链接】yq yq is a portable command-line YAML, JSON, XML, CSV, TOML, HCL and properties processor 项目地址: https://gitcode.com/GitHub_Trending/yq/yq 导…

📰

使用 iii SDK 构建跨语言 Worker:Node、Python、Rust、Go 统一开发指南

使用 iii SDK 构建跨语言 Worker:Node、Python、Rust、Go 统一开发指南 【免费下载链接】iii Effortlessly compose, extend, and observe every service in real-time for the first time ever. 项目地址: https://gitcode.com/GitHub_Trending/mo/iii iii …

📰

Windows安装Anaconda全流程:下载、环境变量、换源与验证

装 Anaconda 这件事,我帮身边朋友处理过不下几十次,翻车最多的地方出奇一致:cmd 里敲conda --version,系统冷冰冰回一句“不是内部或外部命令”。剩下的人里,还有一大部分是装完能跑,但每次conda install都…

📰

JDK Docker 容器测试在 Ubuntu 18.04 失败怎么设置 docker 镜像参数排查?

JDK Docker 容器测试在 Ubuntu 18.04 失败怎么设置 docker 镜像参数排查? 【免费下载链接】jdk JDK main-line development https://openjdk.org/projects/jdk 项目地址: https://gitcode.com/GitHub_Trending/jd/jdk 在 OpenJDK 主开发仓库(jdk&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬