summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java26
-rw-r--r--tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/NetworkStagedRollbackTest.java39
-rw-r--r--tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java83
-rw-r--r--tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java38
4 files changed, 65 insertions, 121 deletions
diff --git a/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java b/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java
index 0393248c34d2..a72bd38e5a83 100644
--- a/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java
+++ b/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java
@@ -16,6 +16,7 @@
package com.android.tests.rollback.host;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.testng.Assert.assertThrows;
@@ -115,6 +116,31 @@ public class NetworkStagedRollbackTest extends BaseHostJUnit4Test {
*/
@Test
public void testNetworkPassedDoesNotRollback() throws Exception {
+ runPhase("testNetworkPassedDoesNotRollback_Phase1");
+ // Reboot device to activate staged package
+ getDevice().reboot();
+
+ // Verify rollback was enabled
+ runPhase("testNetworkPassedDoesNotRollback_Phase2");
+
+ // Connect to internet so network health check passes
+ getDevice().executeShellCommand("svc wifi enable");
+ getDevice().executeShellCommand("svc data enable");
+
+ // Wait for device available because emulator device may restart after turning
+ // on mobile data
+ getDevice().waitForDeviceAvailable();
+
+ // Verify rollback was not executed after health check deadline
+ runPhase("testNetworkPassedDoesNotRollback_Phase3");
+ InputStreamSource logcatStream = mReceiver.getLogcatData();
+ try {
+ List<String> watchdogEvents = getWatchdogLoggingEvents(logcatStream);
+ assertEquals(watchdogEventOccurred(watchdogEvents, null, null,
+ REASON_EXPLICIT_HEALTH_CHECK, null), false);
+ } finally {
+ logcatStream.close();
+ }
}
/**
diff --git a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/NetworkStagedRollbackTest.java b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/NetworkStagedRollbackTest.java
index e5c8a685813f..35bc65a24d63 100644
--- a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/NetworkStagedRollbackTest.java
+++ b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/NetworkStagedRollbackTest.java
@@ -150,6 +150,45 @@ public class NetworkStagedRollbackTest {
runShellCommand("pm uninstall " + getNetworkStackPackageName());
}
+ @Test
+ public void testNetworkPassedDoesNotRollback_Phase1() throws Exception {
+ // Remove available rollbacks and uninstall NetworkStack on /data/
+ RollbackManager rm = RollbackUtils.getRollbackManager();
+ String networkStack = getNetworkStackPackageName();
+
+ rm.expireRollbackForPackage(networkStack);
+ uninstallNetworkStackPackage();
+
+ assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
+ networkStack)).isNull();
+
+ // Reduce health check deadline, here unlike the network failed case, we use
+ // a longer deadline because joining a network can take a much longer time for
+ // reasons external to the device than 'not joining'
+ DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK,
+ PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS,
+ Integer.toString(300000), false);
+ // Simulate re-installation of new NetworkStack with rollbacks enabled
+ installNetworkStackPackage();
+ }
+
+ @Test
+ public void testNetworkPassedDoesNotRollback_Phase2() throws Exception {
+ RollbackManager rm = RollbackUtils.getRollbackManager();
+ assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
+ getNetworkStackPackageName())).isNotNull();
+ }
+
+ @Test
+ public void testNetworkPassedDoesNotRollback_Phase3() throws Exception {
+ // Sleep for > health check deadline. We expect no rollback should happen during sleeping.
+ // If the device reboots for rollback, this device test will fail as well as the host test.
+ Thread.sleep(TimeUnit.SECONDS.toMillis(310));
+ RollbackManager rm = RollbackUtils.getRollbackManager();
+ assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(),
+ getNetworkStackPackageName())).isNull();
+ }
+
private static void runShellCommand(String cmd) {
ParcelFileDescriptor pfd = InstrumentationRegistry.getInstrumentation().getUiAutomation()
.executeShellCommand(cmd);
diff --git a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java
index bddd93c6de36..70be83f216da 100644
--- a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java
+++ b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java
@@ -22,14 +22,11 @@ import static com.android.cts.rollback.lib.RollbackUtils.getUniqueRollbackInfoFo
import static com.google.common.truth.Truth.assertThat;
import android.Manifest;
-import android.content.ComponentName;
import android.content.Context;
-import android.content.Intent;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.content.rollback.RollbackInfo;
import android.content.rollback.RollbackManager;
-import android.os.ParcelFileDescriptor;
import android.os.storage.StorageManager;
import android.provider.DeviceConfig;
@@ -44,8 +41,6 @@ import com.android.cts.rollback.lib.Rollback;
import com.android.cts.rollback.lib.RollbackUtils;
import com.android.internal.R;
-import libcore.io.IoUtils;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -65,24 +60,8 @@ import java.util.concurrent.TimeUnit;
*/
@RunWith(JUnit4.class)
public class StagedRollbackTest {
-
- private static final String NETWORK_STACK_CONNECTOR_CLASS =
- "android.net.INetworkStackConnector";
private static final String PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT =
"watchdog_trigger_failure_count";
- private static final String PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS =
- "watchdog_request_timeout_millis";
-
- private static final TestApp NETWORK_STACK = new TestApp("NetworkStack",
- getNetworkStackPackageName(), -1, false, findNetworkStackApk());
-
- private static File findNetworkStackApk() {
- final File apk = new File("/system/priv-app/NetworkStack/NetworkStack.apk");
- if (apk.isFile()) {
- return apk;
- }
- return new File("/system/priv-app/NetworkStackNext/NetworkStackNext.apk");
- }
/**
* Adopts common shell permissions needed for rollback tests.
@@ -274,23 +253,6 @@ public class StagedRollbackTest {
TestApp.B)).isNotNull();
}
- private static String getNetworkStackPackageName() {
- Intent intent = new Intent(NETWORK_STACK_CONNECTOR_CLASS);
- ComponentName comp = intent.resolveSystemService(
- InstrumentationRegistry.getInstrumentation().getContext().getPackageManager(), 0);
- return comp.getPackageName();
- }
-
- private static void installNetworkStackPackage() throws Exception {
- Install.single(NETWORK_STACK).setStaged().setEnableRollback()
- .addInstallFlags(PackageManager.INSTALL_REPLACE_EXISTING).commit();
- }
-
- private static void uninstallNetworkStackPackage() {
- // Uninstall the package as a privileged user so we won't fail due to permission.
- runShellCommand("pm uninstall " + getNetworkStackPackageName());
- }
-
@Test
public void testPreviouslyAbandonedRollbacks_Phase1() throws Exception {
Uninstall.packages(TestApp.A);
@@ -327,45 +289,6 @@ public class StagedRollbackTest {
Uninstall.packages(TestApp.A);
}
- @Test
- public void testNetworkPassedDoesNotRollback_Phase1() throws Exception {
- // Remove available rollbacks and uninstall NetworkStack on /data/
- RollbackManager rm = RollbackUtils.getRollbackManager();
- String networkStack = getNetworkStackPackageName();
-
- rm.expireRollbackForPackage(networkStack);
- uninstallNetworkStackPackage();
-
- assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
- networkStack)).isNull();
-
- // Reduce health check deadline, here unlike the network failed case, we use
- // a longer deadline because joining a network can take a much longer time for
- // reasons external to the device than 'not joining'
- DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK,
- PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS,
- Integer.toString(300000), false);
- // Simulate re-installation of new NetworkStack with rollbacks enabled
- installNetworkStackPackage();
- }
-
- @Test
- public void testNetworkPassedDoesNotRollback_Phase2() throws Exception {
- RollbackManager rm = RollbackUtils.getRollbackManager();
- assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
- getNetworkStackPackageName())).isNotNull();
- }
-
- @Test
- public void testNetworkPassedDoesNotRollback_Phase3() throws Exception {
- // Sleep for > health check deadline. We expect no rollback should happen during sleeping.
- // If the device reboots for rollback, this device test will fail as well as the host test.
- Thread.sleep(TimeUnit.SECONDS.toMillis(310));
- RollbackManager rm = RollbackUtils.getRollbackManager();
- assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(),
- getNetworkStackPackageName())).isNull();
- }
-
private static String getModuleMetadataPackageName() {
return InstrumentationRegistry.getInstrumentation().getContext()
.getResources().getString(R.string.config_defaultModuleMetadataProvider);
@@ -554,12 +477,6 @@ public class StagedRollbackTest {
InstallUtils.waitForSessionReady(committed.getCommittedSessionId());
}
- private static void runShellCommand(String cmd) {
- ParcelFileDescriptor pfd = InstrumentationRegistry.getInstrumentation().getUiAutomation()
- .executeShellCommand(cmd);
- IoUtils.closeQuietly(pfd);
- }
-
@Test
public void isCheckpointSupported() {
Context context = InstrumentationRegistry.getInstrumentation().getContext();
diff --git a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
index 3c5eaef86bcc..c3fd962ffa6d 100644
--- a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
+++ b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
@@ -228,39 +228,6 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {
}
/**
- * Tests passed network health check does not trigger watchdog staged rollbacks.
- */
- @Test
- public void testNetworkPassedDoesNotRollback() throws Exception {
- runPhase("testNetworkPassedDoesNotRollback_Phase1");
- // Reboot device to activate staged package
- getDevice().reboot();
-
- // Verify rollback was enabled
- runPhase("testNetworkPassedDoesNotRollback_Phase2");
-
- // Connect to internet so network health check passes
- getDevice().executeShellCommand("svc wifi enable");
- getDevice().executeShellCommand("svc data enable");
-
- // Wait for device available because emulator device may restart after turning
- // on mobile data
- getDevice().waitForDeviceAvailable();
-
- // Verify rollback was not executed after health check deadline
- runPhase("testNetworkPassedDoesNotRollback_Phase3");
- InputStreamSource logcatStream = mReceiver.getLogcatData();
- try {
- List<String> watchdogEvents = getWatchdogLoggingEvents(logcatStream);
- assertEquals(watchdogEventOccurred(watchdogEvents, null, null,
- REASON_EXPLICIT_HEALTH_CHECK, null), false);
- } finally {
- logcatStream.close();
- }
-
- }
-
- /**
* Tests rolling back user data where there are multiple rollbacks for that package.
*/
@Test
@@ -489,11 +456,6 @@ public class StagedRollbackTest extends BaseHostJUnit4Test {
}
}
- private String getNetworkStackPath() throws Exception {
- // Find the NetworkStack path (can be NetworkStack.apk or NetworkStackNext.apk)
- return getDevice().executeShellCommand("ls /system/priv-app/NetworkStack*/*.apk");
- }
-
private boolean isCheckpointSupported() throws Exception {
try {
runPhase("isCheckpointSupported");