Increase timeout for Terminal on nested virt

Bug: 381779366
Bug: 383966272
Bug: 384658289
Test: watch TH
Change-Id: I419d16a81079e9260b8df50b2295adf5d81e0576
diff --git a/android/TerminalApp/Android.bp b/android/TerminalApp/Android.bp
index 4bb9703..59f18df 100644
--- a/android/TerminalApp/Android.bp
+++ b/android/TerminalApp/Android.bp
@@ -18,6 +18,7 @@
         "debian-service-grpclib-lite",
         "gson",
         "VmTerminalApp.aidl-java",
+        "MicrodroidTestHelper", // for DeviceProperties class
     ],
     jni_libs: [
         "libforwarder_host_jni",
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
index 316c8c4..016af83 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
@@ -33,6 +33,7 @@
 import android.os.ConditionVariable;
 import android.os.Environment;
 import android.os.SystemClock;
+import android.os.SystemProperties;
 import android.provider.Settings;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -56,6 +57,7 @@
 import androidx.annotation.NonNull;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.microdroid.test.common.DeviceProperties;
 
 import com.google.android.material.appbar.MaterialToolbar;
 
@@ -77,10 +79,19 @@
     static final String KEY_DISK_SIZE = "disk_size";
     private static final String VM_ADDR = "192.168.0.2";
     private static final int TTYD_PORT = 7681;
-    private static final int TERMINAL_CONNECTION_TIMEOUT_MS = 20_000;
+    private static final int TERMINAL_CONNECTION_TIMEOUT_MS;
     private static final int REQUEST_CODE_INSTALLER = 0x33;
     private static final int FONT_SIZE_DEFAULT = 13;
 
+    static {
+        DeviceProperties prop = DeviceProperties.create(SystemProperties::get);
+        if (prop.isCuttlefish() || prop.isGoldfish()) {
+            TERMINAL_CONNECTION_TIMEOUT_MS = 180_000; // 3 minutes
+        } else {
+            TERMINAL_CONNECTION_TIMEOUT_MS = 20_000; // 20 sec
+        }
+    }
+
     private ExecutorService mExecutorService;
     private InstalledImage mImage;
     private X509Certificate[] mCertificates;
diff --git a/tests/Terminal/src/com/android/virtualization/terminal/TerminalAppTest.java b/tests/Terminal/src/com/android/virtualization/terminal/TerminalAppTest.java
index 4a18ee8..b0afb54 100644
--- a/tests/Terminal/src/com/android/virtualization/terminal/TerminalAppTest.java
+++ b/tests/Terminal/src/com/android/virtualization/terminal/TerminalAppTest.java
@@ -22,10 +22,12 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.SystemProperties;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.microdroid.test.common.DeviceProperties;
 import com.android.microdroid.test.common.MetricsProcessor;
 
 import org.junit.After;
@@ -42,12 +44,14 @@
 public class TerminalAppTest {
     private Instrumentation mInstr;
     private Context mTargetContext;
+    private DeviceProperties mProperties;
     private final MetricsProcessor mMetricsProc = new MetricsProcessor("avf_perf/terminal/");
 
     @Before
     public void setup() {
         mInstr = InstrumentationRegistry.getInstrumentation();
         mTargetContext = mInstr.getTargetContext();
+        mProperties = DeviceProperties.create(SystemProperties::get);
         installVmImage();
     }
 
@@ -66,7 +70,8 @@
 
     @Test
     public void boot() throws Exception {
-        final long BOOT_TIMEOUT_MILLIS = 30_000; // 30 sec
+        final boolean isNestedVirt = mProperties.isCuttlefish() || mProperties.isGoldfish();
+        final long BOOT_TIMEOUT_MILLIS = isNestedVirt ? 180_000 : 30_000; // 30 sec (or 3 min)
 
         Intent intent = new Intent(mTargetContext, MainActivity.class);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
diff --git a/tests/helper/Android.bp b/tests/helper/Android.bp
index 1c38d12..2402721 100644
--- a/tests/helper/Android.bp
+++ b/tests/helper/Android.bp
@@ -7,6 +7,7 @@
     srcs: ["src/java/com/android/microdroid/test/common/*.java"],
     host_supported: true,
     sdk_version: "system_current",
+    apex_available: ["com.android.virt"],
 }
 
 java_library_static {