Я новичок в JCStress и пытаюсь запустить «привет мир» для JCStress, но сталкиваюсь с некоторыми проблемами.Я думаю, что есть кое-что очевидное, что я упускаю.
Я перехожу по этой ссылке, чтобы узнать.И образцы, которые я пробую, здесь .
Я начал с шаблона проекта, созданного из следующего открытого архетипа maven:
mvn archetype:generate "-DinteractiveMode=false" "-DarchetypeGroupId=org.openjdk.jcstress" "-DarchetypeArtifactId=jcstress-java-test-archetype" "-DarchetypeVersion=0.4" "-DgroupId=org.sample" "-DartifactId=test" "-Dversion=1.0"
Я сделал mvn clean install
и получил .\target\jcstress.jar
.Я добавил MyConcurrencyTest
, который имеет следующий код в пакете org.sample
package org.sample;
import org.openjdk.jcstress.annotations.*;
import org.openjdk.jcstress.infra.results.I_Result;
@JCStressTest
@Outcome(id = "1", expect = Expect.ACCEPTABLE_INTERESTING, desc = "One update lost: atomicity failure.")
@Outcome(id = "2", expect = Expect.ACCEPTABLE, desc = "Actors updated independently.")
@State
public class MyConcurrencyTest {
int v;
@Actor
public void actor1() {
v++;
}
@Actor
public void actor2() {
v++;
}
@Arbiter
public void arbiter(I_Result r) {
r.r1 = v;
}
}
Ниже приведена структура моего проекта:
Теперь я пытаюсь запустить это с помощью этой команды (мой текущий каталог - это корневой каталог проекта, когда я выполняю эту команду)
java -cp ".\target\classes" -jar .\target\jcstress.jar -v -t org.sample.MyConcurrencyTest
Но org.sample.MyConcurrencyTest
не выполняется.
(я понимаю, что если мы не укажем тесты с использованием -t <testname>
, то тесты из jcstress.jar/META-INF/TestList
будут подобраны.) Я думаю, что упускаю что-то очень очевидное.Может кто-нибудь помочь?
(Было бы здорово, если бы кто-то мог поделиться хорошим начальным руководством по JCStress, объясняющим его возможности и функциональные возможности)