如何在IDEA中使用jcstress进行并发压力测试
在研究高并发的时候,偶然发现这个,还是有点好用的。
-
测试类
/** * @author WGR * @create 2020/12/22 -- 20:48 */ @JCStressTest @Outcome(id = {"1","4"}, expect = Expect.ACCEPTABLE,desc = "ok") @Outcome(id = "0",expect = Expect.ACCEPTABLE_INTERESTING,desc = "danger") @State public class Test03Orderliness { int num = 0; boolean ready = false; // 线程一执行的代码 @Actor public void actor1(I_Result r) { if(ready) { r.r1 = num + num; } else { r.r1 = 1; } } @Actor public void actor2(I_Result r) { num = 2; ready = true; } }
-
pom.xml
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jcstress.version>0.5</jcstress.version> <javac.target>1.8</javac.target> <uberjar.name>jcstress</uberjar.name> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.openjdk.jcstress/jcstress-core --> <dependency> <groupId>org.openjdk.jcstress</groupId> <artifactId>jcstress-core</artifactId> <version>0.3</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <compilerVersion>${javac.target}</compilerVersion> <source>${javac.target}</source> <target>${javac.target}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.2</version> <executions> <execution> <id>main</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <finalName>${uberjar.name}</finalName> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>org.openjdk.jcstress.Main</mainClass> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/TestList</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
然后进行测试
mvn clean install
java -jar target/jcstress.jar