From 15f375f34527b01561cb8ac62f7ae8698f19f20e Mon Sep 17 00:00:00 2001
From: Mick Jordan <mick.jordan@oracle.com>
Date: Fri, 17 Jun 2016 08:43:46 -0700
Subject: [PATCH] Increase timeout for package installation testing

---
 .../src/com/oracle/truffle/r/test/TestBase.java            | 5 +++--
 .../com/oracle/truffle/r/test/generate/FastRSession.java   | 7 ++++---
 .../truffle/r/test/generate/GnuROneShotRSession.java       | 2 +-
 .../src/com/oracle/truffle/r/test/generate/RSession.java   | 3 ++-
 .../oracle/truffle/r/test/generate/TestOutputManager.java  | 2 +-
 .../truffle/r/test/rpackages/TestRecommendedPackages.java  | 2 +-
 6 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
index b4a87cb576..5e5218f56c 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/TestBase.java
@@ -97,7 +97,8 @@ public class TestBase {
     }
 
     public enum Context implements TestTrait {
-        NonShared; // Test requires a new non-shared {@link RContext}.
+        NonShared, // Test requires a new non-shared {@link RContext}.
+        LongTimeout; // Test requires a long timeout
     }
 
     /**
@@ -665,7 +666,7 @@ public class TestBase {
         microTestInfo.expression = input;
         String result;
         try {
-            result = fastROutputManager.fastRSession.eval(input, contextInfo);
+            result = fastROutputManager.fastRSession.eval(input, contextInfo, false);
         } catch (Throwable e) {
             String clazz;
             if (e instanceof RInternalError && e.getCause() != null) {
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
index 2676ef7402..3f09fb01ea 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
@@ -49,7 +49,8 @@ import com.oracle.truffle.r.test.TestBase;
 
 public final class FastRSession implements RSession {
 
-    private static final int TIMEOUT = System.getProperty("DisableTestTimeout") != null ? Integer.MAX_VALUE : 20000;
+    private static final int DEFAULT_TIMEOUT = System.getProperty("DisableTestTimeout") != null ? Integer.MAX_VALUE : 10000;
+    private static final int LONG_TIMEOUT = System.getProperty("DisableTestTimeout") != null ? Integer.MAX_VALUE : 60000;
 
     /**
      * A (virtual) console handler that collects the output in a {@link StringBuilder} for
@@ -176,7 +177,7 @@ public final class FastRSession implements RSession {
 
     @Override
     @SuppressWarnings("deprecation")
-    public String eval(String expression, ContextInfo contextInfo) throws Throwable {
+    public String eval(String expression, ContextInfo contextInfo, boolean longTimeout) throws Throwable {
         consoleHandler.reset();
 
         EvalThread thread = evalThread;
@@ -190,7 +191,7 @@ public final class FastRSession implements RSession {
         thread.push(expression);
 
         try {
-            if (!thread.await(TIMEOUT)) {
+            if (!thread.await(longTimeout ? LONG_TIMEOUT : DEFAULT_TIMEOUT)) {
                 consoleHandler.println("<timeout>");
                 thread.stop();
                 evalThread = null;
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/GnuROneShotRSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/GnuROneShotRSession.java
index d9e8a2fbf9..793c65dbaf 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/GnuROneShotRSession.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/GnuROneShotRSession.java
@@ -93,7 +93,7 @@ public class GnuROneShotRSession implements RSession {
     }
 
     @Override
-    public String eval(String expression, ContextInfo contextInfo) {
+    public String eval(String expression, ContextInfo contextInfo, boolean longTimeout) {
         if (expression.contains("library(") && !TestBase.generatingExpected()) {
             System.out.println("==============================================");
             System.out.println("LIBRARY LOADING WHILE CREATING EXPECTED OUTPUT");
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/RSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/RSession.java
index 3c362b55c3..94ec8c3413 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/RSession.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/RSession.java
@@ -33,8 +33,9 @@ public interface RSession {
      *
      * If {@code contextInfo is non-null} it is used for the evaluation, else the choice is left to
      * the implementation.
+     * @param longTimeout TODO
      */
-    String eval(String expression, ContextInfo contextInfo) throws Throwable;
+    String eval(String expression, ContextInfo contextInfo, boolean longTimeout) throws Throwable;
 
     /**
      * A name to identify the session.
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
index ae41bbe473..02d8aff7a4 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
@@ -360,7 +360,7 @@ public class TestOutputManager {
             String expected = null;
             if (!checkOnly) {
                 try {
-                    expected = rSession.eval(test, null);
+                    expected = rSession.eval(test, null, false);
                 } catch (Throwable e) {
                     throw RInternalError.shouldNotReachHere("unexpected exception thrown by GNUR session: " + e);
                 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRecommendedPackages.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRecommendedPackages.java
index 777cd8db8c..805565cf82 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRecommendedPackages.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rpackages/TestRecommendedPackages.java
@@ -64,6 +64,6 @@ public class TestRecommendedPackages extends TestRPackages {
 
     @Test
     public void testLoad() {
-        assertEval(Context.NonShared, TestBase.template("{ library(%1, lib.loc = \"%0\"); detach(\"package:%1\"); }", new String[]{TestRPackages.libLoc()}, OK_PACKAGES));
+        assertEval(Context.NonShared, Context.LongTimeout, TestBase.template("{ library(%1, lib.loc = \"%0\"); detach(\"package:%1\"); }", new String[]{TestRPackages.libLoc()}, OK_PACKAGES));
     }
 }
-- 
GitLab