JAL-3597 improved Memory test suite by detecting base memory usage rather than assumi...
authorJim Procter <jprocter@issues.jalview.org>
Tue, 14 Apr 2020 12:50:54 +0000 (13:50 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Tue, 14 Apr 2020 12:50:54 +0000 (13:50 +0100)
test/jalview/gui/FreeUpMemoryTest.java

index 9b21274..24697c0 100644 (file)
@@ -68,13 +68,27 @@ public class FreeUpMemoryTest
     File f = generateAlignment();
     f.deleteOnExit();
 
+    long expectedMin = 35L;
+    long usedMemoryAtStart=getUsedMemory();
+    if (usedMemoryAtStart>expectedMin)
+    {
+      System.err.println("used memory before test is "+usedMemoryAtStart+" > "+expectedMin+"MB .. adjusting minimum.");
+      expectedMin = usedMemoryAtStart;
+    }
     doStuffInJalview(f);
 
     Desktop.instance.closeAll_actionPerformed(null);
 
-    checkUsedMemory(35L);
+    checkUsedMemory(expectedMin);
   }
 
+  private static long getUsedMemory()
+  {
+    long availableMemory = Runtime.getRuntime().totalMemory() / ONE_MB;
+    long freeMemory = Runtime.getRuntime().freeMemory() / ONE_MB;
+    long usedMemory = availableMemory - freeMemory;
+    return usedMemory;
+  }
   /**
    * Requests garbage collection and then checks whether remaining memory in use
    * is less than the expected value (in Megabytes)
@@ -101,10 +115,7 @@ public class FreeUpMemoryTest
     /*
      * check used memory is 'reasonably low'
      */
-    long availableMemory = Runtime.getRuntime().totalMemory() / ONE_MB;
-    long freeMemory = Runtime.getRuntime().freeMemory() / ONE_MB;
-    long usedMemory = availableMemory - freeMemory;
-
+    long usedMemory = getUsedMemory();
     /*
      * sanity check - fails if any frame was added after
      * closeAll_actionPerformed