From 272ae199617e669a18c026a23c4e17a5ef8b20ee Mon Sep 17 00:00:00 2001 From: gojomo Date: Tue, 4 Aug 2009 06:55:31 +0000 Subject: [PATCH] Cleanup * CachedBdbMap.java remove debug output * TestUtils.java add info logging * CachedBdbMapTest.java make more robust against prior heap usage, different platforms --- commons/src/main/java/org/archive/util/CachedBdbMap.java | 1 - commons/src/main/java/org/archive/util/TestUtils.java | 6 +++++- .../src/test/java/org/archive/util/CachedBdbMapTest.java | 7 +++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/commons/src/main/java/org/archive/util/CachedBdbMap.java b/commons/src/main/java/org/archive/util/CachedBdbMap.java index 71678d67..135c40cd 100644 --- a/commons/src/main/java/org/archive/util/CachedBdbMap.java +++ b/commons/src/main/java/org/archive/util/CachedBdbMap.java @@ -384,7 +384,6 @@ implements ConcurrentMap, Serializable { logger.info("BdbConfiguration: Cache percentage " + cfg.getCachePercent() + ", cache size " + cfg.getCacheSize() + ", Map size: " + size() + " cfg=" + cfg); - System.out.println(" cfg=" + cfg); //DEBUG } } diff --git a/commons/src/main/java/org/archive/util/TestUtils.java b/commons/src/main/java/org/archive/util/TestUtils.java index a55b155e..02a062d3 100644 --- a/commons/src/main/java/org/archive/util/TestUtils.java +++ b/commons/src/main/java/org/archive/util/TestUtils.java @@ -28,6 +28,7 @@ import java.io.ObjectOutputStream; import java.lang.ref.SoftReference; import java.util.Arrays; import java.util.LinkedList; +import java.util.logging.Logger; import junit.framework.TestCase; import junit.framework.TestSuite; @@ -39,6 +40,8 @@ import junit.framework.TestSuite; * @author gojomo */ public class TestUtils { + private static final Logger logger = + Logger.getLogger(TestUtils.class.getName()); /** * Temporarily exhaust memory, forcing weak/soft references to @@ -48,17 +51,18 @@ public class TestUtils { // force soft references to be broken LinkedList> hog = new LinkedList>(); long blocks = Runtime.getRuntime().maxMemory() / 1000000; + logger.info("forcing scarce memory via "+blocks+" 1MB blocks"); for(long l = 0; l <= blocks; l++) { try { hog.add(new SoftReference(new byte[1000000])); } catch (OutOfMemoryError e) { hog = null; + logger.info("OOME triggered"); break; } } } - public static void testSerialization(Object proc) throws Exception { byte[] first = serialize(proc); ByteArrayInputStream binp = new ByteArrayInputStream(first); diff --git a/commons/src/test/java/org/archive/util/CachedBdbMapTest.java b/commons/src/test/java/org/archive/util/CachedBdbMapTest.java index 657ca444..8be8d3e8 100644 --- a/commons/src/test/java/org/archive/util/CachedBdbMapTest.java +++ b/commons/src/test/java/org/archive/util/CachedBdbMapTest.java @@ -89,11 +89,14 @@ public class CachedBdbMapTest extends TmpDirTestCase { * * NOTE: this test may be especially fragile with regard to * GC/timing issues; relies on timely finalization, which is - * never guaranteed by JVM/GC. + * never guaranteed by JVM/GC. For example, it is so sensitive + * to CPU speed that a Thread.sleep(1000) succeeds when my + * laptop is plugged in, but fails when it is on battery! * * @throws InterruptedException */ public void testMemMapCleared() throws InterruptedException { + System.gc(); // minimize effects of earlier test heap use assertEquals(cache.memMap.size(), 0); for(int i=0; i < 10000; i++) { cache.putIfAbsent(""+i, new HashMap()); @@ -101,7 +104,7 @@ public class CachedBdbMapTest extends TmpDirTestCase { assertEquals(cache.memMap.size(), 10000); assertEquals(cache.size(), 10000); TestUtils.forceScarceMemory(); - Thread.sleep(1000); + Thread.sleep(2000); // The 'canary' trick makes this explicit expunge, or // an expunge triggered by a get() or put...(), unnecessary // cache.expungeStaleEntries();