# Jcstress ## Jcstress介绍 Jcstress是openjdk开源的实验性测试套用于测试JVM并发能力的测试套 Jcstress 获取地址:https://builds.shipilev.net/jcstress/jcstress-tests-all-20191016.jar ## 执行jcstress java -jar jcstress.jar ## 执行jcstress单个用例 java -jar jcstress.jar -t testcase ## 测试结果 Jcstress的执行结果生成在results/index.html文件中 # Jtreg ## jtreg介绍 jtreg是openJDK社区开放的测试框架,提供公共配置和方法以便社区开发者进行测试代码的编写和执行 jtreg 获取地址:https://ci.adoptopenjdk.net/view/Dependencies/job/jtreg/lastSuccessfulBuild/artifact/jtreg-4.2.0-tip.tar.gz ## 开源测试套 OpenJDK 8 开源测试套:`hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/` 下载openjdk开源代码之后,运行bash get_source.sh 下载测试套。 OpenJDK 11 开源测试套:`hg clone http://hg.openjdk.java.net/jdk-updates/jdk11u` JDK11源代码clone下载之后测试用例在test目录下。 ## 执行开源测试用例 1. 设置环境变量 `export JAVA_HOME=path/to/JDK` `export PATH=$JAVA_HOME/bin:$PATH` `export JT_HOME=path/to/jtreg_home` `export PATH=$JT_HOME/bin:$PATH` 2. 执行测试用例 2.1 执行单个用例 `jtreg -va XXX/YYY.java` 2.2 执行整个测试套 ``` jdk8u: jtreg -va -ignore:quiet -jit -conc:auto -timeout:5 -tl:3590 -exclude:exclude.txt -vmoptions:"$jvmOptions" jdk8u/hotspot/test jdk8u/langtools/test jdk8u/nashorn/test jdk8u/jdk/test jdk11u: jtreg -va -ignore:quiet -jit -conc:auto -timeout:5 -tl:3590 -exclude:exclude.txt -vmoptions:"$jvmOptions" jdk11u/test/ ``` 3. 查看执行结果 测试套的结果统计在JTreport/html/report.html中 测试用例的日志存放在Jtwork中,用例XXX/YYY/ZZZ.java的执行日志存在在JTwork/XXX/YYY/ZZZ.jtr文件中 jtr文件中test result有三种状态:Passed、Failed、Error,分别对应用例执行通过,执行失败和执行出错。 ## jtreg使用说明 用户对jtreg框架的使用是通过执行封装好的jtreg脚本来实现。jtreg的接口详细说明如下: - 参数说明: ``` \-v: : 测试环境配置 -v1 输出一行测试用例名称、状态 -va 输出所有用例全部输出 -ve 输出error用例的全部信息 -vf 输出fail用例的全部信息 -vp 输出pass用例的全部信息 -vt 输出每个步骤的具体时间 -conc: 用例并发数,auto=空闲的核数 -e:name[=value][,name[=value]...] 指定测试用例的环境变量 -ignore:< quiet | error | run >; 添加ignore标签的用例的处理方法 -l: 列出所有测试用例 -nr: 不生成report -r: 存放report的目录,默认为JTreport -timeout: 用例超时限制,输入为120s的吧倍数。 eg. -timeout:5 = 600s -tl:<#second> 对于超时时间超过这个参数的用例,不执行 -w: 指定工作目录,默认为JTwork -a 带有/manual标签的用例都不会执行。 -exclude: 文件中的用例会被过滤 -m 仅运行带/manual的用例 -noshell 过滤掉任何需要执行shell脚本的用例 -shell 仅执行shell脚本用例 -agentlib:[=] 加载本地库 -agentpath:[=] 根据本地库的完整路径加载本地库 -compilejdk: 使用指定的JDK编译用例 -D= 定义一个系统属性 -javacoptions: