diff options
Diffstat (limited to 'src/junit/com/jogamp/common/util/locks')
5 files changed, 243 insertions, 243 deletions
diff --git a/src/junit/com/jogamp/common/util/locks/TestRecursiveLock01.java b/src/junit/com/jogamp/common/util/locks/TestRecursiveLock01.java index df5f3ba..26677c0 100644 --- a/src/junit/com/jogamp/common/util/locks/TestRecursiveLock01.java +++ b/src/junit/com/jogamp/common/util/locks/TestRecursiveLock01.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.common.util.locks; import java.io.IOException; @@ -47,16 +47,16 @@ import org.junit.runners.MethodSorters; public class TestRecursiveLock01 extends JunitTracer { public enum YieldMode { - NONE(0), YIELD(1), SLEEP(2); - + NONE(0), YIELD(1), SLEEP(2); + public final int id; - YieldMode(int id){ + YieldMode(final int id){ this.id = id; } - } - - static void yield(YieldMode mode) { + } + + static void yield(final YieldMode mode) { switch(mode) { case YIELD: Thread.yield(); @@ -64,7 +64,7 @@ public class TestRecursiveLock01 extends JunitTracer { case SLEEP: try { Thread.sleep(10); - } catch (InterruptedException ie) { + } catch (final InterruptedException ie) { ie.printStackTrace(); } break; @@ -76,7 +76,7 @@ public class TestRecursiveLock01 extends JunitTracer { static class LockedObject { static final boolean DEBUG = false; - + static class ThreadStat { ThreadStat() { total = 0; @@ -85,16 +85,16 @@ public class TestRecursiveLock01 extends JunitTracer { long total; // ns int counter; } - - private RecursiveLock locker; // post + + private final RecursiveLock locker; // post private int deferredThreadCount = 0; // synced - private Map<String, ThreadStat> threadWaitMap = Collections.synchronizedMap(new HashMap<String, ThreadStat>()); // locked - - long avrg; // ns, post + private final Map<String, ThreadStat> threadWaitMap = Collections.synchronizedMap(new HashMap<String, ThreadStat>()); // locked + + long avrg; // ns, post long max_deviation; // ns, post long min_deviation; // ns, post - public LockedObject(LockFactory.ImplType implType, boolean fair) { + public LockedObject(final LockFactory.ImplType implType, final boolean fair) { locker = LockFactory.createRecursiveLock(implType, fair); } @@ -107,8 +107,8 @@ public class TestRecursiveLock01 extends JunitTracer { public synchronized int getDeferredThreadCount() { return deferredThreadCount; } - - public final void action1Direct(int l, YieldMode yieldMode) { + + public final void action1Direct(int l, final YieldMode yieldMode) { if(DEBUG) { System.err.print("<a1"); } @@ -133,13 +133,13 @@ public class TestRecursiveLock01 extends JunitTracer { class Action2 implements Runnable { int l; YieldMode yieldMode; - - Action2(int l, YieldMode yieldMode) { + + Action2(final int l, final YieldMode yieldMode) { this.l=l; this.yieldMode=yieldMode; incrDeferredThreadCount(); } - + public void run() { if(DEBUG) { System.err.print("[a2"); @@ -165,11 +165,11 @@ public class TestRecursiveLock01 extends JunitTracer { if(0>dc) { throw new InternalError("deferredThreads: "+dc); } - } + } } - public final void action2Deferred(int l, YieldMode yieldMode) { - Action2 action2 = new Action2(l, yieldMode); + public final void action2Deferred(final int l, final YieldMode yieldMode) { + final Action2 action2 = new Action2(l, yieldMode); new Thread(action2, Thread.currentThread().getName()+"-deferred").start(); } @@ -177,7 +177,7 @@ public class TestRecursiveLock01 extends JunitTracer { long td = System.nanoTime(); locker.lock(); td = System.nanoTime() - td; - + final String cur = Thread.currentThread().getName(); ThreadStat ts = threadWaitMap.get(cur); if(null == ts) { @@ -195,37 +195,37 @@ public class TestRecursiveLock01 extends JunitTracer { public final boolean isLocked() { return locker.isLocked(); } - - public void stats(boolean dump) { + + public void stats(final boolean dump) { long timeAllLocks=0; int numAllLocks=0; - for(Iterator<String> i = threadWaitMap.keySet().iterator(); i.hasNext(); ) { - String name = i.next(); - ThreadStat ts = threadWaitMap.get(name); + for(final Iterator<String> i = threadWaitMap.keySet().iterator(); i.hasNext(); ) { + final String name = i.next(); + final ThreadStat ts = threadWaitMap.get(name); timeAllLocks += ts.total; numAllLocks += ts.counter; - } + } max_deviation = Long.MIN_VALUE; min_deviation = Long.MAX_VALUE; avrg = timeAllLocks/numAllLocks; if(dump) { - System.err.printf("Average: %6d ms / %6d times = %8d ns", + System.err.printf("Average: %6d ms / %6d times = %8d ns", timeAllLocks/1000000, numAllLocks, avrg); System.err.println(); } - for(Iterator<String> i = threadWaitMap.keySet().iterator(); i.hasNext(); numAllLocks++) { - String name = i.next(); + for(final Iterator<String> i = threadWaitMap.keySet().iterator(); i.hasNext(); numAllLocks++) { + final String name = i.next(); final ThreadStat ts = threadWaitMap.get(name); final long a = ts.total/ts.counter; final long d = a - avrg; max_deviation = Math.max(max_deviation, d); min_deviation = Math.min(min_deviation, d); if(dump) { - System.err.printf("%-35s %12d ns / %6d times, a %8d ns, d %8d ns", + System.err.printf("%-35s %12d ns / %6d times, a %8d ns, d %8d ns", name, ts.total, ts.counter, a, d); System.err.println(); } - } + } if(dump) { System.err.printf("Deviation (min/max): [%8d ns - %8d ns]", min_deviation, max_deviation); System.err.println(); @@ -248,7 +248,7 @@ public class TestRecursiveLock01 extends JunitTracer { int iloops; YieldMode yieldMode; - public LockedObjectRunner1(LockedObject lo, int loops, int iloops, YieldMode yieldMode) { + public LockedObjectRunner1(final LockedObject lo, final int loops, final int iloops, final YieldMode yieldMode) { this.lo = lo; this.loops = loops; this.iloops = iloops; @@ -264,18 +264,18 @@ public class TestRecursiveLock01 extends JunitTracer { public final boolean isStopped() { return stopped; } - + public void waitUntilStopped() { synchronized(this) { while(!stopped) { try { this.wait(); - } catch (InterruptedException e) { + } catch (final InterruptedException e) { e.printStackTrace(); } } } - + } public void run() { @@ -291,18 +291,18 @@ public class TestRecursiveLock01 extends JunitTracer { } } - protected long testLockedObjectImpl(LockFactory.ImplType implType, boolean fair, - int threadNum, int loops, int iloops, YieldMode yieldMode) throws InterruptedException { + protected long testLockedObjectImpl(final LockFactory.ImplType implType, final boolean fair, + final int threadNum, final int loops, final int iloops, final YieldMode yieldMode) throws InterruptedException { final long t0 = System.currentTimeMillis(); - LockedObject lo = new LockedObject(implType, fair); - LockedObjectRunner[] runners = new LockedObjectRunner[threadNum]; - Thread[] threads = new Thread[threadNum]; + final LockedObject lo = new LockedObject(implType, fair); + final LockedObjectRunner[] runners = new LockedObjectRunner[threadNum]; + final Thread[] threads = new Thread[threadNum]; int i; for(i=0; i<threadNum; i++) { runners[i] = new LockedObjectRunner1(lo, loops, iloops, yieldMode); // String name = Thread.currentThread().getName()+"-ActionThread-"+i+"_of_"+threadNum; - String name = "ActionThread-"+i+"_of_"+threadNum; + final String name = "ActionThread-"+i+"_of_"+threadNum; threads[i] = new Thread( runners[i], name ); threads[i].start(); } @@ -312,17 +312,17 @@ public class TestRecursiveLock01 extends JunitTracer { } while( 0 < lo.getDeferredThreadCount() ) { Thread.sleep(100); - } + } Assert.assertEquals(0, lo.locker.getHoldCount()); Assert.assertEquals(false, lo.locker.isLocked()); Assert.assertEquals(0, lo.getDeferredThreadCount()); - + final long dt = System.currentTimeMillis()-t0; lo.stats(false); - + System.err.println(); final String fair_S = fair ? "fair " : "unfair" ; - System.err.printf("---- TestRecursiveLock01.testLockedObjectThreading: i %5s, %s, threads %2d, loops-outter %6d, loops-inner %6d, yield %5s - dt %6d ms, avrg %8d ns, deviation [ %8d .. %8d ] ns", + System.err.printf("---- TestRecursiveLock01.testLockedObjectThreading: i %5s, %s, threads %2d, loops-outter %6d, loops-inner %6d, yield %5s - dt %6d ms, avrg %8d ns, deviation [ %8d .. %8d ] ns", implType, fair_S, threadNum, loops, iloops, yieldMode, dt, lo.avrg, lo.min_deviation, lo.max_deviation); System.err.println(); return dt; @@ -330,247 +330,247 @@ public class TestRecursiveLock01 extends JunitTracer { @Test public void testLockedObjectThreading5x1000x10000N_Int01_Fair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Int01; - boolean fair=true; - int threadNum=5; - int loops=1000; - int iloops=10000; - YieldMode yieldMode=YieldMode.NONE; - + final LockFactory.ImplType t = LockFactory.ImplType.Int01; + final boolean fair=true; + int threadNum=5; + int loops=1000; + int iloops=10000; + final YieldMode yieldMode=YieldMode.NONE; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading5x1000x10000N_Java5_Fair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Java5; - boolean fair=true; - int threadNum=5; - int loops=1000; - int iloops=10000; - YieldMode yieldMode=YieldMode.NONE; - + final LockFactory.ImplType t = LockFactory.ImplType.Java5; + final boolean fair=true; + int threadNum=5; + int loops=1000; + int iloops=10000; + final YieldMode yieldMode=YieldMode.NONE; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } - + @Test public void testLockedObjectThreading5x1000x10000N_Int01_Unfair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Int01; - boolean fair=false; - int threadNum=5; - int loops=1000; - int iloops=10000; - YieldMode yieldMode=YieldMode.NONE; - + final LockFactory.ImplType t = LockFactory.ImplType.Int01; + final boolean fair=false; + int threadNum=5; + int loops=1000; + int iloops=10000; + final YieldMode yieldMode=YieldMode.NONE; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading5x1000x10000N_Java5_Unfair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Java5; - boolean fair=false; - int threadNum=5; - int loops=1000; - int iloops=10000; - YieldMode yieldMode=YieldMode.NONE; - + final LockFactory.ImplType t = LockFactory.ImplType.Java5; + final boolean fair=false; + int threadNum=5; + int loops=1000; + int iloops=10000; + final YieldMode yieldMode=YieldMode.NONE; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } - + @Test public void testLockedObjectThreading25x100x100Y_Int01_Fair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Int01; - boolean fair=true; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.YIELD; - + final LockFactory.ImplType t = LockFactory.ImplType.Int01; + final boolean fair=true; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.YIELD; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - - testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); + + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading25x100x100Y_Java5_Fair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Java5; - boolean fair=true; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.YIELD; - + final LockFactory.ImplType t = LockFactory.ImplType.Java5; + final boolean fair=true; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.YIELD; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - - testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); + + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading25x100x100Y_Int01_Unair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Int01; - boolean fair=false; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.YIELD; - + final LockFactory.ImplType t = LockFactory.ImplType.Int01; + final boolean fair=false; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.YIELD; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - - testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); + + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading25x100x100Y_Java5_Unfair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Java5; - boolean fair=false; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.YIELD; - + final LockFactory.ImplType t = LockFactory.ImplType.Java5; + final boolean fair=false; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.YIELD; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - - testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); + + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } // @Test public void testLockedObjectThreading25x100x100S_Int01_Fair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Int01; - boolean fair=true; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.SLEEP; - + final LockFactory.ImplType t = LockFactory.ImplType.Int01; + final boolean fair=true; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.SLEEP; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } // @Test public void testLockedObjectThreading25x100x100S_Java5() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Java5; - boolean fair=true; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.SLEEP; - + final LockFactory.ImplType t = LockFactory.ImplType.Java5; + final boolean fair=true; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.SLEEP; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading25x100x100N_Int01_Fair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Int01; - boolean fair=true; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.NONE; - + final LockFactory.ImplType t = LockFactory.ImplType.Int01; + final boolean fair=true; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.NONE; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading25x100x100N_Java5_Fair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Java5; - boolean fair=true; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.NONE; - + final LockFactory.ImplType t = LockFactory.ImplType.Java5; + final boolean fair=true; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.NONE; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading25x100x100N_Int01_Unfair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Int01; - boolean fair=false; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.NONE; - + final LockFactory.ImplType t = LockFactory.ImplType.Int01; + final boolean fair=false; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.NONE; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } @Test public void testLockedObjectThreading25x100x100N_Java5_Unfair() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Java5; - boolean fair=false; - int threadNum=25; - int loops=100; - int iloops=100; - YieldMode yieldMode=YieldMode.NONE; - + final LockFactory.ImplType t = LockFactory.ImplType.Java5; + final boolean fair=false; + int threadNum=25; + int loops=100; + int iloops=100; + final YieldMode yieldMode=YieldMode.NONE; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { threadNum=5; loops=5; iloops=10; } - + testLockedObjectImpl(t, fair, threadNum, loops, iloops, yieldMode); } - static int atoi(String a) { + static int atoi(final String a) { int i=0; try { i = Integer.parseInt(a); - } catch (Exception ex) { ex.printStackTrace(); } + } catch (final Exception ex) { ex.printStackTrace(); } return i; } - public static void main(String args[]) throws IOException, InterruptedException { - String tstname = TestRecursiveLock01.class.getName(); + public static void main(final String args[]) throws IOException, InterruptedException { + final String tstname = TestRecursiveLock01.class.getName(); org.junit.runner.JUnitCore.main(tstname); - + /** BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); System.err.println("Press enter to continue"); - System.err.println(stdin.readLine()); + System.err.println(stdin.readLine()); TestRecursiveLock01 t = new TestRecursiveLock01(); t.testLockedObjectThreading5x1000x10000N_Int01_Unfair(); - + t.testLockedObjectThreading5x1000x10000N_Int01_Fair(); t.testLockedObjectThreading5x1000x10000N_Java5_Fair(); t.testLockedObjectThreading5x1000x10000N_Int01_Unfair(); diff --git a/src/junit/com/jogamp/common/util/locks/TestRecursiveThreadGroupLock01.java b/src/junit/com/jogamp/common/util/locks/TestRecursiveThreadGroupLock01.java index 51cc0ac..b361463 100644 --- a/src/junit/com/jogamp/common/util/locks/TestRecursiveThreadGroupLock01.java +++ b/src/junit/com/jogamp/common/util/locks/TestRecursiveThreadGroupLock01.java @@ -3,14 +3,14 @@ * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR @@ -20,12 +20,12 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of JogAmp Community. */ - + package com.jogamp.common.util.locks; import java.io.IOException; @@ -43,16 +43,16 @@ import org.junit.runners.MethodSorters; public class TestRecursiveThreadGroupLock01 extends JunitTracer { public enum YieldMode { - NONE(0), YIELD(1), SLEEP(2); - + NONE(0), YIELD(1), SLEEP(2); + public final int id; - YieldMode(int id){ + YieldMode(final int id){ this.id = id; } - } - - static void yield(YieldMode mode) { + } + + static void yield(final YieldMode mode) { switch(mode) { case YIELD: Thread.yield(); @@ -60,7 +60,7 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { case SLEEP: try { Thread.sleep(10); - } catch (InterruptedException ie) { + } catch (final InterruptedException ie) { ie.printStackTrace(); } break; @@ -72,8 +72,8 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { static class LockedObject { static final boolean DEBUG = false; - - private RecursiveThreadGroupLock locker; // post + + private final RecursiveThreadGroupLock locker; // post private volatile int slaveCounter; public LockedObject() { @@ -81,7 +81,7 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { slaveCounter = 0; } - public final void masterAction(String tab, String name, Thread[] slaves, int loops, int mark, final YieldMode yieldMode) { + public final void masterAction(final String tab, final String name, final Thread[] slaves, final int loops, final int mark, final YieldMode yieldMode) { locker.lock(); if(DEBUG) { System.err.println(tab+"<"+name+" c "+slaveCounter); @@ -107,12 +107,12 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { } } - public final void slaveAction(String tab, String name, int loops, int mark, YieldMode yieldMode) { + public final void slaveAction(final String tab, final String name, int loops, final int mark, final YieldMode yieldMode) { if(slaveCounter>=mark) { if(DEBUG) { System.err.println(tab+"["+name+" c "+slaveCounter+" - NOP]"); } - return; + return; } locker.lock(); if(DEBUG) { @@ -141,7 +141,7 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { public final boolean isLocked() { return locker.isLocked(); } - + } interface LockedObjectRunner extends Runnable { @@ -163,7 +163,7 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { YieldMode yieldMode; /** master constructor */ - public LockedObjectRunner1(String tab, String name, LockedObject lo, Thread[] slaves, int loops, int mark, YieldMode yieldMode) { + public LockedObjectRunner1(final String tab, final String name, final LockedObject lo, final Thread[] slaves, final int loops, final int mark, final YieldMode yieldMode) { this.tab = tab; this.name = name; this.lo = lo; @@ -178,7 +178,7 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { } /** slave constructor */ - public LockedObjectRunner1(String tab, String name, LockedObject lo, int loops, int mark, YieldMode yieldMode) { + public LockedObjectRunner1(final String tab, final String name, final LockedObject lo, final int loops, final int mark, final YieldMode yieldMode) { this.tab = tab; this.name = name; this.lo = lo; @@ -191,7 +191,7 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { Assert.assertTrue(mark>loops); Assert.assertTrue(loops*loops>mark); } - + public final void stop() { shouldStop = true; } @@ -202,18 +202,18 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { public final boolean isStopped() { return stopped; } - + public void waitUntilStopped() { synchronized(this) { while(!stopped) { try { this.wait(); - } catch (InterruptedException e) { + } catch (final InterruptedException e) { e.printStackTrace(); } } } - + } public void run() { @@ -232,28 +232,28 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { } } - protected long testLockedObjectImpl(LockFactory.ImplType implType, boolean fair, - int slaveThreadNum, int concurrentThreadNum, - int loops, int mark, YieldMode yieldMode) throws InterruptedException { + protected long testLockedObjectImpl(final LockFactory.ImplType implType, final boolean fair, + final int slaveThreadNum, final int concurrentThreadNum, + final int loops, final int mark, final YieldMode yieldMode) throws InterruptedException { final long t0 = System.currentTimeMillis(); - LockedObject lo = new LockedObject(); - LockedObjectRunner[] concurrentRunners = new LockedObjectRunner[concurrentThreadNum]; - LockedObjectRunner[] slaveRunners = new LockedObjectRunner[slaveThreadNum]; - Thread[] concurrentThreads = new Thread[concurrentThreadNum]; - Thread[] slaveThreads = new Thread[slaveThreadNum]; - Thread[] noCoOwnerThreads = new Thread[0]; + final LockedObject lo = new LockedObject(); + final LockedObjectRunner[] concurrentRunners = new LockedObjectRunner[concurrentThreadNum]; + final LockedObjectRunner[] slaveRunners = new LockedObjectRunner[slaveThreadNum]; + final Thread[] concurrentThreads = new Thread[concurrentThreadNum]; + final Thread[] slaveThreads = new Thread[slaveThreadNum]; + final Thread[] noCoOwnerThreads = new Thread[0]; int i; for(i=0; i<slaveThreadNum; i++) { slaveRunners[i] = new LockedObjectRunner1(" ", "s"+i, lo, loops, mark, yieldMode); - String name = "ActionThread-Slaves-"+i+"_of_"+slaveThreadNum; + final String name = "ActionThread-Slaves-"+i+"_of_"+slaveThreadNum; slaveThreads[i] = new Thread( slaveRunners[i], name ); } for(i=0; i<concurrentThreadNum; i++) { String name; if(i==0) { concurrentRunners[i] = new LockedObjectRunner1("", "M0", lo, slaveThreads, loops, mark, yieldMode); - name = "ActionThread-Master-"+i+"_of_"+concurrentThreadNum; + name = "ActionThread-Master-"+i+"_of_"+concurrentThreadNum; } else { concurrentRunners[i] = new LockedObjectRunner1(" ", "O"+i, lo, noCoOwnerThreads, loops, mark, yieldMode); name = "ActionThread-Others-"+i+"_of_"+concurrentThreadNum; @@ -276,45 +276,45 @@ public class TestRecursiveThreadGroupLock01 extends JunitTracer { } Assert.assertEquals(0, lo.locker.getHoldCount()); Assert.assertEquals(false, lo.locker.isLocked()); - + final long dt = System.currentTimeMillis()-t0; - + System.err.println(); final String fair_S = fair ? "fair " : "unfair" ; - System.err.printf("---- TestRecursiveLock01.testLockedObjectThreading: i %5s, %s, threads %2d, loops-outter %6d, loops-inner %6d, yield %5s - dt %6d ms", + System.err.printf("---- TestRecursiveLock01.testLockedObjectThreading: i %5s, %s, threads %2d, loops-outter %6d, loops-inner %6d, yield %5s - dt %6d ms", implType, fair_S, concurrentThreadNum, loops, mark, yieldMode, dt); System.err.println(); return dt; } - + @Test public void testTwoThreadsInGroup() throws InterruptedException { - LockFactory.ImplType t = LockFactory.ImplType.Int02ThreadGroup; - boolean fair=true; - int coOwnerThreadNum=2; - int threadNum=5; - int loops=1000; - int mark=10000; - YieldMode yieldMode=YieldMode.YIELD; - + final LockFactory.ImplType t = LockFactory.ImplType.Int02ThreadGroup; + final boolean fair=true; + final int coOwnerThreadNum=2; + final int threadNum=5; + int loops=1000; + int mark=10000; + final YieldMode yieldMode=YieldMode.YIELD; + if( Platform.getCPUFamily() == Platform.CPUFamily.ARM ) { loops=5; mark=10; } - + testLockedObjectImpl(t, fair, coOwnerThreadNum, threadNum, loops, mark, yieldMode); } - public static void main(String args[]) throws IOException, InterruptedException { - String tstname = TestRecursiveThreadGroupLock01.class.getName(); + public static void main(final String args[]) throws IOException, InterruptedException { + final String tstname = TestRecursiveThreadGroupLock01.class.getName(); org.junit.runner.JUnitCore.main(tstname); - + /** BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); System.err.println("Press enter to continue"); - System.err.println(stdin.readLine()); + System.err.println(stdin.readLine()); TestRecursiveLock01 t = new TestRecursiveLock01(); t.testLockedObjectThreading5x1000x10000N_Int01_Unfair(); - + t.testLockedObjectThreading5x1000x10000N_Int01_Fair(); t.testLockedObjectThreading5x1000x10000N_Java5_Fair(); t.testLockedObjectThreading5x1000x10000N_Int01_Unfair(); diff --git a/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket00.java b/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket00.java index c699e2e..775d46f 100644 --- a/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket00.java +++ b/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket00.java @@ -60,22 +60,22 @@ public class TestSingletonServerSocket00 { @Test public void test2ndInstanceLockTimeout() { Assert.assertTrue("Could not lock single instance: "+singletonInstance.getName(), singletonInstance.tryLock(SINGLE_INSTANCE_LOCK_TO)); - SingletonInstance instanceTwo = SingletonInstance.createServerSocket(SINGLE_INSTANCE_LOCK_POLL, SINGLE_INSTANCE_LOCK_PORT); + final SingletonInstance instanceTwo = SingletonInstance.createServerSocket(SINGLE_INSTANCE_LOCK_POLL, SINGLE_INSTANCE_LOCK_PORT); Assert.assertFalse("Could lock 2nd instance: "+instanceTwo.getName(), instanceTwo.tryLock(1000)); // 10x System.gc(); // force cleanup singletonInstance.unlock(); } - private Thread startLockUnlockOffThread(int i) { + private Thread startLockUnlockOffThread(final int i) { final Thread t = new Thread(new Runnable() { public void run() { - SingletonInstance myLock = SingletonInstance.createServerSocket(10, SINGLE_INSTANCE_LOCK_PORT); + final SingletonInstance myLock = SingletonInstance.createServerSocket(10, SINGLE_INSTANCE_LOCK_PORT); System.err.println(Thread.currentThread().getName()+" LOCK try .."); Assert.assertTrue(Thread.currentThread().getName()+" - Could not lock instance: "+myLock.getName(), myLock.tryLock(1000)); System.err.println(Thread.currentThread().getName()+" LOCK ON"); try { Thread.sleep(300); - } catch (InterruptedException e) { } + } catch (final InterruptedException e) { } myLock.unlock(); System.err.println(Thread.currentThread().getName()+" LOCK OFF"); } @@ -87,8 +87,8 @@ public class TestSingletonServerSocket00 { @Test public void testOffthreadLockUnlock() throws InterruptedException { Assert.assertTrue("Could not lock single instance: "+singletonInstance.getName(), singletonInstance.tryLock(SINGLE_INSTANCE_LOCK_TO)); - Thread t1 = startLockUnlockOffThread(1); - Thread t2 = startLockUnlockOffThread(2); + final Thread t1 = startLockUnlockOffThread(1); + final Thread t2 = startLockUnlockOffThread(2); Thread.sleep(300); System.gc(); // force cleanup singletonInstance.unlock(); @@ -97,8 +97,8 @@ public class TestSingletonServerSocket00 { } } - public static void main(String args[]) throws IOException, InterruptedException { - String tstname = TestSingletonServerSocket00.class.getName(); + public static void main(final String args[]) throws IOException, InterruptedException { + final String tstname = TestSingletonServerSocket00.class.getName(); org.junit.runner.JUnitCore.main(tstname); } } diff --git a/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket01.java b/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket01.java index 4bdc9bf..82ca89b 100644 --- a/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket01.java +++ b/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket01.java @@ -56,8 +56,8 @@ public class TestSingletonServerSocket01 { singletonInstance.unlock(); } - public static void main(String args[]) throws IOException, InterruptedException { - String tstname = TestSingletonServerSocket01.class.getName(); + public static void main(final String args[]) throws IOException, InterruptedException { + final String tstname = TestSingletonServerSocket01.class.getName(); org.junit.runner.JUnitCore.main(tstname); } } diff --git a/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket02.java b/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket02.java index cb862ce..50eebd6 100644 --- a/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket02.java +++ b/src/junit/com/jogamp/common/util/locks/TestSingletonServerSocket02.java @@ -68,8 +68,8 @@ public class TestSingletonServerSocket02 { Thread.sleep(3000); } - public static void main(String args[]) throws IOException, InterruptedException { - String tstname = TestSingletonServerSocket02.class.getName(); + public static void main(final String args[]) throws IOException, InterruptedException { + final String tstname = TestSingletonServerSocket02.class.getName(); org.junit.runner.JUnitCore.main(tstname); } } |