summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmake/scripts/java-win32.bat6
-rwxr-xr-xmake/scripts/java-win64.bat8
-rwxr-xr-xmake/scripts/make.gluegen.all.win32.bat6
-rwxr-xr-xmake/scripts/make.gluegen.all.win64.bat6
-rwxr-xr-xmake/scripts/runtest-x32.bat3
-rwxr-xr-xmake/scripts/runtest-x64.bat3
-rwxr-xr-xmake/scripts/runtest.sh6
-rw-r--r--make/scripts/setenv-build-jogl-x86.sh16
-rw-r--r--src/java/com/jogamp/common/util/IOUtil.java172
-rw-r--r--src/java/com/jogamp/common/util/IntIntHashMap.java7
-rw-r--r--src/junit/com/jogamp/common/util/IntIntHashMapTest.java4
-rw-r--r--src/junit/com/jogamp/common/util/IntObjectHashMapTest.java4
-rw-r--r--src/junit/com/jogamp/common/util/LongIntHashMapTest.java4
13 files changed, 182 insertions, 63 deletions
diff --git a/make/scripts/java-win32.bat b/make/scripts/java-win32.bat
index 9b12e4c..4cae57e 100755
--- a/make/scripts/java-win32.bat
+++ b/make/scripts/java-win32.bat
@@ -1,8 +1,8 @@
set BLD_SUB=build-win32
-set J2RE_HOME=c:\jre1.7.0_45_x32
-set JAVA_HOME=c:\jdk1.7.0_45_x32
-set ANT_PATH=C:\apache-ant-1.8.2
+set J2RE_HOME=c:\jre1.7.0_67_x32
+set JAVA_HOME=c:\jdk1.7.0_67_x32
+set ANT_PATH=C:\apache-ant-1.9.4
set BLD_DIR=..\%BLD_SUB%
REM set LIB_DIR=..\%BLD_SUB%\obj;..\%BLD_SUB%\test\build\natives
diff --git a/make/scripts/java-win64.bat b/make/scripts/java-win64.bat
index 904acff..3f14c82 100755
--- a/make/scripts/java-win64.bat
+++ b/make/scripts/java-win64.bat
@@ -1,8 +1,8 @@
set BLD_SUB=build-win64
-set J2RE_HOME=c:\jre1.7.0_45_x64
-set JAVA_HOME=c:\jdk1.7.0_45_x64
-set ANT_PATH=C:\apache-ant-1.8.2
+set J2RE_HOME=c:\jre1.7.0_67_x64
+set JAVA_HOME=c:\jdk1.7.0_67_x64
+set ANT_PATH=C:\apache-ant-1.9.4
set BLD_DIR=..\%BLD_SUB%
REM set LIB_DIR=..\%BLD_SUB%\obj;..\%BLD_SUB%\test\build\natives
@@ -14,7 +14,7 @@ set CP_ALL=.;lib\junit.jar;%ANT_PATH%\lib\ant.jar;%ANT_PATH%\lib\ant-junit.jar;l
echo CP_ALL %CP_ALL%
-set D_ARGS="-Djogamp.debug.Platform" "-Djogamp.debug.NativeLibrary"
+set D_ARGS="-Djogamp.debug.Platform" "-Djogamp.debug.NativeLibrary" "-Djogamp.debug.IOUtil"
REM set D_ARGS="-Djogamp.debug.IOUtil"
REM set D_ARGS="-Djogamp.debug=all"
diff --git a/make/scripts/make.gluegen.all.win32.bat b/make/scripts/make.gluegen.all.win32.bat
index bd24ddb..86e8140 100755
--- a/make/scripts/make.gluegen.all.win32.bat
+++ b/make/scripts/make.gluegen.all.win32.bat
@@ -1,8 +1,8 @@
set THISDIR="C:\JOGL"
-set J2RE_HOME=c:\jre1.7.0_45_x32
-set JAVA_HOME=c:\jdk1.7.0_45_x32
-set ANT_PATH=C:\apache-ant-1.8.2
+set J2RE_HOME=c:\jre1.7.0_67_x32
+set JAVA_HOME=c:\jdk1.7.0_67_x32
+set ANT_PATH=C:\apache-ant-1.9.4
set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw\bin;%PATH%
diff --git a/make/scripts/make.gluegen.all.win64.bat b/make/scripts/make.gluegen.all.win64.bat
index cbcf8d4..ea61416 100755
--- a/make/scripts/make.gluegen.all.win64.bat
+++ b/make/scripts/make.gluegen.all.win64.bat
@@ -1,8 +1,8 @@
set THISDIR="C:\JOGL"
-set J2RE_HOME=c:\jre1.7.0_45_x64
-set JAVA_HOME=c:\jdk1.7.0_45_x64
-set ANT_PATH=C:\apache-ant-1.8.2
+set J2RE_HOME=c:\jre1.7.0_67_x64
+set JAVA_HOME=c:\jdk1.7.0_67_x64
+set ANT_PATH=C:\apache-ant-1.9.4
set PATH=%JAVA_HOME%\bin;%ANT_PATH%\bin;c:\mingw64\bin;c:\mingw\bin;%PATH%
diff --git a/make/scripts/runtest-x32.bat b/make/scripts/runtest-x32.bat
index 2c5e8e2..5a2739c 100755
--- a/make/scripts/runtest-x32.bat
+++ b/make/scripts/runtest-x32.bat
@@ -1,7 +1,8 @@
REM scripts\java-win32.bat com.jogamp.common.GlueGenVersion
REM scripts\java-win32.bat com.jogamp.common.util.TestVersionInfo
REM scripts\java-win32.bat com.jogamp.gluegen.test.junit.generation.Test1p1JavaEmitter
-scripts\java-win32.bat com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter
+REM scripts\java-win32.bat com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter
+scripts\java-win32.bat com.jogamp.common.util.TestTempJarCache
REM scripts\java-win32.bat com.jogamp.common.os.TestElfReader01
REM scripts\java-win32.bat com.jogamp.common.util.TestIOUtilURIHandling
diff --git a/make/scripts/runtest-x64.bat b/make/scripts/runtest-x64.bat
index 6b42c28..f03dc41 100755
--- a/make/scripts/runtest-x64.bat
+++ b/make/scripts/runtest-x64.bat
@@ -1,7 +1,8 @@
REM scripts\java-win64.bat com.jogamp.common.GlueGenVersion
REM scripts\java-win64.bat com.jogamp.common.util.TestVersionInfo
REM scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.Test1p1JavaEmitter
-scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter
+REM scripts\java-win64.bat com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter
+scripts\java-win64.bat com.jogamp.common.util.TestTempJarCache
REM scripts\java-win64.bat com.jogamp.common.os.TestElfReader01
REM scripts\java-win64.bat com.jogamp.common.util.TestIOUtil01
diff --git a/make/scripts/runtest.sh b/make/scripts/runtest.sh
index ccdae48..1d6402d 100755
--- a/make/scripts/runtest.sh
+++ b/make/scripts/runtest.sh
@@ -53,7 +53,7 @@ rm -f $LOG
#D_ARGS="-Djogamp.debug.Lock"
#D_ARGS="-Djogamp.debug.Lock -Djogamp.debug.Lock.TraceLock"
#D_ARGS="-Djogamp.debug.Lock.TraceLock"
-#D_ARGS="-Djogamp.debug.IOUtil"
+D_ARGS="-Djogamp.debug.IOUtil"
#D_ARGS="-Djogamp.debug.Bitstream"
#D_ARGS="-Djogamp.debug=all"
@@ -100,7 +100,7 @@ function onetest() {
#onetest com.jogamp.common.util.TestIOUtil01 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestIOUtilURICompose 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestIOUtilURIHandling 2>&1 | tee -a $LOG
-#onetest com.jogamp.common.util.TestTempJarCache 2>&1 | tee -a $LOG
+onetest com.jogamp.common.util.TestTempJarCache 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestJarUtil 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestValueConversion 2>&1 | tee -a $LOG
#onetest com.jogamp.common.util.TestSyncRingBuffer01 $*
@@ -121,7 +121,7 @@ function onetest() {
#onetest com.jogamp.common.os.TestElfReader01 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.PCPPTest 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.test.junit.generation.Test1p1JavaEmitter 2>&1 | tee -a $LOG
-onetest com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter 2>&1 | tee -a $LOG
+#onetest com.jogamp.gluegen.test.junit.generation.Test1p2ProcAddressEmitter 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.test.junit.generation.Test1p2LoadJNIAndImplLib 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.test.junit.structgen.TestStructGen01 2>&1 | tee -a $LOG
#onetest com.jogamp.gluegen.test.junit.structgen.TestStructGen02 2>&1 | tee -a $LOG
diff --git a/make/scripts/setenv-build-jogl-x86.sh b/make/scripts/setenv-build-jogl-x86.sh
index ce055ba..5e4e542 100644
--- a/make/scripts/setenv-build-jogl-x86.sh
+++ b/make/scripts/setenv-build-jogl-x86.sh
@@ -19,15 +19,25 @@ if [ -z "$ANT_PATH" ] ; then
exit
fi
-if [ -e /opt-linux-x86/jre7 -a -e /opt-linux-x86/j2se7 ] ; then
- J2RE_HOME=/opt-linux-x86/jre7
- JAVA_HOME=/opt-linux-x86/j2se7
+if [ -e /opt-linux-x86/jre8 -a -e /opt-linux-x86/j2se8 ] ; then
+ J2RE_HOME=/opt-linux-x86/jre8
+ JAVA_HOME=/opt-linux-x86/j2se8
PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
export J2RE_HOME JAVA_HOME
FOUND_JAVA=1
fi
if [ -z "$FOUND_JAVA" ] ; then
+ if [ -e /opt-linux-x86/jre7 -a -e /opt-linux-x86/j2se7 ] ; then
+ J2RE_HOME=/opt-linux-x86/jre7
+ JAVA_HOME=/opt-linux-x86/j2se7
+ PATH=$J2RE_HOME/bin:$JAVA_HOME/bin:$PATH
+ export J2RE_HOME JAVA_HOME
+ FOUND_JAVA=1
+ fi
+fi
+
+if [ -z "$FOUND_JAVA" ] ; then
if [ -e /opt-linux-x86/jre6 -a -e /opt-linux-x86/j2se6 ] ; then
J2RE_HOME=/opt-linux-x86/jre6
JAVA_HOME=/opt-linux-x86/j2se6
diff --git a/src/java/com/jogamp/common/util/IOUtil.java b/src/java/com/jogamp/common/util/IOUtil.java
index 3b145af..c6548e4 100644
--- a/src/java/com/jogamp/common/util/IOUtil.java
+++ b/src/java/com/jogamp/common/util/IOUtil.java
@@ -34,9 +34,11 @@ import java.io.Closeable;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilePermission;
+import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.PrintStream;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.net.URISyntaxException;
@@ -1056,10 +1058,17 @@ public class IOUtil {
return ".sh";
}
}
+ private static String getShellCode() {
+ switch(PlatformPropsImpl.OS_TYPE) {
+ case WINDOWS:
+ return "echo off"+PlatformPropsImpl.NEWLINE;
+ default:
+ return null;
+ }
+ }
private static boolean getOSHasNoexecFS() {
switch(PlatformPropsImpl.OS_TYPE) {
- case WINDOWS:
case OPENKODE:
return false;
@@ -1114,6 +1123,52 @@ public class IOUtil {
return true;
}
+ public static class StreamMonitor implements Runnable {
+ private final InputStream[] istreams;
+ private final PrintStream ostream;
+ private final String prefix;
+ public StreamMonitor(final InputStream[] streams, final PrintStream ostream, final String prefix) {
+ this.istreams = streams;
+ this.ostream = ostream;
+ this.prefix = prefix;
+ new Thread(this, "StreamMonitor-"+Thread.currentThread().getName()).start();
+ }
+ @Override
+ public void run()
+ {
+ final byte[] buffer = new byte[4096];
+ try {
+ int numRead;
+ do {
+ numRead = 0;
+ for(int i=0; i<istreams.length; i++) {
+ final int numReadI = istreams[i].read(buffer);
+ if (numReadI > 0) {
+ if( null != ostream ) {
+ if( null != prefix ) {
+ ostream.write(prefix.getBytes());
+ }
+ ostream.write(buffer, 0, numReadI);
+ }
+ numRead += numReadI;
+ }
+ }
+ if( null != ostream ) {
+ ostream.flush();
+ }
+ } while (numRead >= 0);
+ }
+ catch (final IOException e) {
+ for(int i=0; i<istreams.length; i++) {
+ try {
+ istreams[i].close();
+ } catch (final IOException e2) { }
+ }
+ // Should allow clean exit when process shuts down
+ }
+ }
+ }
+
/**
* Returns true if the given {@code dir}
* <ol>
@@ -1142,6 +1197,7 @@ public class IOUtil {
return true;
}
+ final long t0 = DEBUG ? System.currentTimeMillis() : 0;
File exetst;
try {
exetst = File.createTempFile("jogamp_exe_tst", getShellSuffix(), dir);
@@ -1153,10 +1209,24 @@ public class IOUtil {
}
return false;
}
+ final long t1 = DEBUG ? System.currentTimeMillis() : 0;
int res = -1;
if(exetst.setExecutable(true /* exec */, true /* ownerOnly */)) {
+ final String shellCode = getShellCode();
try {
+ if( isStringSet(shellCode) ) {
+ final FileWriter fout = new FileWriter(exetst);
+ fout.write(shellCode);
+ fout.close();
+ }
final Process pr = Runtime.getRuntime().exec(exetst.getCanonicalPath());
+ /**
+ * Disable StreamMonitor, which throttles exec-test performance a lot!
+ *
+ * if( isStringSet(shellCode) ) {
+ new StreamMonitor(new InputStream[] { pr.getInputStream(), pr.getErrorStream() }, System.err, "Exe-Tst: ");
+ }
+ */
pr.waitFor() ;
res = pr.exitValue();
} catch (final SecurityException se) {
@@ -1169,9 +1239,11 @@ public class IOUtil {
}
}
}
+ final long t2 = DEBUG ? System.currentTimeMillis() : 0;
exetst.delete();
- if(DEBUG) {
+ if( DEBUG) {
System.err.println("IOUtil.testDirExec(): <"+dir.getAbsolutePath()+">: res "+res);
+ System.err.println("IOUtil.testDirExec(): total "+(t2-t0)+"ms, create "+(t1-t0)+"ms, execute "+(t2-t1)+"ms");
}
return 0 == res;
}
@@ -1253,6 +1325,14 @@ public class IOUtil {
return tmpBaseDir;
}
+ private static File getFile(final String fname) {
+ if( isStringSet(fname) ) {
+ return new File(fname);
+ } else {
+ return null;
+ }
+
+ }
/**
* Returns a platform independent writable directory for temporary files
* consisting of the platform's {@code temp-root} + {@link #tmpSubDir},
@@ -1295,82 +1375,102 @@ public class IOUtil {
}
}
- final String java_io_tmpdir = PropertyAccess.getProperty(java_io_tmpdir_propkey, false);
- final String user_temp; // only if diff than java_io_tmpdir
+ final File java_io_tmpdir = getFile( PropertyAccess.getProperty(java_io_tmpdir_propkey, false) );
+ if(DEBUG) {
+ System.err.println("IOUtil.getTempRoot(): tempX1 <"+java_io_tmpdir+">, used "+(null!=java_io_tmpdir));
+ }
+
+ final File user_tmpdir; // only if diff than java_io_tmpdir
{
- String _user_temp = System.getenv("TMPDIR");
- if( !isStringSet(_user_temp) ) {
- _user_temp = System.getenv("TEMP");
+ String __user_tmpdir = System.getenv("TMPDIR");
+ if( !isStringSet(__user_tmpdir) ) {
+ __user_tmpdir = System.getenv("TEMP");
}
- if( isStringSet(_user_temp) && !_user_temp.equals(java_io_tmpdir) ) {
- user_temp = _user_temp;
+ final File _user_tmpdir = getFile(__user_tmpdir);
+ if( null != _user_tmpdir && !_user_tmpdir.equals(java_io_tmpdir) ) {
+ user_tmpdir = _user_tmpdir;
} else {
- user_temp = null;
+ user_tmpdir = null;
+ }
+ if(DEBUG) {
+ System.err.println("IOUtil.getTempRoot(): tempX3 <"+_user_tmpdir+">, used "+(null!=user_tmpdir));
}
}
- final String user_home = PropertyAccess.getProperty(user_home_propkey, false);
- final String xdg_cache_home;
+ final File user_home = getFile( PropertyAccess.getProperty(user_home_propkey, false) );
+ if(DEBUG) {
+ System.err.println("IOUtil.getTempRoot(): tempX4 <"+user_home+">, used "+(null!=user_home));
+ }
+
+ final File xdg_cache_home;
{
- String _xdg_cache_home;
+ String __xdg_cache_home;
if( getOSHasFreeDesktopXDG() ) {
- _xdg_cache_home = System.getenv(XDG_CACHE_HOME_envkey);
- if( !isStringSet(_xdg_cache_home) && isStringSet(user_home) ) {
- _xdg_cache_home = user_home + File.separator + ".cache" ; // default
+ __xdg_cache_home = System.getenv(XDG_CACHE_HOME_envkey);
+ if( !isStringSet(__xdg_cache_home) && null != user_home ) {
+ __xdg_cache_home = user_home.getAbsolutePath() + File.separator + ".cache" ; // default
}
} else {
- _xdg_cache_home = null;
+ __xdg_cache_home = null;
+ }
+ final File _xdg_cache_home = getFile(__xdg_cache_home);
+ if( null != _xdg_cache_home && !_xdg_cache_home.equals(java_io_tmpdir) ) {
+ xdg_cache_home = _xdg_cache_home;
+ } else {
+ xdg_cache_home = null;
+ }
+ if(DEBUG) {
+ System.err.println("IOUtil.getTempRoot(): tempX2 <"+_xdg_cache_home+">, used "+(null!=xdg_cache_home));
}
- xdg_cache_home = _xdg_cache_home;
}
// 1) java.io.tmpdir/jogamp
- if( null == tempRootExec && isStringSet(java_io_tmpdir) ) {
+ if( null == tempRootExec && null != java_io_tmpdir ) {
if( Platform.OSType.MACOS == PlatformPropsImpl.OS_TYPE ) {
// Bug 865: Safari >= 6.1 [OSX] May employ xattr on 'com.apple.quarantine' on 'PluginProcess.app'
// We attempt to fix this issue _after_ gluegen native lib is loaded, see JarUtil.fixNativeLibAttribs(File).
- tempRootExec = getSubTempDir(new File(java_io_tmpdir), tmpSubDir, false /* executable */, "tempX1");
+ tempRootExec = getSubTempDir(java_io_tmpdir, tmpSubDir, false /* executable */, "tempX1");
} else {
- tempRootExec = getSubTempDir(new File(java_io_tmpdir), tmpSubDir, true /* executable */, "tempX1");
+ tempRootExec = getSubTempDir(java_io_tmpdir, tmpSubDir, true /* executable */, "tempX1");
}
}
// 2) $XDG_CACHE_HOME/jogamp
- if(null == tempRootExec && isStringSet(xdg_cache_home)) {
- tempRootExec = getSubTempDir(new File(xdg_cache_home), tmpSubDir, true /* executable */, "tempX2");
+ if( null == tempRootExec && null != xdg_cache_home ) {
+ tempRootExec = getSubTempDir(xdg_cache_home, tmpSubDir, true /* executable */, "tempX2");
}
// 3) $TMPDIR/jogamp
- if(null == tempRootExec && isStringSet(user_temp)) {
- tempRootExec = getSubTempDir(new File(user_temp), tmpSubDir, true /* executable */, "tempX3");
+ if( null == tempRootExec && null != user_tmpdir ) {
+ tempRootExec = getSubTempDir(user_tmpdir, tmpSubDir, true /* executable */, "tempX3");
}
// 4) $HOME/.jogamp
- if(null == tempRootExec && isStringSet(user_home)) {
- tempRootExec = getSubTempDir(new File(user_home), "." + tmpSubDir, true /* executable */, "tempX4");
+ if( null == tempRootExec && null != user_home ) {
+ tempRootExec = getSubTempDir(user_home, "." + tmpSubDir, true /* executable */, "tempX4");
}
- if(null != tempRootExec) {
+ if( null != tempRootExec ) {
tempRootNoexec = tempRootExec;
} else {
// 1) java.io.tmpdir/jogamp
- if( null == tempRootNoexec && isStringSet(java_io_tmpdir) ) {
- tempRootNoexec = getSubTempDir(new File(java_io_tmpdir), tmpSubDir, false /* executable */, "temp01");
+ if( null == tempRootNoexec && null != java_io_tmpdir ) {
+ tempRootNoexec = getSubTempDir(java_io_tmpdir, tmpSubDir, false /* executable */, "temp01");
}
// 2) $XDG_CACHE_HOME/jogamp
- if(null == tempRootNoexec && isStringSet(xdg_cache_home)) {
- tempRootNoexec = getSubTempDir(new File(xdg_cache_home), tmpSubDir, false /* executable */, "temp02");
+ if( null == tempRootNoexec && null != xdg_cache_home ) {
+ tempRootNoexec = getSubTempDir(xdg_cache_home, tmpSubDir, false /* executable */, "temp02");
}
// 3) $TMPDIR/jogamp
- if(null == tempRootNoexec && isStringSet(user_temp)) {
- tempRootNoexec = getSubTempDir(new File(user_temp), tmpSubDir, false /* executable */, "temp03");
+ if( null == tempRootNoexec && null != user_tmpdir ) {
+ tempRootNoexec = getSubTempDir(user_tmpdir, tmpSubDir, false /* executable */, "temp03");
}
// 4) $HOME/.jogamp
- if(null == tempRootNoexec && isStringSet(user_home)) {
- tempRootNoexec = getSubTempDir(new File(user_home), "." + tmpSubDir, false /* executable */, "temp04");
+ if( null == tempRootNoexec && null != user_home ) {
+ tempRootNoexec = getSubTempDir(user_home, "." + tmpSubDir, false /* executable */, "temp04");
}
}
diff --git a/src/java/com/jogamp/common/util/IntIntHashMap.java b/src/java/com/jogamp/common/util/IntIntHashMap.java
index 954b379..f78b1e0 100644
--- a/src/java/com/jogamp/common/util/IntIntHashMap.java
+++ b/src/java/com/jogamp/common/util/IntIntHashMap.java
@@ -162,18 +162,19 @@ public class /*name*/IntIntHashMap/*name*/ implements Cloneable,
mask, capacity, threshold,
keyNotFoundValue);
+ final ArrayList<Entry> entries = new ArrayList<Entry>();
for(int i=table.length-1; i>=0; i--) {
// single linked list -> ArrayList
- final ArrayList<Entry> entries = new ArrayList<Entry>();
Entry se = table[i];
while(null != se) {
entries.add(se);
se = se.next;
}
// clone ArrayList -> single linked list (bwd)
+ final int count = entries.size();
Entry de_next = null;
- for(int j=entries.size()-1; j>=0; j--) {
- se = entries.get(j);
+ for(int j=count-1; j>=0; j--) {
+ se = entries.remove(j);
if( isPrimitive ) {
de_next = new Entry(se.key, se.value, de_next);
} else {
diff --git a/src/junit/com/jogamp/common/util/IntIntHashMapTest.java b/src/junit/com/jogamp/common/util/IntIntHashMapTest.java
index ac009cb..75524ac 100644
--- a/src/junit/com/jogamp/common/util/IntIntHashMapTest.java
+++ b/src/junit/com/jogamp/common/util/IntIntHashMapTest.java
@@ -35,10 +35,12 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
+
import org.junit.BeforeClass;
import org.junit.Test;
import com.jogamp.common.os.Platform;
+import com.jogamp.junit.util.JunitTracer;
import static org.junit.Assert.*;
import static java.lang.System.*;
@@ -52,7 +54,7 @@ import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class IntIntHashMapTest {
+public class IntIntHashMapTest extends JunitTracer {
private static int iterations;
private static IntIntUniqueRndValues pairs;
diff --git a/src/junit/com/jogamp/common/util/IntObjectHashMapTest.java b/src/junit/com/jogamp/common/util/IntObjectHashMapTest.java
index 11bf765..3207683 100644
--- a/src/junit/com/jogamp/common/util/IntObjectHashMapTest.java
+++ b/src/junit/com/jogamp/common/util/IntObjectHashMapTest.java
@@ -35,10 +35,12 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
+
import org.junit.BeforeClass;
import org.junit.Test;
import com.jogamp.common.os.Platform;
+import com.jogamp.junit.util.JunitTracer;
import static org.junit.Assert.*;
@@ -51,7 +53,7 @@ import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class IntObjectHashMapTest {
+public class IntObjectHashMapTest extends JunitTracer {
private static int iterations;
private static IntIntObjUniqueRndValues pairs;
diff --git a/src/junit/com/jogamp/common/util/LongIntHashMapTest.java b/src/junit/com/jogamp/common/util/LongIntHashMapTest.java
index f6ec4bc..90e54b9 100644
--- a/src/junit/com/jogamp/common/util/LongIntHashMapTest.java
+++ b/src/junit/com/jogamp/common/util/LongIntHashMapTest.java
@@ -35,10 +35,12 @@ import java.io.IOException;
import java.util.Iterator;
import java.util.HashMap;
import java.util.Map.Entry;
+
import org.junit.BeforeClass;
import org.junit.Test;
import com.jogamp.common.os.Platform;
+import com.jogamp.junit.util.JunitTracer;
import static org.junit.Assert.*;
import static java.lang.System.*;
@@ -52,7 +54,7 @@ import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class LongIntHashMapTest {
+public class LongIntHashMapTest extends JunitTracer {
private static int iterations;
private static LongIntUniqueRndValues pairs;