Make tests 1995, 2001, & 2005 less likely to OOME.

In some situations when run on a severly overloaded machine tests
1995, 2001 and 2005 could fail due to OOMEs being thrown. Limit the
amount of memory the tests will use to prevent this from happening.

Test: ./test.py --host
Bug: 147190668
Change-Id: Ic5ea4405d6638c110456c3119b37c29d6f658bf7
diff --git a/test/1995-final-virtual-structural-multithread/src/art/Test1995.java b/test/1995-final-virtual-structural-multithread/src/art/Test1995.java
index 1ffee60..7073494 100644
--- a/test/1995-final-virtual-structural-multithread/src/art/Test1995.java
+++ b/test/1995-final-virtual-structural-multithread/src/art/Test1995.java
@@ -22,6 +22,8 @@
 import java.util.concurrent.CountDownLatch;
 public class Test1995 {
   private static final int NUM_THREADS = 20;
+  // Don't perform more than this many repeats per thread to prevent OOMEs
+  private static final int TASK_COUNT_LIMIT = 1000;
 
   public static final class Transform {
     public String greetingEnglish;
@@ -107,14 +109,14 @@
     public MyThread(CountDownLatch delay, int id) {
       super("Thread: " + id);
       this.thr_id = id;
-      this.results = new ArrayList<>(1000);
+      this.results = new ArrayList<>(TASK_COUNT_LIMIT);
       this.finish = false;
       this.delay = delay;
     }
 
     public void run() {
       delay.countDown();
-      while (!finish) {
+      while (!finish && results.size() < TASK_COUNT_LIMIT) {
         Transform t = new Transform();
         results.add(t.sayHi());
       }
diff --git a/test/2001-virtual-structural-multithread/src-art/art/Test2001.java b/test/2001-virtual-structural-multithread/src-art/art/Test2001.java
index e6ee0ce..40972db 100644
--- a/test/2001-virtual-structural-multithread/src-art/art/Test2001.java
+++ b/test/2001-virtual-structural-multithread/src-art/art/Test2001.java
@@ -25,6 +25,8 @@
 
 public class Test2001 {
   private static final int NUM_THREADS = 20;
+  // Don't perform more than this many repeats per thread to prevent OOMEs
+  private static final int TASK_COUNT_LIMIT = 1000;
 
   public static class Transform {
     public String greetingEnglish;
@@ -167,14 +169,14 @@
     public MyThread(CountDownLatch delay, int id) {
       super("Thread: " + id);
       this.thr_id = id;
-      this.results = new ArrayList<>(1000);
+      this.results = new ArrayList<>(TASK_COUNT_LIMIT);
       this.finish = false;
       this.delay = delay;
     }
 
     public void run() {
       delay.countDown();
-      while (!finish) {
+      while (!finish && results.size() < TASK_COUNT_LIMIT) {
         Supplier<String> t = mkTransform();
         results.add(t.get());
       }
diff --git a/test/2005-pause-all-redefine-multithreaded/src/art/Test2005.java b/test/2005-pause-all-redefine-multithreaded/src/art/Test2005.java
index 6fdadb7..efae915 100644
--- a/test/2005-pause-all-redefine-multithreaded/src/art/Test2005.java
+++ b/test/2005-pause-all-redefine-multithreaded/src/art/Test2005.java
@@ -22,6 +22,8 @@
 public class Test2005 {
   private static final int NUM_THREADS = 20;
   private static final String DEFAULT_VAL = "DEFAULT_VALUE";
+  // Don't perform more than this many repeats per thread to prevent OOMEs
+  private static final int TASK_COUNT_LIMIT = 1000;
 
   public static final class Transform {
     public String greetingEnglish;
@@ -108,14 +110,14 @@
     public MyThread(CountDownLatch delay, int id) {
       super("Thread: " + id);
       this.thr_id = id;
-      this.results = new ArrayList<>(1000);
+      this.results = new ArrayList<>(TASK_COUNT_LIMIT);
       this.finish = false;
       this.delay = delay;
     }
 
     public void run() {
       delay.countDown();
-      while (!finish) {
+      while (!finish && results.size() < TASK_COUNT_LIMIT) {
         Transform t = new Transform();
         results.add(t.sayHi());
       }