changeset 93:104a1971c4d2

At least one of the tests of each category is running well.
author shade
date Thu, 13 Mar 2014 19:46:35 +0400
parents 982044a7f3bc
children 4e9d9ac1e632
files jcstress-core/src/main/java/org/openjdk/jcstress/infra/annotations/Actor.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/annotations/Arbiter.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/processors/ConcurrencyStressTestProcessor.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult3.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/LongResult1.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/buffers/ByteBufferAtomicityTests.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomics/integer/AtomicIntegerArrayInterleaveTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/scratch/basic/ThreadJoinTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/scratch/basic/ThreadStartTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/IRIWTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/LazySetTransitivityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/VolatileIRIWTest.java tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-buffers.xml
diffstat 14 files changed, 209 insertions(+), 200 deletions(-) [+]
line wrap: on
line diff
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/annotations/Actor.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/annotations/Actor.java	Thu Mar 13 19:46:35 2014 +0400
@@ -29,7 +29,25 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+/**
+ * Actor concurrency tests accept one or more:
+ *   - actors:     threads actively mutating the state, and recording the current state
+ *   - arbiters:   threads arbitrating the results *after* actors finish
+ *
+ * Shared state is represented by state object. Runners will ensure enough fresh state objects would
+ * be provided to the tests methods to unfold even the finest races.
+ *
+ * Conventions for actors:
+ *   - the method is called only by single actor thread, once per state
+ *   - for any given state, the order vs another actors is deliberately unspecified
+ *   - any given state will be eventually visited by all actors
+ *   - actor can store the observed state in the result array
+ *   - actor should not rely on the default values in the result array, and should set all elements on every call
+ *   - actor can not store the reference to result array
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
 @Target(ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
 public @interface Actor {
-}
+}
\ No newline at end of file
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/annotations/Arbiter.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/annotations/Arbiter.java	Thu Mar 13 19:46:35 2014 +0400
@@ -29,6 +29,21 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+/**
+ * Actor concurrency tests accept one or more:
+ *   - actors:     threads actively mutating the state, and recording the current state
+ *   - arbiters:   threads arbitrating the results *after* actors finish
+ *
+ * Shared state is represented by state object. Runners will ensure enough fresh state objects would
+ * be provided to the tests methods to unfold even the finest races.
+ *
+ * Conventions for arbiters:
+ *   - everything applicable to actors, EXCEPT:
+ *   - for any given state, arbiter visits the state the last, with all actor memory effects visible
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+
 @Target(ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
 public @interface Arbiter {
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/processors/ConcurrencyStressTestProcessor.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/processors/ConcurrencyStressTestProcessor.java	Thu Mar 13 19:46:35 2014 +0400
@@ -429,6 +429,7 @@
         for (Class<?> c : imports) {
             pw.println("import " + c.getName() + ';');
         }
+        pw.println("import " + info.getTest().getQualifiedName() + ";");
         pw.println("import " + info.getState().getQualifiedName() + ";");
         pw.println("import " + info.getResult().getQualifiedName() + ";");
         pw.println();
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult3.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult3.java	Thu Mar 13 19:46:35 2014 +0400
@@ -29,6 +29,7 @@
 
 import java.io.Serializable;
 
+@org.openjdk.jcstress.infra.annotations.Result
 public class IntResult3 implements Serializable, Result {
 
     @Contended
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult4.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult4.java	Thu Mar 13 19:46:35 2014 +0400
@@ -29,6 +29,7 @@
 
 import java.io.Serializable;
 
+@org.openjdk.jcstress.infra.annotations.Result
 public class IntResult4 implements Serializable, Result {
 
     @Contended
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/LongResult1.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/LongResult1.java	Thu Mar 13 19:46:35 2014 +0400
@@ -29,6 +29,7 @@
 
 import java.io.Serializable;
 
+@org.openjdk.jcstress.infra.annotations.Result
 public class LongResult1 implements Serializable, Result {
 
     @Contended
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/buffers/ByteBufferAtomicityTests.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/buffers/ByteBufferAtomicityTests.java	Thu Mar 13 19:46:35 2014 +0400
@@ -24,6 +24,9 @@
  */
 package org.openjdk.jcstress.tests.atomicity.buffers;
 
+import org.openjdk.jcstress.infra.annotations.Actor;
+import org.openjdk.jcstress.infra.annotations.ConcurrencyStressTest;
+import org.openjdk.jcstress.infra.annotations.State;
 import org.openjdk.jcstress.infra.results.LongResult1;
 import org.openjdk.jcstress.tests.Actor2_Test;
 
@@ -32,46 +35,50 @@
 
 public class ByteBufferAtomicityTests {
 
-    public static ByteBuffer order(ByteBuffer b) { b.order(ByteOrder.nativeOrder()); return b; }
+    @State
+    public static class MyState {
+        private final ByteBuffer b;
 
-    public abstract static class ByteBufferTest implements Actor2_Test<ByteBuffer, LongResult1> {
-        @Override public ByteBuffer newState()                { return order(ByteBuffer.allocate(16));              }
-        @Override public LongResult1 newResult()              { return new LongResult1();                           }
+        public MyState() {
+            b = ByteBuffer.allocate(16);
+            b.order(ByteOrder.nativeOrder());
+        }
     }
 
-    public static class IntTest extends ByteBufferTest {
-        @Override public void actor1(ByteBuffer b, LongResult1 r)  { b.putInt(0, -1);                                    }
-        @Override public void actor2(ByteBuffer b, LongResult1 r)  { r.r1 = b.getInt(0);                                 }
+    @ConcurrencyStressTest
+    public static class IntTest {
+        @Actor public void actor1(MyState s)                 { s.b.putInt(0, -1);                                    }
+        @Actor public void actor2(MyState s, LongResult1 r)  { r.r1 = s.b.getInt(0);                                 }
     }
 
-    public static class ShortTest extends ByteBufferTest {
-        @Override public void actor1(ByteBuffer b, LongResult1 r)  { b.putShort(0, (short) -1);                          }
-        @Override public void actor2(ByteBuffer b, LongResult1 r)  { r.r1 = b.getShort(0);                               }
+    public static class ShortTest {
+        @Actor public void actor1(MyState s, LongResult1 r)  { s.b.putShort(0, (short) -1);                          }
+        @Actor public void actor2(MyState s, LongResult1 r)  { r.r1 = s.b.getShort(0);                               }
     }
 
-    public static class CharTest extends ByteBufferTest {
-        @Override public void actor1(ByteBuffer b, LongResult1 r)  { b.putChar(0, 'a');                                  }
-        @Override public void actor2(ByteBuffer b, LongResult1 r)  { r.r1 = b.getChar(0);                                }
+    public static class CharTest {
+        @Actor public void actor1(MyState s, LongResult1 r)  { s.b.putChar(0, 'a');                                  }
+        @Actor public void actor2(MyState s, LongResult1 r)  { r.r1 = s.b.getChar(0);                                }
     }
 
-    public static class LongTest extends ByteBufferTest {
-        @Override public void actor1(ByteBuffer b, LongResult1 r)  { b.putLong(0, -1L);                                  }
-        @Override public void actor2(ByteBuffer b, LongResult1 r)  { r.r1 = b.getLong(0);                                }
+    public static class LongTest {
+        @Actor public void actor1(MyState s, LongResult1 r)  { s.b.putLong(0, -1L);                                  }
+        @Actor public void actor2(MyState s, LongResult1 r)  { r.r1 = s.b.getLong(0);                                }
     }
 
-    public static class DoubleTest extends ByteBufferTest {
-        @Override public void actor1(ByteBuffer b, LongResult1 r)  { b.putDouble(0, -1D);                                }
-        @Override public void actor2(ByteBuffer b, LongResult1 r)  { r.r1 = Double.doubleToRawLongBits(b.getDouble(0));  }
+    public static class DoubleTest {
+        @Actor public void actor1(MyState s, LongResult1 r)  { s.b.putDouble(0, -1D);                                }
+        @Actor public void actor2(MyState s, LongResult1 r)  { r.r1 = Double.doubleToRawLongBits(s.b.getDouble(0));  }
     }
 
-    public static class FloatTest extends ByteBufferTest {
-        @Override public void actor1(ByteBuffer b, LongResult1 r)  { b.putFloat(0, -1F);                                 }
-        @Override public void actor2(ByteBuffer b, LongResult1 r)  { r.r1 = Float.floatToRawIntBits(b.getFloat(0));      }
+    public static class FloatTest {
+        @Actor public void actor1(MyState s, LongResult1 r)  { s.b.putFloat(0, -1F);                                 }
+        @Actor public void actor2(MyState s, LongResult1 r)  { r.r1 = Float.floatToRawIntBits(s.b.getFloat(0));      }
     }
 
-    public static class ByteTest extends ByteBufferTest {
-        @Override public void actor1(ByteBuffer b, LongResult1 r)  { b.put(0, (byte) -1);                                }
-        @Override public void actor2(ByteBuffer b, LongResult1 r)  { r.r1 = b.get();                                     }
+    public static class ByteTest {
+        @Actor public void actor1(MyState s, LongResult1 r)  { s.b.put(0, (byte) -1);                                }
+        @Actor public void actor2(MyState s, LongResult1 r)  { r.r1 = s.b.get();                                     }
     }
 
 }
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/atomics/integer/AtomicIntegerArrayInterleaveTest.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/atomics/integer/AtomicIntegerArrayInterleaveTest.java	Thu Mar 13 19:46:35 2014 +0400
@@ -24,37 +24,44 @@
  */
 package org.openjdk.jcstress.tests.atomics.integer;
 
+import org.openjdk.jcstress.infra.annotations.Actor;
+import org.openjdk.jcstress.infra.annotations.Arbiter;
+import org.openjdk.jcstress.infra.annotations.ConcurrencyStressTest;
+import org.openjdk.jcstress.infra.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult3;
 import org.openjdk.jcstress.tests.Actor2_Arbiter1_Test;
 
 import java.util.concurrent.atomic.AtomicIntegerArray;
 
-public class AtomicIntegerArrayInterleaveTest implements Actor2_Arbiter1_Test<AtomicIntegerArray, IntResult3> {
+@ConcurrencyStressTest
+public class AtomicIntegerArrayInterleaveTest {
 
     /** Array size: 256 bytes inevitably crosses the cache line on most implementations */
     public static final int SIZE = 256;
 
-    @Override
-    public AtomicIntegerArray newState() {
-        return new AtomicIntegerArray(SIZE);
+    @State
+    public static class MyState extends AtomicIntegerArray {
+        public MyState() {
+            super(SIZE);
+        }
     }
 
-    @Override
-    public void actor1(AtomicIntegerArray s, IntResult3 r) {
+    @Actor
+    public void actor1(MyState s) {
         for (int i = 0; i < SIZE; i += 2) {
             s.set(i, 1);
         }
     }
 
-    @Override
-    public void actor2(AtomicIntegerArray s, IntResult3 r) {
+    @Actor
+    public void actor2(MyState s) {
         for (int i = 1; i < SIZE; i += 2) {
             s.set(i, 2);
         }
     }
 
-    @Override
-    public void arbiter1(AtomicIntegerArray  state, IntResult3 r) {
+    @Arbiter
+    public void arbiter1(MyState state, IntResult3 r) {
         r.r1 = r.r2 = r.r3 = 0;
         for (int i = 0; i < SIZE; i++) {
             int s = state.get(i);
@@ -74,9 +81,4 @@
         }
     }
 
-    @Override
-    public IntResult3 newResult() {
-        return new IntResult3();
-    }
-
 }
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/scratch/basic/ThreadJoinTest.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/scratch/basic/ThreadJoinTest.java	Thu Mar 13 19:46:35 2014 +0400
@@ -24,16 +24,23 @@
  */
 package org.openjdk.jcstress.tests.scratch.basic;
 
+import org.openjdk.jcstress.infra.annotations.Actor;
+import org.openjdk.jcstress.infra.annotations.ConcurrencyStressTest;
+import org.openjdk.jcstress.infra.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult2;
 import org.openjdk.jcstress.tests.Actor1_Test;
 
-public class ThreadJoinTest implements Actor1_Test<ThreadJoinTest.State, IntResult2> {
+@ConcurrencyStressTest
+@State
+public class ThreadJoinTest {
 
-    @Override
-    public void actor1(final State s, IntResult2 r) {
+    private int a;
+
+    @Actor
+    public void actor1(IntResult2 r) {
         Thread t = new Thread() {
             public void run() {
-                s.a = 1;
+                a = 1;
             }
         };
         t.start();
@@ -43,21 +50,7 @@
             e.printStackTrace();
         }
         r.r1 = 1;
-        r.r2 = s.a;
-    }
-
-    @Override
-    public State newState() {
-        return new State();
-    }
-
-    @Override
-    public IntResult2 newResult() {
-        return new IntResult2();
-    }
-
-    public static class State {
-        private int a;
+        r.r2 = a;
     }
 
 }
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/scratch/basic/ThreadStartTest.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/scratch/basic/ThreadStartTest.java	Thu Mar 13 19:46:35 2014 +0400
@@ -24,18 +24,25 @@
  */
 package org.openjdk.jcstress.tests.scratch.basic;
 
+import org.openjdk.jcstress.infra.annotations.Actor;
+import org.openjdk.jcstress.infra.annotations.ConcurrencyStressTest;
+import org.openjdk.jcstress.infra.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult2;
 import org.openjdk.jcstress.tests.Actor1_Test;
 
-public class ThreadStartTest implements Actor1_Test<ThreadStartTest.State, IntResult2> {
+@ConcurrencyStressTest
+@State
+public class ThreadStartTest {
 
-    @Override
-    public void actor1(final State s, final IntResult2 r) {
-        s.a = 1;
+    private int a;
+
+    @Actor
+    public void actor1(final IntResult2 r) {
+        a = 1;
         Thread t = new Thread() {
             public void run() {
                 r.r1 = 1;
-                r.r2 = s.a;
+                r.r2 = a;
             }
         };
         t.start();
@@ -46,18 +53,4 @@
         }
     }
 
-    @Override
-    public State newState() {
-        return new State();
-    }
-
-    @Override
-    public IntResult2 newResult() {
-        return new IntResult2();
-    }
-
-    public static class State {
-        private int a;
-    }
-
 }
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/IRIWTest.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/IRIWTest.java	Thu Mar 13 19:46:35 2014 +0400
@@ -24,46 +24,39 @@
  */
 package org.openjdk.jcstress.tests.volatiles;
 
+import org.openjdk.jcstress.infra.annotations.Actor;
+import org.openjdk.jcstress.infra.annotations.ConcurrencyStressTest;
+import org.openjdk.jcstress.infra.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult4;
 import org.openjdk.jcstress.tests.Actor4_Test;
 
-public class IRIWTest implements Actor4_Test<IRIWTest.State, IntResult4> {
+@ConcurrencyStressTest
+@State
+public class IRIWTest {
 
-    @Override
-    public State newState() {
-        return new State();
+    public int x;
+    public int y;
+
+    @Actor
+    public void actor1() {
+        x = 1;
     }
 
-    @Override
-    public void actor1(State s, IntResult4 r) {
-        s.x = 1;
+    @Actor
+    public void actor2() {
+        y = 1;
     }
 
-    @Override
-    public void actor2(State s, IntResult4 r) {
-        s.y = 1;
+    @Actor
+    public void actor3(IntResult4 r) {
+        r.r1 = x;
+        r.r2 = y;
     }
 
-    @Override
-    public void actor3(State s, IntResult4 r) {
-        r.r1 = s.x;
-        r.r2 = s.y;
-    }
-
-    @Override
-    public void actor4(State s, IntResult4 r) {
-        r.r4 = s.y;
-        r.r3 = s.x;
-    }
-
-    @Override
-    public IntResult4 newResult() {
-        return new IntResult4();
-    }
-
-    public static class State {
-        public int x;
-        public int y;
+    @Actor
+    public void actor4(IntResult4 r) {
+        r.r4 = y;
+        r.r3 = x;
     }
 
 }
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/LazySetTransitivityTest.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/LazySetTransitivityTest.java	Thu Mar 13 19:46:35 2014 +0400
@@ -24,45 +24,36 @@
  */
 package org.openjdk.jcstress.tests.volatiles;
 
-
+import org.openjdk.jcstress.infra.annotations.Actor;
+import org.openjdk.jcstress.infra.annotations.ConcurrencyStressTest;
+import org.openjdk.jcstress.infra.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult3;
-import org.openjdk.jcstress.tests.Actor3_Test;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-public class LazySetTransitivityTest implements Actor3_Test<LazySetTransitivityTest.State, IntResult3> {
+@ConcurrencyStressTest
+@State
+public class LazySetTransitivityTest {
 
-    @Override
-    public State newState() {
-        return new State();
+    public final AtomicInteger a = new AtomicInteger();
+    public final AtomicInteger b = new AtomicInteger();
+
+    @Actor
+    public void actor1() {
+        a.lazySet(1);
     }
 
-    @Override
-    public void actor1(State s, IntResult3 r) {
-        s.a.lazySet(1);
-    }
-
-    @Override
-    public void actor2(State s, IntResult3 r) {
-        int aValue = s.a.get();
-        s.b.set(aValue);
+    @Actor
+    public void actor2(IntResult3 r) {
+        int aValue = a.get();
+        b.set(aValue);
         r.r1 = aValue;
     }
 
-    @Override
-    public void actor3(State s, IntResult3 r) {
-        r.r2 = s.b.get();
-        r.r3 = s.a.get();
+    @Actor
+    public void actor3(IntResult3 r) {
+        r.r2 = b.get();
+        r.r3 = a.get();
     }
 
-    @Override
-    public IntResult3 newResult() {
-        return new IntResult3();
-    }
-
-    // TODO: Should have used volatiles, but lazySet is conveniently exposed by Atomics.
-    public static class State {
-        public final AtomicInteger a = new AtomicInteger();
-        public final AtomicInteger b = new AtomicInteger();
-    }
 }
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/VolatileIRIWTest.java	Thu Mar 13 19:13:40 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/volatiles/VolatileIRIWTest.java	Thu Mar 13 19:46:35 2014 +0400
@@ -24,46 +24,39 @@
  */
 package org.openjdk.jcstress.tests.volatiles;
 
+import org.openjdk.jcstress.infra.annotations.Actor;
+import org.openjdk.jcstress.infra.annotations.ConcurrencyStressTest;
+import org.openjdk.jcstress.infra.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult4;
 import org.openjdk.jcstress.tests.Actor4_Test;
 
-public class VolatileIRIWTest implements Actor4_Test<VolatileIRIWTest.State, IntResult4> {
+@ConcurrencyStressTest
+@State
+public class VolatileIRIWTest {
 
-    @Override
-    public State newState() {
-        return new State();
+    public volatile int x;
+    public volatile int y;
+
+    @Actor
+    public void actor1() {
+        x = 1;
     }
 
-    @Override
-    public void actor1(State s, IntResult4 r) {
-        s.x = 1;
+    @Actor
+    public void actor2() {
+        y = 1;
     }
 
-    @Override
-    public void actor2(State s, IntResult4 r) {
-        s.y = 1;
+    @Actor
+    public void actor3(IntResult4 r) {
+        r.r1 = x;
+        r.r2 = y;
     }
 
-    @Override
-    public void actor3(State s, IntResult4 r) {
-        r.r1 = s.x;
-        r.r2 = s.y;
-    }
-
-    @Override
-    public void actor4(State s, IntResult4 r) {
-        r.r4 = s.y;
-        r.r3 = s.x;
-    }
-
-    @Override
-    public IntResult4 newResult() {
-        return new IntResult4();
-    }
-
-    public static class State {
-        public volatile int x;
-        public volatile int y;
+    @Actor
+    public void actor4(IntResult4 r) {
+        r.r4 = y;
+        r.r3 = x;
     }
 
 }
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-buffers.xml	Thu Mar 13 19:13:40 2014 +0400
+++ b/tests-custom/src/main/resources/org/openjdk/jcstress/desc/atomicity-buffers.xml	Thu Mar 13 19:46:35 2014 +0400
@@ -119,62 +119,62 @@
     </template>
 
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests$ByteTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests.ByteTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests$FloatTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests.FloatTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests$IntTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests.IntTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests$LongTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests.LongTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests$ShortTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests.ShortTest"/>
 
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests$ByteTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests.ByteTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests$FloatTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests.FloatTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests$IntTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests.IntTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests$LongTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests.LongTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests$ShortTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests.ShortTest"/>
 
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.FloatBufferAtomicityTests$FloatTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.FloatBufferAtomicityTests.FloatTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.IntBufferAtomicityTests$IntTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.IntBufferAtomicityTests.IntTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.LongBufferAtomicityTests$LongTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.LongBufferAtomicityTests.LongTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ShortBufferAtomicityTests$ShortTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ShortBufferAtomicityTests.ShortTest"/>
 
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests$IntViewTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests.IntViewTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests$LongViewTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests.LongViewTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests$ShortViewTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests.ShortViewTest"/>
 
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests$IntViewTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests.IntViewTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests$LongViewTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests.LongViewTest"/>
     <test template="main"
-          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests$ShortViewTest"/>
+          name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests.ShortViewTest"/>
 
-    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests$CharTest" />
-    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests$CharViewTest" />
-    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests$CharViewTest" />
-    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.CharBufferAtomicityTests$CharTest" />
-    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests$CharTest" />
+    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests.CharTest" />
+    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests.CharViewTest" />
+    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests.CharViewTest" />
+    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.CharBufferAtomicityTests.CharTest" />
+    <test template="main-char" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests.CharTest" />
 
-    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests$DoubleTest" />
-    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests$DoubleViewTest" />
-    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests$DoubleViewTest" />
-    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests$DoubleTest" />
-    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.DoubleBufferAtomicityTests$DoubleTest" />
+    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferAtomicityTests.DoubleTest" />
+    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests.DoubleViewTest" />
+    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests.DoubleViewTest" />
+    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferAtomicityTests.DoubleTest" />
+    <test template="main-double" name="org.openjdk.jcstress.tests.atomicity.buffers.DoubleBufferAtomicityTests.DoubleTest" />
 
-    <test template="main-float" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests$FloatViewTest" />
-    <test template="main-float" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests$FloatViewTest" />
+    <test template="main-float" name="org.openjdk.jcstress.tests.atomicity.buffers.ByteBufferViewsAtomicityTests.FloatViewTest" />
+    <test template="main-float" name="org.openjdk.jcstress.tests.atomicity.buffers.DirectByteBufferViewsAtomicityTests.FloatViewTest" />
 </testsuite>