openjdk9u源码分析二:搭建单元测试环境
搭建环境可分两步,
- 安装jdk9u单元测试所依赖的Tools
- 运行jdk9u自带单元测试
实验环境
- Mac OS X: 10.13.3.
- Xcode: 9.2.
- boot jdk: 1.8.0_162.
- freetype: 2.9.
- XQuartz-2.7.11.
- GDB-8.0.1.
- JT Harness5.0.
- Ant(TM) 1.9.10.
- AsmTools 6.0.
- JUnit 4.12.
- TestNG 6.9.
- JCoV 2.0.
参考: jdk源码根目录/common/doc/testing.html
1.搭建jdk9u自带单元测试依赖Tools
- 目标: 参考openjdk9u官网,搭建openjdk9u单元测试可运行环境。
- 搭建过程: 首先参考openjdk9u的测试文档,参见源码根目录/common/doc/testing.html。jdk9u的单测代码通过jtreg来运行,jtreg能够支持像jdk、jvm这样的大型代码的测试。而jtreg本身也有一些依赖环境,包括:jtharness,ant, asmtools(注意不是asm包),junit,testng,jcov。jtreg的安装参考:http://openjdk.java.net/jtreg/build.html。 jtharness5的安装参见https://wiki.openjdk.java.net/pages/viewpage.action?pageId=18448519,其可通过ant自动编译,并添加JT_HOME环境变量。http://hg.openjdk.java.net/code-tools上包括openjdk测试所需要的一些工具包。
- 结果验证:
- 切换到openjdk9u目录,该目录下已经包括编译后的jdk。
-
首先测试一个类,例如测试JniVersion.java: make run-test-only TEST="hotspot/test/native_sanity/JniVersion.java" CONF=slowdebug, 命令中run-test-only用于加速测试执行过程,它不因为源码的变更而重新打包,使用已编译的class;CONF指定JDK编译包的类型:
run-single-test.jpg -
测试JVM的GC,运行时间大概1个小时,根据个人机器而定, make run-test-only TEST="jtreg:hotspot/test:hotspot_gc" CONF=slowdebug:
run-hotspot-gc-test.jpg
- 问题总结:
-
使用openjdk9u/test目录下的Makefile执行单元测试时,make default默认运行jdk_core、langtools_jtreg、jaxp_all下的所有测试用例,运行时间大概2-3天,建议在服务器上运行或者缩小测试的范围。
-
运行openjdk9u的测试用例主要是熟悉jtreg测试工具的使用,如果不想深入了解该工具,参考openjdk官网上的指导文章,加上对make工具的配置文件了解,以及根据错误提示信息进行有针对性的配置即可完成测试环境的搭建。
网友评论