diff --git a/jtreg+jcstress.md b/jtreg+jcstress.md new file mode 100644 index 0000000000000000000000000000000000000000..e217658b1d2d926b2b1b2961a03d7c9f10da065b --- /dev/null +++ b/jtreg+jcstress.md @@ -0,0 +1,213 @@ +# 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: