Snap for 8730993 from 151a58e35e9e592ee8a5ff943ce3212f7df5c102 to mainline-tzdata3-release

Change-Id: I5d3b1a1b605c1ec8bd07734b527e582b88f5333c
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
deleted file mode 100644
index aff86f5..0000000
--- a/PREUPLOAD.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-[Builtin Hooks]
-commit_msg_changeid_field = true
-
-[Hook Scripts]
-checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
\ No newline at end of file
diff --git a/hostsidetests/packageinstaller/Android.bp b/hostsidetests/packageinstaller/Android.bp
deleted file mode 100644
index b1bc038..0000000
--- a/hostsidetests/packageinstaller/Android.bp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (C) 2021 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package {
-    default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-java_test_host {
-    name: "CtsRootPackageInstallerHostTestCases",
-    defaults: ["cts_defaults"],
-    srcs: ["src/**/*.java"],
-    libs: ["cts-tradefed", "tradefed", "truth-prebuilt"],
-    data: [":CtsRootRollbackManagerHostTestHelperApp"],
-    test_suites: ["cts_root", "general-tests"],
-}
-
-android_test_helper_app {
-    name: "CtsRootPackageInstallerTestCases",
-    srcs:  ["app/src/**/*.java"],
-    static_libs: ["androidx.test.rules", "cts-install-lib"],
-    manifest : "app/AndroidManifest.xml",
-    test_suites: ["device-tests"],
-}
diff --git a/hostsidetests/packageinstaller/AndroidTest.xml b/hostsidetests/packageinstaller/AndroidTest.xml
deleted file mode 100644
index 10c8d0f..0000000
--- a/hostsidetests/packageinstaller/AndroidTest.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2021 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Runs PackageInstaller CTS root tests">
-    <option name="test-suite-tag" value="cts_root" />
-    <option name="config-descriptor:metadata" key="component" value="framework" />
-    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
-    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
-    <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
-
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true"/>
-        <option name="test-file-name" value="CtsRootPackageInstallerTestCases.apk"/>
-    </target_preparer>
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="pm uninstall com.android.cts.install.lib.testapp.A" />
-        <option name="run-command" value="pm uninstall com.android.cts.install.lib.testapp.B" />
-        <option name="run-command" value="pm uninstall com.android.cts.install.lib.testapp.C" />
-        <option name="run-command" value="setprop persist.log.tag.PackageInstaller DEBUG" />
-        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.A" />
-        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.B" />
-        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.C" />
-        <option name="run-command" value="svc wifi disable" />
-        <option name="run-command" value="svc data disable" />
-        <option name="teardown-command" value="svc wifi enable" />
-        <option name="teardown-command" value="svc data enable" />
-    </target_preparer>
-    <target_preparer class="com.android.tradefed.targetprep.RebootTargetPreparer" />
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
-    <test class="com.android.tradefed.testtype.HostTest" >
-        <option name="class" value="com.android.cts_root.packageinstaller.host.SessionCleanUpHostTest" />
-    </test>
-</configuration>
diff --git a/hostsidetests/packageinstaller/OWNERS b/hostsidetests/packageinstaller/OWNERS
deleted file mode 100644
index a6203db..0000000
--- a/hostsidetests/packageinstaller/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-# Bug component: 36137
-patb@google.com
-schfan@google.com
-wangchun@google.com
diff --git a/hostsidetests/packageinstaller/TEST_MAPPING b/hostsidetests/packageinstaller/TEST_MAPPING
deleted file mode 100644
index 0c983a2..0000000
--- a/hostsidetests/packageinstaller/TEST_MAPPING
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "presubmit": [
-    {
-      "name": "CtsRootPackageInstallerHostTestCases"
-    }
-  ]
-}
diff --git a/hostsidetests/packageinstaller/app/AndroidManifest.xml b/hostsidetests/packageinstaller/app/AndroidManifest.xml
deleted file mode 100644
index 2f2f4a7..0000000
--- a/hostsidetests/packageinstaller/app/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2021 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.cts_root.packageinstaller" >
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="com.android.cts_root.packageinstaller"
-                     android:label="PackageInstaller CTS root tests"/>
-
-</manifest>
diff --git a/hostsidetests/packageinstaller/app/src/com/android/cts_root/packageinstaller/SessionCleanUpTest.java b/hostsidetests/packageinstaller/app/src/com/android/cts_root/packageinstaller/SessionCleanUpTest.java
deleted file mode 100644
index 3946255..0000000
--- a/hostsidetests/packageinstaller/app/src/com/android/cts_root/packageinstaller/SessionCleanUpTest.java
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts_root.packageinstaller;
-
-import static com.android.cts.install.lib.InstallUtils.getInstalledVersion;
-import static com.android.cts.install.lib.InstallUtils.openPackageInstallerSession;
-import static com.android.cts.install.lib.PackageInstallerSessionInfoSubject.assertThat;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.Manifest;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.PackageInstaller;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-
-import com.android.cts.install.lib.Install;
-import com.android.cts.install.lib.InstallUtils;
-import com.android.cts.install.lib.LocalIntentSender;
-import com.android.cts.install.lib.TestApp;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-
-public class SessionCleanUpTest {
-    private static final int INSTALL_FORCE_PERMISSION_PROMPT = 0x00000400;
-    /**
-     * Time between repeated checks in {@link #retry}.
-     */
-    private static final long RETRY_CHECK_INTERVAL_MILLIS = 500;
-    /**
-     * Maximum number of checks in {@link #retry} before a timeout occurs.
-     */
-    private static final long RETRY_MAX_INTERVALS = 20;
-
-    @Before
-    public void setUp() {
-        InstrumentationRegistry.getInstrumentation().getUiAutomation()
-                .adoptShellPermissionIdentity(
-                        Manifest.permission.CLEAR_APP_CACHE,
-                        Manifest.permission.INSTALL_PACKAGES,
-                        Manifest.permission.DELETE_PACKAGES);
-    }
-
-    @After
-    public void tearDown() {
-        InstrumentationRegistry.getInstrumentation().getUiAutomation()
-                .dropShellPermissionIdentity();
-    }
-
-    private static <T> T retry(Supplier<T> supplier, Predicate<T> predicate, String message)
-            throws InterruptedException {
-        for (int i = 0; i < RETRY_MAX_INTERVALS; i++) {
-            T result = supplier.get();
-            if (predicate.test(result)) {
-                return result;
-            }
-            Thread.sleep(RETRY_CHECK_INTERVAL_MILLIS);
-        }
-        throw new AssertionError(message);
-    }
-
-    private void assertSessionNotExists(int sessionId) throws Exception {
-        // The session is cleaned up asynchronously.
-        // Retry until the session no longer exists.
-        retry(() -> InstallUtils.getPackageInstaller().getSessionInfo(sessionId),
-                info -> info == null,
-                "Session " + sessionId + " not cleaned up");
-    }
-
-    @Test
-    public void testSessionCleanUp_Single_Success() throws Exception {
-        int sessionId = Install.single(TestApp.A1).commit();
-        assertThat(getInstalledVersion(TestApp.A)).isEqualTo(1);
-        assertSessionNotExists(sessionId);
-    }
-
-    @Test
-    public void testSessionCleanUp_Multi_Success() throws Exception {
-        int parentId = Install.multi(TestApp.A1, TestApp.B1).createSession();
-        try (PackageInstaller.Session parent = openPackageInstallerSession(parentId)) {
-            int[] childIds = parent.getChildSessionIds();
-            LocalIntentSender sender = new LocalIntentSender();
-            parent.commit(sender.getIntentSender());
-            InstallUtils.assertStatusSuccess(sender.getResult());
-            assertThat(getInstalledVersion(TestApp.A)).isEqualTo(1);
-            assertThat(getInstalledVersion(TestApp.B)).isEqualTo(1);
-            assertSessionNotExists(parentId);
-            for (int childId : childIds) {
-                assertSessionNotExists(childId);
-            }
-        }
-    }
-
-    @Test
-    public void testSessionCleanUp_Single_VerificationFailed() throws Exception {
-        Install.single(TestApp.A2).commit();
-        int sessionId = Install.single(TestApp.A1).createSession();
-        try (PackageInstaller.Session session = openPackageInstallerSession(sessionId)) {
-            LocalIntentSender sender = new LocalIntentSender();
-            session.commit(sender.getIntentSender());
-            InstallUtils.assertStatusFailure(sender.getResult());
-            assertSessionNotExists(sessionId);
-        }
-    }
-
-    @Test
-    public void testSessionCleanUp_Multi_VerificationFailed() throws Exception {
-        Install.single(TestApp.A2).commit();
-        int parentId = Install.multi(TestApp.A1, TestApp.B1).createSession();
-        try (PackageInstaller.Session parent = openPackageInstallerSession(parentId)) {
-            int[] childIds = parent.getChildSessionIds();
-            LocalIntentSender sender = new LocalIntentSender();
-            parent.commit(sender.getIntentSender());
-            InstallUtils.assertStatusFailure(sender.getResult());
-            assertSessionNotExists(parentId);
-            for (int childId : childIds) {
-                assertSessionNotExists(childId);
-            }
-        }
-    }
-
-    @Test
-    public void testSessionCleanUp_Single_ValidationFailed() throws Exception {
-        int sessionId = Install.single(TestApp.AIncompleteSplit).createSession();
-        try (PackageInstaller.Session session = openPackageInstallerSession(sessionId)) {
-            LocalIntentSender sender = new LocalIntentSender();
-            session.commit(sender.getIntentSender());
-            InstallUtils.assertStatusFailure(sender.getResult());
-            assertSessionNotExists(sessionId);
-        }
-    }
-
-    @Test
-    public void testSessionCleanUp_Multi_ValidationFailed() throws Exception {
-        int parentId = Install.multi(TestApp.AIncompleteSplit, TestApp.B1).createSession();
-        try (PackageInstaller.Session parent = openPackageInstallerSession(parentId)) {
-            int[] childIds = parent.getChildSessionIds();
-            LocalIntentSender sender = new LocalIntentSender();
-            parent.commit(sender.getIntentSender());
-            InstallUtils.assertStatusFailure(sender.getResult());
-            assertSessionNotExists(parentId);
-            for (int childId : childIds) {
-                assertSessionNotExists(childId);
-            }
-        }
-    }
-
-    @Test
-    public void testSessionCleanUp_Single_NoPermission() throws Exception {
-        int sessionId = Install.single(TestApp.A1)
-                .addInstallFlags(INSTALL_FORCE_PERMISSION_PROMPT).createSession();
-        try (PackageInstaller.Session session = openPackageInstallerSession(sessionId)) {
-            LocalIntentSender sender = new LocalIntentSender();
-            session.commit(sender.getIntentSender());
-            Intent intent = sender.getResult();
-            int status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS,
-                    PackageInstaller.STATUS_FAILURE);
-            assertThat(status).isEqualTo(PackageInstaller.STATUS_PENDING_USER_ACTION);
-            int idNeedsUserAction = intent.getIntExtra(PackageInstaller.EXTRA_SESSION_ID, -1);
-            InstallUtils.getPackageInstaller().setPermissionsResult(idNeedsUserAction, false);
-            InstallUtils.assertStatusFailure(sender.getResult());
-            assertSessionNotExists(sessionId);
-        }
-    }
-
-    @Test
-    public void testSessionCleanUp_Multi_NoPermission() throws Exception {
-        int parentId = Install.multi(TestApp.A1, TestApp.B1)
-                .addInstallFlags(INSTALL_FORCE_PERMISSION_PROMPT).createSession();
-        try (PackageInstaller.Session parent = openPackageInstallerSession(parentId)) {
-            int[] childIds = parent.getChildSessionIds();
-            LocalIntentSender sender = new LocalIntentSender();
-            parent.commit(sender.getIntentSender());
-            Intent intent = sender.getResult();
-            int status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS,
-                    PackageInstaller.STATUS_FAILURE);
-            assertThat(status).isEqualTo(PackageInstaller.STATUS_PENDING_USER_ACTION);
-            int idNeedsUserAction = intent.getIntExtra(PackageInstaller.EXTRA_SESSION_ID, -1);
-            InstallUtils.getPackageInstaller().setPermissionsResult(idNeedsUserAction, false);
-            InstallUtils.assertStatusFailure(sender.getResult());
-            assertSessionNotExists(parentId);
-            for (int childId : childIds) {
-                assertSessionNotExists(childId);
-            }
-        }
-    }
-
-    @Test
-    public void testSessionCleanUp_Single_Expire_Install() throws Exception {
-        int sessionId = Install.single(TestApp.A1).setStaged().commit();
-
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        prefs.edit().putInt("sessionId", sessionId).commit();
-    }
-
-    @Test
-    public void testSessionCleanUp_Single_Expire_VerifyInstall() throws Exception {
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        int sessionId = prefs.getInt("sessionId", -1);
-        assertThat(InstallUtils.getStagedSessionInfo(sessionId)).isStagedSessionApplied();
-    }
-
-    @Test
-    public void testSessionCleanUp_Single_Expire_CleanUp() throws Exception {
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        int sessionId = prefs.getInt("sessionId", -1);
-        assertSessionNotExists(sessionId);
-    }
-
-    @Test
-    public void testSessionCleanUp_Multi_Expire_Install() throws Exception {
-        int parentId = Install.multi(TestApp.A1, TestApp.B1).setStaged().commit();
-        int[] childIds;
-        try (PackageInstaller.Session parent = openPackageInstallerSession(parentId)) {
-            childIds = parent.getChildSessionIds();
-        }
-
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        prefs.edit().putInt("parentId", parentId).commit();
-        prefs.edit().putInt("childId1", childIds[0]).commit();
-        prefs.edit().putInt("childId2", childIds[1]).commit();
-    }
-
-    @Test
-    public void testSessionCleanUp_Multi_Expire_VerifyInstall() throws Exception {
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        int parentId = prefs.getInt("parentId", -1);
-        assertThat(InstallUtils.getStagedSessionInfo(parentId)).isStagedSessionApplied();
-    }
-
-    @Test
-    public void testSessionCleanUp_Multi_Expire_CleanUp() throws Exception {
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        int parentId = prefs.getInt("parentId", -1);
-        int childId1 = prefs.getInt("childId1", -1);
-        int childId2 = prefs.getInt("childId2", -1);
-        assertSessionNotExists(parentId);
-        assertSessionNotExists(childId1);
-        assertSessionNotExists(childId2);
-    }
-
-    @Test
-    public void testSessionCleanUp_LowStorage_Install() throws Exception {
-        int parentId = Install.multi(TestApp.A1, TestApp.B1).createSession();
-        int[] childIds;
-        try (PackageInstaller.Session parent = openPackageInstallerSession(parentId)) {
-            childIds = parent.getChildSessionIds();
-        }
-
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        prefs.edit().putInt("parentId", parentId).commit();
-        prefs.edit().putInt("childId1", childIds[0]).commit();
-        prefs.edit().putInt("childId2", childIds[1]).commit();
-    }
-
-    @Test
-    public void testSessionCleanUp_LowStorage_CleanUp() throws Exception {
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        // Pass Long.MAX_VALUE to ensure old sessions will be abandoned
-        context.getPackageManager().freeStorage(Long.MAX_VALUE, null);
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        int parentId = prefs.getInt("parentId", -1);
-        int childId1 = prefs.getInt("childId1", -1);
-        int childId2 = prefs.getInt("childId2", -1);
-        assertSessionNotExists(parentId);
-        assertSessionNotExists(childId1);
-        assertSessionNotExists(childId2);
-    }
-}
diff --git a/hostsidetests/packageinstaller/src/com/android/cts_root/packageinstaller/host/SessionCleanUpHostTest.java b/hostsidetests/packageinstaller/src/com/android/cts_root/packageinstaller/host/SessionCleanUpHostTest.java
deleted file mode 100644
index 5854da4..0000000
--- a/hostsidetests/packageinstaller/src/com/android/cts_root/packageinstaller/host/SessionCleanUpHostTest.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts_root.packageinstaller.host;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.platform.test.annotations.LargeTest;
-
-import com.android.ddmlib.Log;
-import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestRule;
-import org.junit.runner.RunWith;
-import org.junit.runners.model.Statement;
-
-import java.time.Instant;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
-/**
- * Tests sessions are cleaned up (session id and staging files) when installation fails.
- */
-@RunWith(DeviceJUnit4ClassRunner.class)
-public class SessionCleanUpHostTest extends BaseHostJUnit4Test {
-    private static final String TAG = "SessionCleanUpHostTest";
-    // Expiry time for staged sessions that have not changed state in this time
-    private static final long MAX_TIME_SINCE_UPDATE_MILLIS = TimeUnit.DAYS.toMillis(21);
-
-    /**
-     * Checks staging directories are deleted when installation fails.
-     */
-    @Rule
-    public TestRule mStagingDirectoryRule = (base, description) -> new Statement() {
-        @Override
-        public void evaluate() throws Throwable {
-            List<String> stagedBefore = getStagingDirectoriesForStagedSessions();
-            List<String> nonStagedBefore = getStagingDirectoriesForNonStagedSessions();
-            Log.d(TAG, "stagedBefore=" + stagedBefore);
-            Log.d(TAG, "nonStagedBefore=" + nonStagedBefore);
-
-            base.evaluate();
-
-            List<String> stagedAfter = getStagingDirectoriesForStagedSessions();
-            List<String> nonStagedAfter = getStagingDirectoriesForNonStagedSessions();
-            Log.d(TAG, "stagedAfter=" + stagedAfter);
-            Log.d(TAG, "nonStagedAfter=" + nonStagedAfter);
-
-            // stagedAfter will be a subset of stagedBefore if all staging directories created
-            // during tests are correctly deleted when installation fails
-            assertThat(stagedBefore).containsAtLeastElementsIn(stagedAfter);
-            assertThat(nonStagedBefore).containsAtLeastElementsIn(nonStagedAfter);
-        }
-    };
-
-    private void run(String method) throws Exception {
-        assertThat(runDeviceTests("com.android.cts_root.packageinstaller",
-                "com.android.cts_root.packageinstaller.SessionCleanUpTest",
-                method)).isTrue();
-    }
-
-    @Before
-    @After
-    public void cleanUp() throws Exception {
-        getDevice().uninstallPackage("com.android.cts.install.lib.testapp.A");
-        getDevice().uninstallPackage("com.android.cts.install.lib.testapp.B");
-        getDevice().uninstallPackage("com.android.cts.install.lib.testapp.C");
-    }
-
-    /**
-     * Tests a successful single-package session is cleaned up.
-     */
-    @Test
-    public void testSessionCleanUp_Single_Success() throws Exception {
-        run("testSessionCleanUp_Single_Success");
-    }
-
-    /**
-     * Tests a successful multi-package session is cleaned up.
-     */
-    @Test
-    public void testSessionCleanUp_Multi_Success() throws Exception {
-        run("testSessionCleanUp_Multi_Success");
-    }
-
-    /**
-     * Tests a single-package session is cleaned up when verification failed.
-     */
-    @Test
-    public void testSessionCleanUp_Single_VerificationFailed() throws Exception {
-        run("testSessionCleanUp_Single_VerificationFailed");
-    }
-
-    /**
-     * Tests a multi-package session is cleaned up when verification failed.
-     */
-    @Test
-    public void testSessionCleanUp_Multi_VerificationFailed() throws Exception {
-        run("testSessionCleanUp_Multi_VerificationFailed");
-    }
-
-    /**
-     * Tests a single-package session is cleanup up when validation failed.
-     */
-    @Test
-    public void testSessionCleanUp_Single_ValidationFailed() throws Exception {
-        run("testSessionCleanUp_Single_ValidationFailed");
-    }
-
-    /**
-     * Tests a multi-package session is cleaned up when validation failed.
-     */
-    @Test
-    public void testSessionCleanUp_Multi_ValidationFailed() throws Exception {
-        run("testSessionCleanUp_Multi_ValidationFailed");
-    }
-
-    /**
-     * Tests a single-package session is cleaned up when user rejected the permission.
-     */
-    @Test
-    public void testSessionCleanUp_Single_NoPermission() throws Exception {
-        run("testSessionCleanUp_Single_NoPermission");
-    }
-
-    /**
-     * Tests a multi-package session is cleaned up when user rejected the permission.
-     */
-    @Test
-    public void testSessionCleanUp_Multi_NoPermission() throws Exception {
-        run("testSessionCleanUp_Multi_NoPermission");
-    }
-
-    /**
-     * Tests a single-package session is cleaned up when it expired.
-     */
-    @LargeTest
-    @Ignore("b/217132609")
-    @Test
-    public void testSessionCleanUp_Single_Expire() throws Exception {
-        run("testSessionCleanUp_Single_Expire_Install");
-        getDevice().reboot();
-        run("testSessionCleanUp_Single_Expire_VerifyInstall");
-        expireSessions();
-        run("testSessionCleanUp_Single_Expire_CleanUp");
-    }
-
-    /**
-     * Tests a multi-package session is cleaned up when it expired.
-     */
-    @Ignore("b/217132609")
-    @Test
-    public void testSessionCleanUp_Multi_Expire() throws Exception {
-        run("testSessionCleanUp_Multi_Expire_Install");
-        getDevice().reboot();
-        run("testSessionCleanUp_Multi_Expire_VerifyInstall");
-        expireSessions();
-        run("testSessionCleanUp_Multi_Expire_CleanUp");
-    }
-
-    /**
-     * Tests sessions are cleaned up on low storage.
-     */
-    @Test
-    public void testSessionCleanUp_LowStorage() throws Exception {
-        Instant t1 = Instant.ofEpochMilli(getDevice().getDeviceDate());
-        Instant t2 = t1.plusMillis(TimeUnit.DAYS.toMillis(1));
-        try {
-            run("testSessionCleanUp_LowStorage_Install");
-            // Advance system clock to have old sessions
-            getDevice().setDate(Date.from(t2));
-            getDevice().executeShellCommand("am broadcast -a android.intent.action.TIME_SET");
-            // Run PackageManager#freeStorage to abandon old sessions
-            run("testSessionCleanUp_LowStorage_CleanUp");
-        } finally {
-            // Restore system clock
-            getDevice().setDate(Date.from(t1));
-            getDevice().executeShellCommand("am broadcast -a android.intent.action.TIME_SET");
-        }
-    }
-
-    private List<String> getStagingDirectoriesForNonStagedSessions() throws Exception {
-        return getStagingDirectories("/data/app", "vmdl\\d+.tmp");
-    }
-
-    private List<String> getStagingDirectoriesForStagedSessions() throws Exception {
-        return getStagingDirectories("/data/app-staging", "session_\\d+");
-    }
-
-    private List<String> getStagingDirectories(String baseDir, String pattern) throws Exception {
-        return getDevice().getFileEntry(baseDir).getChildren(false)
-                .stream().filter(entry -> entry.getName().matches(pattern))
-                .map(entry -> entry.getName())
-                .collect(Collectors.toList());
-    }
-
-    private void expireSessions() throws Exception {
-        Instant t1 = Instant.ofEpochMilli(getDevice().getDeviceDate());
-        Instant t2 = t1.plusMillis(MAX_TIME_SINCE_UPDATE_MILLIS);
-        try {
-            // Advance system clock by MAX_TIME_SINCE_UPDATE_MILLIS to expire the staged session
-            getDevice().setDate(Date.from(t2));
-            getDevice().executeShellCommand("am broadcast -a android.intent.action.TIME_SET");
-            // Restart system server to run expiration
-            getDevice().executeShellCommand("stop");
-            getDevice().executeShellCommand("start");
-            getDevice().waitForDeviceAvailable();
-        } finally {
-            // Restore system clock
-            getDevice().setDate(Date.from(t1));
-            getDevice().executeShellCommand("am broadcast -a android.intent.action.TIME_SET");
-        }
-    }
-}
diff --git a/hostsidetests/rollback/Android.bp b/hostsidetests/rollback/Android.bp
deleted file mode 100644
index 85ac53f..0000000
--- a/hostsidetests/rollback/Android.bp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (C) 2021 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package {
-    default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-java_test_host {
-    name: "CtsRootRollbackManagerHostTestCases",
-    defaults: ["cts_defaults"],
-    srcs: ["src/**/*.java"],
-    libs: ["cts-tradefed", "cts-shim-host-lib", "tradefed", "truth-prebuilt"],
-    static_libs: ["cts-install-lib-host"],
-    data: [":CtsRootRollbackManagerHostTestHelperApp"],
-    test_suites: ["cts_root", "general-tests"],
-}
-
-android_test_helper_app {
-    name: "CtsRootRollbackManagerHostTestHelperApp",
-    srcs:  ["app/src/**/*.java"],
-    static_libs: ["androidx.test.rules", "cts-rollback-lib", "cts-install-lib"],
-    manifest : "app/AndroidManifest.xml",
-    sdk_version: "test_current",
-    test_suites: ["device-tests"],
-}
diff --git a/hostsidetests/rollback/AndroidTest.xml b/hostsidetests/rollback/AndroidTest.xml
deleted file mode 100644
index 35e7cda..0000000
--- a/hostsidetests/rollback/AndroidTest.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2021 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Runs the RollbackManager host tests">
-    <option name="test-suite-tag" value="cts_root" />
-    <option name="config-descriptor:metadata" key="component" value="framework" />
-    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
-    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
-    <option name="config-descriptor:metadata" key="parameter" value="not_secondary_user" />
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsRootRollbackManagerHostTestHelperApp.apk" />
-    </target_preparer>
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
-    <test class="com.android.tradefed.testtype.HostTest" >
-        <option name="class" value="com.android.cts_root.rollback.host.RollbackManagerHostTest" />
-    </test>
-    <!-- Controller that will skip the module if a native bridge situation is detected -->
-    <!-- For example: module wants to run arm and device is x86 -->
-    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.NativeBridgeModuleController" />
-</configuration>
diff --git a/hostsidetests/rollback/OWNERS b/hostsidetests/rollback/OWNERS
deleted file mode 100644
index b8578eb..0000000
--- a/hostsidetests/rollback/OWNERS
+++ /dev/null
@@ -1,5 +0,0 @@
-# Bug component: 557916
-olilan@google.com
-wangchun@google.com
-gavincorkery@google.com
-*
diff --git a/hostsidetests/rollback/TEST_MAPPING b/hostsidetests/rollback/TEST_MAPPING
deleted file mode 100644
index ac1e898..0000000
--- a/hostsidetests/rollback/TEST_MAPPING
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "presubmit-large": [
-    {
-      "name": "CtsRootRollbackManagerHostTestCases"
-    }
-  ]
-}
diff --git a/hostsidetests/rollback/app/AndroidManifest.xml b/hostsidetests/rollback/app/AndroidManifest.xml
deleted file mode 100644
index 37b3939..0000000
--- a/hostsidetests/rollback/app/AndroidManifest.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2021 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.cts_root.rollback.host.app" >
-
-    <queries>
-        <package android:name="com.android.cts.ctsshim" />
-        <package android:name="com.android.cts.priv.ctsshim" />
-    </queries>
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="com.android.cts_root.rollback.host.app"
-                     android:label="Helper for CTS-root host tests of RollbackManager"/>
-
-</manifest>
diff --git a/hostsidetests/rollback/app/src/com/android/cts_root/rollback/host/app/HostTestHelper.java b/hostsidetests/rollback/app/src/com/android/cts_root/rollback/host/app/HostTestHelper.java
deleted file mode 100644
index 7b5aa79..0000000
--- a/hostsidetests/rollback/app/src/com/android/cts_root/rollback/host/app/HostTestHelper.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts_root.rollback.host.app;
-
-import static com.android.cts.rollback.lib.RollbackInfoSubject.assertThat;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.Manifest;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
-import android.content.rollback.RollbackInfo;
-import android.content.rollback.RollbackManager;
-import android.os.storage.StorageManager;
-import android.provider.DeviceConfig;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-
-import com.android.cts.install.lib.Install;
-import com.android.cts.install.lib.InstallUtils;
-import com.android.cts.install.lib.TestApp;
-import com.android.cts.rollback.lib.Rollback;
-import com.android.cts.rollback.lib.RollbackUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * On-device helper test methods used for host-driven rollback tests.
- */
-@RunWith(JUnit4.class)
-public class HostTestHelper {
-    private static final String PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT =
-            "watchdog_trigger_failure_count";
-
-    @Before
-    public void setup() {
-        InstallUtils.adoptShellPermissionIdentity(
-                    Manifest.permission.INSTALL_PACKAGES,
-                    Manifest.permission.DELETE_PACKAGES,
-                    Manifest.permission.TEST_MANAGE_ROLLBACKS,
-                    Manifest.permission.FORCE_STOP_PACKAGES,
-                    Manifest.permission.WRITE_DEVICE_CONFIG);
-    }
-
-    @After
-    public void teardown() {
-        InstallUtils.dropShellPermissionIdentity();
-    }
-
-    @Test
-    public void cleanUp() {
-        // Remove all pending rollbacks
-        RollbackManager rm = RollbackUtils.getRollbackManager();
-        rm.getAvailableRollbacks().stream().flatMap(info -> info.getPackages().stream())
-                .map(info -> info.getPackageName()).forEach(rm::expireRollbackForPackage);
-    }
-
-    @Test
-    public void testRollbackDataPolicy_Phase1_Install() throws Exception {
-        Install.multi(TestApp.A1, TestApp.B1, TestApp.C1).commit();
-        // Write user data version = 1
-        InstallUtils.processUserData(TestApp.A);
-        InstallUtils.processUserData(TestApp.B);
-        InstallUtils.processUserData(TestApp.C);
-
-        Install a2 = Install.single(TestApp.A2).setStaged()
-                .setEnableRollback(PackageManager.ROLLBACK_DATA_POLICY_WIPE);
-        Install b2 = Install.single(TestApp.B2).setStaged()
-                .setEnableRollback(PackageManager.ROLLBACK_DATA_POLICY_RESTORE);
-        Install c2 = Install.single(TestApp.C2).setStaged()
-                .setEnableRollback(PackageManager.ROLLBACK_DATA_POLICY_RETAIN);
-        Install.multi(a2, b2, c2).setEnableRollback().setStaged().commit();
-    }
-
-    @Test
-    public void testRollbackDataPolicy_Phase2_Rollback() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2);
-        assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(2);
-        // Write user data version = 2
-        InstallUtils.processUserData(TestApp.A);
-        InstallUtils.processUserData(TestApp.B);
-        InstallUtils.processUserData(TestApp.C);
-
-        RollbackInfo info = RollbackUtils.getAvailableRollback(TestApp.A);
-        RollbackUtils.rollback(info.getRollbackId());
-    }
-
-    @Test
-    public void testRollbackDataPolicy_Phase3_VerifyRollback() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1);
-        assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(1);
-        assertThat(InstallUtils.getInstalledVersion(TestApp.C)).isEqualTo(1);
-        // Read user data version from userdata.txt
-        // A's user data version is -1 for user data is wiped.
-        // B's user data version is 1 for user data is restored.
-        // C's user data version is 2 for user data is retained.
-        assertThat(InstallUtils.getUserDataVersion(TestApp.A)).isEqualTo(-1);
-        assertThat(InstallUtils.getUserDataVersion(TestApp.B)).isEqualTo(1);
-        assertThat(InstallUtils.getUserDataVersion(TestApp.C)).isEqualTo(2);
-    }
-
-    @Test
-    public void testRollbackApkDataDirectories_Phase1_InstallV1() throws Exception {
-        Install.single(TestApp.A1).commit();
-    }
-
-    @Test
-    public void testRollbackApkDataDirectories_Phase2_InstallV2() throws Exception {
-        Install.single(TestApp.A2).setStaged().setEnableRollback().commit();
-    }
-
-    @Test
-    public void testRollbackApkDataDirectories_Phase3_Rollback() throws Exception {
-        RollbackInfo available = RollbackUtils.getAvailableRollback(TestApp.A);
-        RollbackUtils.rollback(available.getRollbackId(), TestApp.A2);
-    }
-
-    @Test
-    public void testExpireSession_Phase1_Install() throws Exception {
-        Install.single(TestApp.A1).commit();
-        int sessionId = Install.single(TestApp.A2).setEnableRollback().setStaged().commit();
-
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        prefs.edit().putInt("sessionId", sessionId).commit();
-    }
-
-    @Test
-    public void testExpireSession_Phase2_VerifyInstall() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2);
-        RollbackInfo rollback = RollbackUtils.getAvailableRollback(TestApp.A);
-        assertThat(rollback).isNotNull();
-    }
-
-    @Test
-    public void testExpireSession_Phase3_VerifyRollback() throws Exception {
-        RollbackInfo rollback = RollbackUtils.getAvailableRollback(TestApp.A);
-        assertThat(rollback).isNotNull();
-
-        // Check the session is expired
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        SharedPreferences prefs = context.getSharedPreferences("test", 0);
-        int sessionId = prefs.getInt("sessionId", -1);
-        PackageInstaller.SessionInfo info = InstallUtils.getStagedSessionInfo(sessionId);
-        assertThat(info).isNull();
-    }
-
-    @Test
-    public void testRollbackApexDataDirectories_Phase1_Install() throws Exception {
-        Install.single(TestApp.Apex2).setStaged().setEnableRollback().commit();
-    }
-
-    @Test
-    public void testBadApkOnly_Phase1_Install() throws Exception {
-        Install.single(TestApp.A1).commit();
-        Install.single(TestApp.ACrashing2).setEnableRollback().setStaged().commit();
-    }
-
-    @Test
-    public void testBadApkOnly_Phase2_VerifyInstall() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2);
-
-        RollbackInfo rollback = RollbackUtils.getAvailableRollback(TestApp.A);
-        assertThat(rollback).isNotNull();
-        assertThat(rollback).packagesContainsExactly(Rollback.from(TestApp.A2).to(TestApp.A1));
-        assertThat(rollback.isStaged()).isTrue();
-
-        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK,
-                PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT,
-                Integer.toString(5), false);
-        RollbackUtils.sendCrashBroadcast(TestApp.A, 4);
-        // Sleep for a while to make sure we don't trigger rollback
-        Thread.sleep(TimeUnit.SECONDS.toMillis(30));
-    }
-
-    @Test
-    public void testBadApkOnly_Phase3_VerifyRollback() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1);
-
-        RollbackInfo rollback = RollbackUtils.getCommittedRollback(TestApp.A);
-        assertThat(rollback).isNotNull();
-        assertThat(rollback).packagesContainsExactly(Rollback.from(TestApp.A2).to(TestApp.A1));
-        assertThat(rollback).causePackagesContainsExactly(TestApp.ACrashing2);
-        assertThat(rollback).isStaged();
-        assertThat(rollback.getCommittedSessionId()).isNotEqualTo(-1);
-    }
-
-    @Test
-    public void testNativeWatchdogTriggersRollback_Phase1_Install() throws Exception {
-        Install.single(TestApp.A1).commit();
-        Install.single(TestApp.A2).setEnableRollback().setStaged().commit();
-    }
-
-    @Test
-    public void testNativeWatchdogTriggersRollback_Phase2_VerifyInstall() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2);
-        RollbackInfo rollback = RollbackUtils.getAvailableRollback(TestApp.A);
-        assertThat(rollback).isNotNull();
-    }
-
-    @Test
-    public void testNativeWatchdogTriggersRollback_Phase3_VerifyRollback() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1);
-        RollbackInfo rollback = RollbackUtils.getCommittedRollback(TestApp.A);
-        assertThat(rollback).isNotNull();
-    }
-
-    @Test
-    public void testNativeWatchdogTriggersRollbackForAll_Phase1_Install() throws Exception {
-        Install.single(TestApp.A1).commit();
-        Install.single(TestApp.B1).commit();
-        Install.single(TestApp.A2).setEnableRollback().setStaged().commit();
-        Install.single(TestApp.B2).setEnableRollback().setStaged().commit();
-    }
-
-    @Test
-    public void testNativeWatchdogTriggersRollbackForAll_Phase2_VerifyInstall() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(2);
-        assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(2);
-        RollbackInfo rollbackA = RollbackUtils.getAvailableRollback(TestApp.A);
-        RollbackInfo rollbackB = RollbackUtils.getAvailableRollback(TestApp.B);
-        assertThat(rollbackA).isNotNull();
-        assertThat(rollbackB).isNotNull();
-        assertThat(rollbackA.getRollbackId()).isNotEqualTo(rollbackB.getRollbackId());
-    }
-
-    @Test
-    public void testNativeWatchdogTriggersRollbackForAll_Phase3_VerifyRollback() throws Exception {
-        assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1);
-        assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(1);
-        RollbackInfo rollbackA = RollbackUtils.getCommittedRollback(TestApp.A);
-        RollbackInfo rollbackB = RollbackUtils.getCommittedRollback(TestApp.B);
-        assertThat(rollbackA).isNotNull();
-        assertThat(rollbackB).isNotNull();
-        assertThat(rollbackA.getRollbackId()).isNotEqualTo(rollbackB.getRollbackId());
-    }
-
-    @Test
-    public void isCheckpointSupported() {
-        Context context = InstrumentationRegistry.getInstrumentation().getContext();
-        StorageManager sm = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
-        assertThat(sm.isCheckpointSupported()).isTrue();
-    }
-}
diff --git a/hostsidetests/rollback/src/com/android/cts_root/rollback/host/RollbackManagerHostTest.java b/hostsidetests/rollback/src/com/android/cts_root/rollback/host/RollbackManagerHostTest.java
deleted file mode 100644
index a23adf5..0000000
--- a/hostsidetests/rollback/src/com/android/cts_root/rollback/host/RollbackManagerHostTest.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts_root.rollback.host;
-
-import static com.android.cts.shim.lib.ShimPackage.SHIM_APEX_PACKAGE_NAME;
-import static com.android.cts.shim.lib.ShimPackage.SHIM_PACKAGE_NAME;
-import static com.android.cts_root.rollback.host.WatchdogEventLogger.Subject.assertThat;
-
-import static com.google.common.truth.Truth.assertThat;
-import static com.google.common.truth.Truth.assertWithMessage;
-
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
-
-import android.cts.install.lib.host.InstallUtilsHost;
-
-import com.android.ddmlib.Log;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.IFileEntry;
-import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.time.Instant;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
-/**
- * CTS-root host tests for RollbackManager APIs.
- */
-@RunWith(DeviceJUnit4ClassRunner.class)
-public class RollbackManagerHostTest extends BaseHostJUnit4Test {
-    private static final String TAG = "RollbackManagerHostTest";
-
-    private static final int NATIVE_CRASHES_THRESHOLD = 5;
-
-    private static final String REASON_APP_CRASH = "REASON_APP_CRASH";
-    private static final String REASON_NATIVE_CRASH = "REASON_NATIVE_CRASH";
-    private static final String ROLLBACK_INITIATE = "ROLLBACK_INITIATE";
-    private static final String ROLLBACK_BOOT_TRIGGERED = "ROLLBACK_BOOT_TRIGGERED";
-    private static final String ROLLBACK_SUCCESS = "ROLLBACK_SUCCESS";
-
-    private static final String TESTAPP_A = "com.android.cts.install.lib.testapp.A";
-    private static final String TEST_SUBDIR = "/subdir/";
-    private static final String TEST_FILENAME_1 = "test_file.txt";
-    private static final String TEST_STRING_1 = "hello this is a test";
-    private static final String TEST_FILENAME_2 = "another_file.txt";
-    private static final String TEST_STRING_2 = "this is a different file";
-    private static final String TEST_FILENAME_3 = "also.xyz";
-    private static final String TEST_STRING_3 = "also\n a\n test\n string";
-    private static final String TEST_FILENAME_4 = "one_more.test";
-    private static final String TEST_STRING_4 = "once more unto the test";
-
-    // Expiry time for staged sessions that have not changed state in this time
-    private static final long MAX_TIME_SINCE_UPDATE_MILLIS = TimeUnit.DAYS.toMillis(21);
-
-    private final InstallUtilsHost mHostUtils = new InstallUtilsHost(this);
-    private WatchdogEventLogger mLogger = new WatchdogEventLogger();
-
-    private void run(String method) throws Exception {
-        assertThat(runDeviceTests("com.android.cts_root.rollback.host.app",
-                "com.android.cts_root.rollback.host.app.HostTestHelper",
-                method)).isTrue();
-    }
-
-    @Before
-    @After
-    public void cleanUp() throws Exception {
-        getDevice().enableAdbRoot();
-        getDevice().executeShellCommand("for i in $(pm list staged-sessions --only-sessionid "
-                + "--only-parent); do pm install-abandon $i; done");
-        getDevice().uninstallPackage("com.android.cts.install.lib.testapp.A");
-        getDevice().uninstallPackage("com.android.cts.install.lib.testapp.B");
-        getDevice().uninstallPackage("com.android.cts.install.lib.testapp.C");
-        run("cleanUp");
-        mHostUtils.uninstallShimApexIfNecessary();
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        getDevice().enableAdbRoot();
-        mLogger.start(getDevice());
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        getDevice().enableAdbRoot();
-        mLogger.stop();
-    }
-
-    /**
-     * Tests user data is restored according to the preset rollback data policy.
-     */
-    @Test
-    public void testRollbackDataPolicy() throws Exception {
-        List<String> before = getSnapshotDirectories("/data/misc_ce/0/rollback");
-
-        run("testRollbackDataPolicy_Phase1_Install");
-        getDevice().reboot();
-        run("testRollbackDataPolicy_Phase2_Rollback");
-        getDevice().reboot();
-        run("testRollbackDataPolicy_Phase3_VerifyRollback");
-
-        // Verify snapshots are deleted after restoration
-        List<String> after = getSnapshotDirectories("/data/misc_ce/0/rollback");
-        // Only check directories newly created during the test
-        after.removeAll(before);
-        // There should be only one /data/misc_ce/0/rollback/<rollbackId> created during test
-        assertThat(after).hasSize(1);
-        assertDirectoryIsEmpty(after.get(0));
-    }
-
-    /**
-     * Tests that userdata of apk-in-apex is restored when apex is rolled back.
-     */
-    @Test
-    public void testRollbackApkInApexDataDirectories_Ce() throws Exception {
-        // Push files to apk data directory
-        String oldFilePath1 = apkDataDirCe(
-                SHIM_PACKAGE_NAME, 0) + "/" + TEST_FILENAME_1;
-        String oldFilePath2 = apkDataDirCe(
-                SHIM_PACKAGE_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2;
-        pushString(TEST_STRING_1, oldFilePath1);
-        pushString(TEST_STRING_2, oldFilePath2);
-
-        // Install new version of the APEX with rollback enabled
-        run("testRollbackApexDataDirectories_Phase1_Install");
-        getDevice().reboot();
-
-        // Replace files in data directory
-        String newFilePath3 = apkDataDirCe(
-                SHIM_PACKAGE_NAME, 0) + "/" + TEST_FILENAME_3;
-        String newFilePath4 = apkDataDirCe(
-                SHIM_PACKAGE_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_4;
-        getDevice().deleteFile(oldFilePath1);
-        getDevice().deleteFile(oldFilePath2);
-        pushString(TEST_STRING_3, newFilePath3);
-        pushString(TEST_STRING_4, newFilePath4);
-
-        // Roll back the APEX
-        getDevice().executeShellCommand("pm rollback-app " + SHIM_APEX_PACKAGE_NAME);
-        getDevice().reboot();
-
-        // Verify that old files have been restored and new files are gone
-        assertFileContents(TEST_STRING_1, oldFilePath1);
-        assertFileContents(TEST_STRING_2, oldFilePath2);
-        assertFileNotExists(newFilePath3);
-        assertFileNotExists(newFilePath4);
-    }
-
-    /**
-     * Tests that data in DE apk data directory is restored when apk is rolled back.
-     */
-    @Test
-    public void testRollbackApkDataDirectories_De() throws Exception {
-        // Install version 1 of TESTAPP_A
-        run("testRollbackApkDataDirectories_Phase1_InstallV1");
-
-        // Push files to apk data directory
-        String oldFilePath1 = apkDataDirDe(TESTAPP_A, 0) + "/" + TEST_FILENAME_1;
-        String oldFilePath2 = apkDataDirDe(TESTAPP_A, 0) + TEST_SUBDIR + TEST_FILENAME_2;
-        pushString(TEST_STRING_1, oldFilePath1);
-        pushString(TEST_STRING_2, oldFilePath2);
-
-        // Install version 2 of TESTAPP_A with rollback enabled
-        run("testRollbackApkDataDirectories_Phase2_InstallV2");
-        getDevice().reboot();
-
-        // Replace files in data directory
-        String newFilePath3 = apkDataDirDe(TESTAPP_A, 0) + "/" + TEST_FILENAME_3;
-        String newFilePath4 = apkDataDirDe(TESTAPP_A, 0) + TEST_SUBDIR + TEST_FILENAME_4;
-        getDevice().deleteFile(oldFilePath1);
-        getDevice().deleteFile(oldFilePath2);
-        pushString(TEST_STRING_3, newFilePath3);
-        pushString(TEST_STRING_4, newFilePath4);
-
-        // Roll back the APK
-        run("testRollbackApkDataDirectories_Phase3_Rollback");
-        getDevice().reboot();
-
-        // Verify that old files have been restored and new files are gone
-        assertFileContents(TEST_STRING_1, oldFilePath1);
-        assertFileContents(TEST_STRING_2, oldFilePath2);
-        assertFileNotExists(newFilePath3);
-        assertFileNotExists(newFilePath4);
-    }
-
-    /**
-     * Tests that data in CE apex data directory is restored when apex is rolled back.
-     */
-    @Test
-    public void testRollbackApexDataDirectories_Ce() throws Exception {
-        List<String> before = getSnapshotDirectories("/data/misc_ce/0/apexrollback");
-
-        // Push files to apex data directory
-        String oldFilePath1 = apexDataDirCe(
-                SHIM_APEX_PACKAGE_NAME, 0) + "/" + TEST_FILENAME_1;
-        String oldFilePath2 = apexDataDirCe(
-                SHIM_APEX_PACKAGE_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2;
-        pushString(TEST_STRING_1, oldFilePath1);
-        pushString(TEST_STRING_2, oldFilePath2);
-
-        // Install new version of the APEX with rollback enabled
-        run("testRollbackApexDataDirectories_Phase1_Install");
-        getDevice().reboot();
-
-        // Replace files in data directory
-        String newFilePath3 = apexDataDirCe(
-                SHIM_APEX_PACKAGE_NAME, 0) + "/" + TEST_FILENAME_3;
-        String newFilePath4 = apexDataDirCe(
-                SHIM_APEX_PACKAGE_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_4;
-        getDevice().deleteFile(oldFilePath1);
-        getDevice().deleteFile(oldFilePath2);
-        pushString(TEST_STRING_3, newFilePath3);
-        pushString(TEST_STRING_4, newFilePath4);
-
-        // Roll back the APEX
-        getDevice().executeShellCommand("pm rollback-app " + SHIM_APEX_PACKAGE_NAME);
-        getDevice().reboot();
-
-        // Verify that old files have been restored and new files are gone
-        assertFileContents(TEST_STRING_1, oldFilePath1);
-        assertFileContents(TEST_STRING_2, oldFilePath2);
-        assertFileNotExists(newFilePath3);
-        assertFileNotExists(newFilePath4);
-
-        // Verify snapshots are deleted after restoration
-        List<String> after = getSnapshotDirectories("/data/misc_ce/0/apexrollback");
-        // Only check directories newly created during the test
-        after.removeAll(before);
-        // There should be only one /data/misc_ce/0/apexrollback/<rollbackId> created during test
-        assertThat(after).hasSize(1);
-        assertDirectoryIsEmpty(after.get(0));
-    }
-
-    /**
-     * Tests that data in DE (user) apex data directory is restored when apex is rolled back.
-     */
-    @Test
-    public void testRollbackApexDataDirectories_DeUser() throws Exception {
-        List<String> before = getSnapshotDirectories("/data/misc_de/0/apexrollback");
-
-        // Push files to apex data directory
-        String oldFilePath1 = apexDataDirDeUser(
-                SHIM_APEX_PACKAGE_NAME, 0) + "/" + TEST_FILENAME_1;
-        String oldFilePath2 = apexDataDirDeUser(
-                SHIM_APEX_PACKAGE_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2;
-        pushString(TEST_STRING_1, oldFilePath1);
-        pushString(TEST_STRING_2, oldFilePath2);
-
-        // Install new version of the APEX with rollback enabled
-        run("testRollbackApexDataDirectories_Phase1_Install");
-        getDevice().reboot();
-
-        // Replace files in data directory
-        String newFilePath3 = apexDataDirDeUser(
-                SHIM_APEX_PACKAGE_NAME, 0) + "/" + TEST_FILENAME_3;
-        String newFilePath4 = apexDataDirDeUser(
-                SHIM_APEX_PACKAGE_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_4;
-        getDevice().deleteFile(oldFilePath1);
-        getDevice().deleteFile(oldFilePath2);
-        pushString(TEST_STRING_3, newFilePath3);
-        pushString(TEST_STRING_4, newFilePath4);
-
-        // Roll back the APEX
-        getDevice().executeShellCommand("pm rollback-app " + SHIM_APEX_PACKAGE_NAME);
-        getDevice().reboot();
-
-        // Verify that old files have been restored and new files are gone
-        assertFileContents(TEST_STRING_1, oldFilePath1);
-        assertFileContents(TEST_STRING_2, oldFilePath2);
-        assertFileNotExists(newFilePath3);
-        assertFileNotExists(newFilePath4);
-
-        // Verify snapshots are deleted after restoration
-        List<String> after = getSnapshotDirectories("/data/misc_de/0/apexrollback");
-        // Only check directories newly created during the test
-        after.removeAll(before);
-        // There should be only one /data/misc_de/0/apexrollback/<rollbackId> created during test
-        assertThat(after).hasSize(1);
-        assertDirectoryIsEmpty(after.get(0));
-    }
-
-    /**
-     * Tests that data in DE_sys apex data directory is restored when apex is rolled back.
-     */
-    @Test
-    public void testRollbackApexDataDirectories_DeSys() throws Exception {
-        List<String> before = getSnapshotDirectories("/data/misc/apexrollback");
-
-        // Push files to apex data directory
-        String oldFilePath1 = apexDataDirDeSys(
-                SHIM_APEX_PACKAGE_NAME) + "/" + TEST_FILENAME_1;
-        String oldFilePath2 = apexDataDirDeSys(
-                SHIM_APEX_PACKAGE_NAME) + TEST_SUBDIR + TEST_FILENAME_2;
-        pushString(TEST_STRING_1, oldFilePath1);
-        pushString(TEST_STRING_2, oldFilePath2);
-
-        // Install new version of the APEX with rollback enabled
-        run("testRollbackApexDataDirectories_Phase1_Install");
-        getDevice().reboot();
-
-        // Replace files in data directory
-        String newFilePath3 = apexDataDirDeSys(
-                SHIM_APEX_PACKAGE_NAME) + "/" + TEST_FILENAME_3;
-        String newFilePath4 = apexDataDirDeSys(
-                SHIM_APEX_PACKAGE_NAME) + TEST_SUBDIR + TEST_FILENAME_4;
-        getDevice().deleteFile(oldFilePath1);
-        getDevice().deleteFile(oldFilePath2);
-        pushString(TEST_STRING_3, newFilePath3);
-        pushString(TEST_STRING_4, newFilePath4);
-
-        // Roll back the APEX
-        getDevice().executeShellCommand("pm rollback-app " + SHIM_APEX_PACKAGE_NAME);
-        getDevice().reboot();
-
-        // Verify that old files have been restored and new files are gone
-        assertFileContents(TEST_STRING_1, oldFilePath1);
-        assertFileContents(TEST_STRING_2, oldFilePath2);
-        assertFileNotExists(newFilePath3);
-        assertFileNotExists(newFilePath4);
-
-        // Verify snapshots are deleted after restoration
-        List<String> after = getSnapshotDirectories("/data/misc/apexrollback");
-        // Only check directories newly created during the test
-        after.removeAll(before);
-        // There should be only one /data/misc/apexrollback/<rollbackId> created during test
-        assertThat(after).hasSize(1);
-        assertDirectoryIsEmpty(after.get(0));
-    }
-
-    /**
-     * Tests that apex CE snapshots are deleted when its rollback is deleted.
-     */
-    @Test
-    public void testExpireApexRollback() throws Exception {
-        List<String> before = getSnapshotDirectories("/data/misc_ce/0/apexrollback");
-
-        // Push files to apex data directory
-        String oldFilePath1 = apexDataDirCe(
-                SHIM_APEX_PACKAGE_NAME, 0) + "/" + TEST_FILENAME_1;
-        String oldFilePath2 = apexDataDirCe(
-                SHIM_APEX_PACKAGE_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2;
-        pushString(TEST_STRING_1, oldFilePath1);
-        pushString(TEST_STRING_2, oldFilePath2);
-
-        // Install new version of the APEX with rollback enabled
-        run("testRollbackApexDataDirectories_Phase1_Install");
-        getDevice().reboot();
-
-        List<String> after = getSnapshotDirectories("/data/misc_ce/0/apexrollback");
-        // Only check directories newly created during the test
-        after.removeAll(before);
-        // There should be only one /data/misc_ce/0/apexrollback/<rollbackId> created during test
-        assertThat(after).hasSize(1);
-        // Expire all rollbacks and check CE snapshot directories are deleted
-        run("cleanUp");
-        assertFileNotExists(after.get(0));
-    }
-
-    /**
-     * Tests an available rollback shouldn't be deleted when its session expires.
-     */
-    @Test
-    public void testExpireSession() throws Exception {
-        run("testExpireSession_Phase1_Install");
-        getDevice().reboot();
-        run("testExpireSession_Phase2_VerifyInstall");
-
-        // Advance system clock by MAX_TIME_SINCE_UPDATE_MILLIS to expire the staged session
-        Instant t1 = Instant.ofEpochMilli(getDevice().getDeviceDate());
-        Instant t2 = t1.plusMillis(MAX_TIME_SINCE_UPDATE_MILLIS);
-
-        try {
-            getDevice().setDate(Date.from(t2));
-            // Send the broadcast to ensure the time change is properly propagated
-            getDevice().executeShellCommand("am broadcast -a android.intent.action.TIME_SET");
-            // TODO(b/197298469): Time change will be lost after reboot and sessions won't be
-            //  expired correctly. We restart system server so sessions will be reloaded and expired
-            //  as a workaround.
-            getDevice().executeShellCommand("stop");
-            getDevice().executeShellCommand("start");
-            getDevice().waitForDeviceAvailable();
-            run("testExpireSession_Phase3_VerifyRollback");
-        } finally {
-            // Restore system clock
-            getDevice().setDate(Date.from(t1));
-            getDevice().executeShellCommand("am broadcast -a android.intent.action.TIME_SET");
-        }
-    }
-
-    /**
-     * Tests watchdog triggered staged rollbacks involving only apks.
-     */
-    @Test
-    public void testBadApkOnly() throws Exception {
-        run("testBadApkOnly_Phase1_Install");
-        getDevice().reboot();
-        run("testBadApkOnly_Phase2_VerifyInstall");
-
-        // Launch the app to crash to trigger rollback
-        startActivity(TESTAPP_A);
-        // Wait for reboot to happen
-        waitForDeviceNotAvailable(2, TimeUnit.MINUTES);
-
-        getDevice().waitForDeviceAvailable();
-
-        run("testBadApkOnly_Phase3_VerifyRollback");
-
-        assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_APP_CRASH, TESTAPP_A);
-        assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null);
-        assertThat(mLogger).eventOccurred(ROLLBACK_SUCCESS, null, null, null);
-    }
-
-    /**
-     * Tests rollbacks triggered by the native watchdog.
-     */
-    @Test
-    public void testNativeWatchdogTriggersRollback() throws Exception {
-        run("testNativeWatchdogTriggersRollback_Phase1_Install");
-        getDevice().reboot();
-        run("testNativeWatchdogTriggersRollback_Phase2_VerifyInstall");
-
-        // crash system_server enough times to trigger a rollback
-        crashProcess("system_server", NATIVE_CRASHES_THRESHOLD);
-
-        // Rollback should be committed automatically now.
-        // Give time for rollback to be committed. This could take a while,
-        // because we need all of the following to happen:
-        // 1. system_server comes back up and boot completes.
-        // 2. Rollback health observer detects updatable crashing signal.
-        // 3. Staged rollback session becomes ready.
-        // 4. Device actually reboots.
-        // So we give a generous timeout here.
-        waitForDeviceNotAvailable(5, TimeUnit.MINUTES);
-        getDevice().waitForDeviceAvailable();
-
-        // verify rollback committed
-        run("testNativeWatchdogTriggersRollback_Phase3_VerifyRollback");
-
-        assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_NATIVE_CRASH, null);
-        assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null);
-        assertThat(mLogger).eventOccurred(ROLLBACK_SUCCESS, null, null, null);
-    }
-
-    /**
-     * Tests rollbacks triggered by the native watchdog.
-     */
-    @Test
-    public void testNativeWatchdogTriggersRollbackForAll() throws Exception {
-        // This test requires committing multiple staged rollbacks
-        assumeTrue(isCheckpointSupported());
-
-        // Install 2 packages with rollback enabled.
-        run("testNativeWatchdogTriggersRollbackForAll_Phase1_Install");
-        getDevice().reboot();
-
-        // Verify that we have 2 rollbacks available
-        run("testNativeWatchdogTriggersRollbackForAll_Phase2_VerifyInstall");
-
-        // crash system_server enough times to trigger rollbacks
-        crashProcess("system_server", NATIVE_CRASHES_THRESHOLD);
-
-        // Rollback should be committed automatically now.
-        // Give time for rollback to be committed. This could take a while,
-        // because we need all of the following to happen:
-        // 1. system_server comes back up and boot completes.
-        // 2. Rollback health observer detects updatable crashing signal.
-        // 3. Staged rollback session becomes ready.
-        // 4. Device actually reboots.
-        // So we give a generous timeout here.
-        waitForDeviceNotAvailable(5, TimeUnit.MINUTES);
-        getDevice().waitForDeviceAvailable();
-
-        // verify all available rollbacks have been committed
-        run("testNativeWatchdogTriggersRollbackForAll_Phase3_VerifyRollback");
-
-        assertThat(mLogger).eventOccurred(ROLLBACK_INITIATE, null, REASON_NATIVE_CRASH, null);
-        assertThat(mLogger).eventOccurred(ROLLBACK_BOOT_TRIGGERED, null, null, null);
-        assertThat(mLogger).eventOccurred(ROLLBACK_SUCCESS, null, null, null);
-    }
-
-    private List<String> getSnapshotDirectories(String baseDir) throws Exception {
-        IFileEntry f = getDevice().getFileEntry(baseDir);
-        if (f == null) {
-            Log.d(TAG, "baseDir doesn't exist: " + baseDir);
-            return Collections.EMPTY_LIST;
-        }
-        List<String> list = f.getChildren(false)
-                .stream().filter(entry -> entry.getName().matches("\\d+(-prerestore)?"))
-                .map(entry -> entry.getFullPath())
-                .collect(Collectors.toList());
-        Log.d(TAG, "getSnapshotDirectories=" + list);
-        return list;
-    }
-
-    private void assertDirectoryIsEmpty(String path) {
-        try {
-            IFileEntry file = getDevice().getFileEntry(path);
-            assertWithMessage("Not a directory: " + path).that(file.isDirectory()).isTrue();
-            assertWithMessage("Directory not empty: " + path)
-                    .that(file.getChildren(false)).isEmpty();
-        } catch (DeviceNotAvailableException e) {
-            fail("Can't access directory: " + path);
-        }
-    }
-
-    private void assertFileContents(String expectedContents, String path) throws Exception {
-        String actualContents = getDevice().pullFileContents(path);
-        assertWithMessage("Failed to retrieve file=%s", path).that(actualContents).isNotNull();
-        assertWithMessage("Mismatched file contents, path=%s", path)
-                .that(actualContents).isEqualTo(expectedContents);
-    }
-
-    private void assertFileNotExists(String path) throws Exception {
-        assertWithMessage("File shouldn't exist, path=%s", path)
-                .that(getDevice().getFileEntry(path)).isNull();
-    }
-
-    private static String apkDataDirCe(String apkName, int userId) {
-        return String.format("/data/user/%d/%s", userId, apkName);
-    }
-
-    private static String apkDataDirDe(String apkName, int userId) {
-        return String.format("/data/user_de/%d/%s", userId, apkName);
-    }
-
-    private static String apexDataDirCe(String apexName, int userId) {
-        return String.format("/data/misc_ce/%d/apexdata/%s", userId, apexName);
-    }
-
-    private static String apexDataDirDeUser(String apexName, int userId) {
-        return String.format("/data/misc_de/%d/apexdata/%s", userId, apexName);
-    }
-
-    private static String apexDataDirDeSys(String apexName) {
-        return String.format("/data/misc/apexdata/%s", apexName);
-    }
-
-    private void pushString(String contents, String path) throws Exception {
-        assertWithMessage("Failed to push file to device, content=%s path=%s", contents, path)
-                .that(getDevice().pushString(contents, path)).isTrue();
-    }
-
-    private void waitForDeviceNotAvailable(long timeout, TimeUnit unit) {
-        assertWithMessage("waitForDeviceNotAvailable() timed out in %s %s", timeout, unit)
-                .that(getDevice().waitForDeviceNotAvailable(unit.toMillis(timeout))).isTrue();
-    }
-
-    private void startActivity(String packageName) throws Exception {
-        String cmd = "am start -S -a android.intent.action.MAIN "
-                + "-c android.intent.category.LAUNCHER " + packageName;
-        getDevice().executeShellCommand(cmd);
-    }
-
-    private void crashProcess(String processName, int numberOfCrashes) throws Exception {
-        String pid = "";
-        String lastPid = "invalid";
-        for (int i = 0; i < numberOfCrashes; ++i) {
-            // This condition makes sure before we kill the process, the process is running AND
-            // the last crash was finished.
-            while ("".equals(pid) || lastPid.equals(pid)) {
-                pid = getDevice().executeShellCommand("pidof " + processName);
-            }
-            getDevice().executeShellCommand("kill " + pid);
-            lastPid = pid;
-        }
-    }
-
-    private boolean isCheckpointSupported() throws Exception {
-        try {
-            run("isCheckpointSupported");
-            return true;
-        } catch (AssertionError ignore) {
-            return false;
-        }
-    }
-}
diff --git a/hostsidetests/rollback/src/com/android/cts_root/rollback/host/WatchdogEventLogger.java b/hostsidetests/rollback/src/com/android/cts_root/rollback/host/WatchdogEventLogger.java
deleted file mode 100644
index 59eb027..0000000
--- a/hostsidetests/rollback/src/com/android/cts_root/rollback/host/WatchdogEventLogger.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts_root.rollback.host;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import com.android.tradefed.device.ITestDevice;
-
-import com.google.common.truth.FailureMetadata;
-import com.google.common.truth.Truth;
-
-public class WatchdogEventLogger {
-    private static final String[] ROLLBACK_EVENT_TYPES = {
-            "ROLLBACK_INITIATE", "ROLLBACK_BOOT_TRIGGERED", "ROLLBACK_SUCCESS"};
-    private static final String[] ROLLBACK_EVENT_ATTRS = {
-            "logPackage", "rollbackReason", "failedPackageName"};
-    private static final String PROP_PREFIX = "persist.sys.rollbacktest.";
-
-    private ITestDevice mDevice;
-
-    private void resetProperties(boolean enabled) throws Exception {
-        assertThat(mDevice.setProperty(
-                PROP_PREFIX + "enabled", String.valueOf(enabled))).isTrue();
-        for (String type : ROLLBACK_EVENT_TYPES) {
-            String key = PROP_PREFIX + type;
-            assertThat(mDevice.setProperty(key, "")).isTrue();
-            for (String attr : ROLLBACK_EVENT_ATTRS) {
-                assertThat(mDevice.setProperty(key + "." + attr, "")).isTrue();
-            }
-        }
-    }
-
-    public void start(ITestDevice device) throws Exception {
-        mDevice = device;
-        resetProperties(true);
-    }
-
-    public void stop() throws Exception {
-        if (mDevice != null) {
-            resetProperties(false);
-        }
-    }
-
-    private boolean matchProperty(String type, String attr, String expectedVal) throws Exception {
-        String key = PROP_PREFIX + type + "." + attr;
-        String val = mDevice.getProperty(key);
-        return expectedVal == null || expectedVal.equals(val);
-    }
-
-    /**
-     * Returns whether a Watchdog event has occurred that matches the given criteria.
-     *
-     * Check the value of all non-null parameters against the list of Watchdog events that have
-     * occurred, and return {@code true} if an event exists which matches all criteria.
-     */
-    public boolean watchdogEventOccurred(String type, String logPackage,
-            String rollbackReason, String failedPackageName) throws Exception {
-        return mDevice.getBooleanProperty(PROP_PREFIX + type, false)
-                && matchProperty(type, "logPackage", logPackage)
-                && matchProperty(type, "rollbackReason", rollbackReason)
-                && matchProperty(type, "failedPackageName", failedPackageName);
-    }
-
-    static class Subject extends com.google.common.truth.Subject {
-        private final WatchdogEventLogger mActual;
-
-        private Subject(FailureMetadata failureMetadata, WatchdogEventLogger subject) {
-            super(failureMetadata, subject);
-            mActual = subject;
-        }
-
-        private static Factory<Subject,
-                WatchdogEventLogger> loggers() {
-            return Subject::new;
-        }
-
-        static Subject assertThat(WatchdogEventLogger actual) {
-            return Truth.assertAbout(loggers()).that(actual);
-        }
-
-        void eventOccurred(String type, String logPackage, String rollbackReason,
-                String failedPackageName) throws Exception {
-            check("watchdogEventOccurred(type=%s, logPackage=%s, rollbackReason=%s, "
-                    + "failedPackageName=%s)", type, logPackage, rollbackReason, failedPackageName)
-                    .that(mActual.watchdogEventOccurred(type, logPackage, rollbackReason,
-                            failedPackageName)).isTrue();
-        }
-    }
-}
diff --git a/tests/packagemanagerlocal/Android.bp b/tests/packagemanagerlocal/Android.bp
deleted file mode 100644
index c1f3115..0000000
--- a/tests/packagemanagerlocal/Android.bp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (C) 2022 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package {
-    default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-android_test {
-    name: "CtsRootPackageManagerLocalTests",
-    defaults: ["cts_defaults"],
-    static_libs: [
-        "androidx.test.core",
-        "androidx.test.rules",
-        "platform-test-annotations",
-        "services.core",
-        "truth-prebuilt",
-    ],
-    libs: [
-        "android.test.runner",
-        "android.test.base",
-    ],
-    srcs: ["src/**/*.java"],
-    test_suites: [
-        "cts_root",
-        "general-tests",
-    ],
-    sdk_version: "test_current",
-}
diff --git a/tests/packagemanagerlocal/AndroidManifest.xml b/tests/packagemanagerlocal/AndroidManifest.xml
deleted file mode 100644
index 9f8c2f7..0000000
--- a/tests/packagemanagerlocal/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  ~ Copyright (C) 2022 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.packagemanagerlocal.cts_root" >
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="android"
-                     android:label="PackageManagerLocal CTS root tests"/>
-
-</manifest>
diff --git a/tests/packagemanagerlocal/AndroidTest.xml b/tests/packagemanagerlocal/AndroidTest.xml
deleted file mode 100644
index 0095b11..0000000
--- a/tests/packagemanagerlocal/AndroidTest.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2022 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<configuration description="Runs PackageManagerLocal CTS root tests">
-    <option name="test-suite-tag" value="apct" />
-    <option name="test-suite-tag" value="apct-instrumentation" />
-
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
-
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true"/>
-        <option name="test-file-name" value="CtsRootPackageManagerLocalTests.apk"/>
-    </target_preparer>
-
-    <!-- Restart to clear test code from system server -->
-    <target_preparer class="com.android.tradefed.targetprep.DeviceCleaner">
-        <option name="cleanup-action" value="REBOOT" />
-    </target_preparer>
-
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest">
-        <option name="package" value="android.packagemanagerlocal.cts_root"/>
-        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
-        <option name="restart" value="false" />
-    </test>
-</configuration>
diff --git a/tests/packagemanagerlocal/OWNERS b/tests/packagemanagerlocal/OWNERS
deleted file mode 100644
index 4e5fe55..0000000
--- a/tests/packagemanagerlocal/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# Bug component: 36137
-alexbuy@google.com
-patb@google.com
diff --git a/tests/packagemanagerlocal/TEST_MAPPING b/tests/packagemanagerlocal/TEST_MAPPING
deleted file mode 100644
index 54b32af..0000000
--- a/tests/packagemanagerlocal/TEST_MAPPING
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "presubmit": [
-    {
-      "name": "CtsRootPackageManagerLocalTests"
-    }
-  ]
-}
diff --git a/tests/packagemanagerlocal/src/android/packagemanagerlocal/cts_root/PackageManagerLocalTest.java b/tests/packagemanagerlocal/src/android/packagemanagerlocal/cts_root/PackageManagerLocalTest.java
deleted file mode 100644
index 9ba383b..0000000
--- a/tests/packagemanagerlocal/src/android/packagemanagerlocal/cts_root/PackageManagerLocalTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.packagemanagerlocal.cts_root;
-
-import static com.google.common.truth.Truth.assertThat;
-import static com.google.common.truth.Truth.assertWithMessage;
-
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.server.LocalManagerRegistry;
-import com.android.server.pm.PackageManagerLocal;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-public final class PackageManagerLocalTest {
-    private static final String TAG = "PackageManagerLocalTest";
-
-    private PackageManagerLocal mPackageManagerLocal;
-
-    @Before
-    public void setup() {
-        mPackageManagerLocal = LocalManagerRegistry.getManager(PackageManagerLocal.class);
-    }
-
-    @Test
-    public void testPackageManagerLocal_ReconcileSdkData_DifferentStorageFlags() throws Exception {
-        final String volumeUuid = null;
-        final String packageName = "android.packagemanagerlocal.test";
-        final List<String> subDirNames = Arrays.asList("one", "two@random");
-        final int userId = 0;
-        final int appId = 10000;
-        final int previousAppId = -1;
-        final String seInfo = "default";
-
-        // There are two flags: FLAG_STORAGE_CE and FLAG_STORAGE_DE. So total of 4 combination
-        // to test.
-        for (int currentFlag = 0; currentFlag < 4; currentFlag++) {
-            final String errorMsg = "Failed for flag: " + currentFlag;
-
-            File cePackageDirFile = new File("/data/misc_ce/0/sdksandbox/" + packageName);
-            File dePackageDirFile = new File("/data/misc_de/0/sdksandbox/" + packageName);
-
-            try {
-                mPackageManagerLocal.reconcileSdkData(volumeUuid, packageName, subDirNames, userId,
-                        appId, previousAppId, seInfo, currentFlag);
-
-                // Verify that sdk data directories have been created in the desired location
-                boolean hasCeFlag = (currentFlag & PackageManagerLocal.FLAG_STORAGE_CE) != 0;
-                if (hasCeFlag) {
-                    assertWithMessage(errorMsg).that(cePackageDirFile.isDirectory()).isTrue();
-                    assertWithMessage(errorMsg).that(
-                            cePackageDirFile.list()).asList().containsExactly("one", "two@random");
-                } else {
-                    assertWithMessage(errorMsg).that(cePackageDirFile.exists()).isFalse();
-                }
-
-                boolean hasDeFlag = (currentFlag & PackageManagerLocal.FLAG_STORAGE_DE) != 0;
-                if (hasDeFlag) {
-                    assertWithMessage(errorMsg).that(dePackageDirFile.isDirectory()).isTrue();
-                    assertWithMessage(errorMsg).that(
-                            dePackageDirFile.list()).asList().containsExactly("one", "two@random");
-                } else {
-                    assertWithMessage(errorMsg).that(dePackageDirFile.exists()).isFalse();
-                }
-            } finally {
-                // Clean up the created directories
-                final List<String> emptyDir = new ArrayList<String>();
-                mPackageManagerLocal.reconcileSdkData(volumeUuid, packageName, emptyDir, userId,
-                        appId, previousAppId, seInfo, currentFlag);
-                Files.deleteIfExists(cePackageDirFile.toPath());
-                Files.deleteIfExists(dePackageDirFile.toPath());
-            }
-        }
-    }
-
-    @Test
-    public void testPackageManagerLocal_ReconcileSdkData_Reconcile() throws Exception {
-        final String volumeUuid = null;
-        final String packageName = "android.packagemanagerlocal.test";
-        final List<String> subDirNames = Arrays.asList("one", "two@random");
-        final int userId = 0;
-        final int appId = 10000;
-        final int previousAppId = -1;
-        final String seInfo = "default";
-        final int flag = PackageManagerLocal.FLAG_STORAGE_CE;
-
-        File cePackageDirFile = new File("/data/misc_ce/0/sdksandbox/" + packageName);
-
-        try {
-            mPackageManagerLocal.reconcileSdkData(volumeUuid, packageName, subDirNames, userId,
-                    appId, previousAppId, seInfo, flag);
-
-            // Call reconcileSdkData again, with different subDirNames
-            final List<String> differentSubDirNames = Arrays.asList("three");
-            mPackageManagerLocal.reconcileSdkData(volumeUuid, packageName, differentSubDirNames,
-                    userId, appId, previousAppId, seInfo, flag);
-
-            // Verify that sdk data directories have been created in the desired location
-            assertThat(cePackageDirFile.isDirectory()).isTrue();
-            assertThat(cePackageDirFile.list()).asList().containsExactly("three");
-        } finally {
-            // Clean up the created directories
-            final List<String> emptyDir = new ArrayList<String>();
-            mPackageManagerLocal.reconcileSdkData(volumeUuid, packageName, emptyDir, userId, appId,
-                    previousAppId, seInfo, flag);
-            Files.deleteIfExists(cePackageDirFile.toPath());
-        }
-    }
-}
diff --git a/tests/packagewatchdog/Android.bp b/tests/packagewatchdog/Android.bp
deleted file mode 100644
index 54d4c25..0000000
--- a/tests/packagewatchdog/Android.bp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (C) 2021 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package {
-    default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-android_test {
-    name: "CtsRootPackageWatchdogTestCases",
-    defaults: ["cts_defaults"],
-    static_libs: [
-        "androidx.test.core",
-        "androidx.test.rules",
-        "services.core",
-        "truth-prebuilt",
-        "platform-test-annotations",
-    ],
-    libs: [
-        "android.test.runner",
-        "android.test.base",
-    ],
-    srcs: ["src/**/*.java"],
-    test_suites: [
-        "cts_root",
-        "general-tests",
-    ],
-    sdk_version: "test_current",
-}
diff --git a/tests/packagewatchdog/AndroidManifest.xml b/tests/packagewatchdog/AndroidManifest.xml
deleted file mode 100644
index e700b15..0000000
--- a/tests/packagewatchdog/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  ~ Copyright (C) 2021 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.packagewatchdog.cts_root" >
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="android"
-                     android:label="PackageWatchdog CTS root tests"/>
-
-</manifest>
diff --git a/tests/packagewatchdog/AndroidTest.xml b/tests/packagewatchdog/AndroidTest.xml
deleted file mode 100644
index 6620098..0000000
--- a/tests/packagewatchdog/AndroidTest.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2021 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<configuration description="Runs PackageWatchdog CTS root tests">
-    <option name="test-suite-tag" value="apct" />
-    <option name="test-suite-tag" value="apct-instrumentation" />
-
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
-
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true"/>
-        <option name="test-file-name" value="CtsRootPackageWatchdogTestCases.apk"/>
-    </target_preparer>
-
-    <!-- Restart to clear test code from system server -->
-    <target_preparer class="com.android.tradefed.targetprep.DeviceCleaner">
-        <option name="cleanup-action" value="REBOOT" />
-    </target_preparer>
-
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest">
-        <option name="package" value="android.packagewatchdog.cts_root"/>
-        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
-        <option name="restart" value="false" />
-    </test>
-</configuration>
diff --git a/tests/packagewatchdog/OWNERS b/tests/packagewatchdog/OWNERS
deleted file mode 100644
index 0342627..0000000
--- a/tests/packagewatchdog/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-# Bug component: 557916
-gavincorkery@google.com
-wangchun@google.com
-olilan@google.com
\ No newline at end of file
diff --git a/tests/packagewatchdog/src/android/packagewatchdog/cts_root/PackageWatchdogTest.java b/tests/packagewatchdog/src/android/packagewatchdog/cts_root/PackageWatchdogTest.java
deleted file mode 100644
index 8f425bc..0000000
--- a/tests/packagewatchdog/src/android/packagewatchdog/cts_root/PackageWatchdogTest.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.packagewatchdog.cts_root;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-import android.content.pm.VersionedPackage;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-
-import com.android.server.PackageWatchdog;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-public class PackageWatchdogTest {
-
-    private PackageWatchdog mPackageWatchdog;
-
-
-    private static final String APP_A = "com.app.a";
-    private static final String APP_B = "com.app.b";
-    private static final String OBSERVER_NAME_1 = "observer-1";
-    private static final String OBSERVER_NAME_2 = "observer-2";
-    private static final int VERSION_CODE = 1;
-    private static final long SHORT_DURATION = TimeUnit.MINUTES.toMillis(5);
-    private static final int FAILURE_COUNT_THRESHOLD = 5;
-
-    private CountDownLatch mLatch1, mLatch2;
-    private TestObserver mTestObserver1, mTestObserver2;
-
-    @Before
-    public void setUp() {
-        Context mContext = InstrumentationRegistry.getInstrumentation().getContext();
-        mPackageWatchdog = PackageWatchdog.getInstance(mContext);
-        mLatch1 = new CountDownLatch(1);
-        mLatch2 = new CountDownLatch(1);
-    }
-
-    @After
-    public void tearDown() {
-        if (mTestObserver1 != null) {
-            mPackageWatchdog.unregisterHealthObserver(mTestObserver1);
-        }
-        if (mTestObserver2 != null) {
-            mPackageWatchdog.unregisterHealthObserver(mTestObserver2);
-        }
-    }
-
-    @Test
-    public void testAppCrashIsMitigated() throws Exception {
-        CountDownLatch latch = new CountDownLatch(1);
-        mTestObserver1 = new TestObserver(OBSERVER_NAME_1, latch);
-        mPackageWatchdog.registerHealthObserver(mTestObserver1);
-        mPackageWatchdog.startObservingHealth(
-                mTestObserver1, List.of(APP_A), SHORT_DURATION);
-        raiseFatalFailure(Arrays.asList(new VersionedPackage(APP_A,
-                VERSION_CODE)), PackageWatchdog.FAILURE_REASON_APP_CRASH);
-        assertThat(latch.await(5, TimeUnit.SECONDS)).isTrue();
-        assertThat(mTestObserver1.mMitigatedPackages).isEqualTo(List.of(APP_A));
-    }
-
-    /** Test that nothing happens if an app crashes that is not watched by any observer.*/
-    @Test
-    public void testAppCrashWithoutObserver() throws Exception {
-        mTestObserver1 = new TestObserver(OBSERVER_NAME_1, mLatch1);
-
-        mPackageWatchdog.startObservingHealth(mTestObserver1, Arrays.asList(APP_A), SHORT_DURATION);
-        raiseFatalFailure(Arrays.asList(new VersionedPackage(APP_B,
-                VERSION_CODE)), PackageWatchdog.FAILURE_REASON_APP_CRASH);
-
-        // Small break to allow failure to be noted.
-        Thread.sleep(1000);
-        assertThat(mTestObserver1.mMitigatedPackages).isEmpty();
-    }
-
-    /**
-     * Test that multiple observers may register to watch certain packages and that they receive
-     * the correct callbacks.
-     */
-    @Test
-    public void testRegisteringMultipleObservers() throws Exception {
-        mTestObserver1 = new TestObserver(OBSERVER_NAME_1, mLatch1);
-        mTestObserver2 = new TestObserver(OBSERVER_NAME_2, mLatch2);
-
-        mPackageWatchdog.startObservingHealth(mTestObserver1, Arrays.asList(APP_A), SHORT_DURATION);
-        mPackageWatchdog.startObservingHealth(
-                mTestObserver2, Arrays.asList(APP_A, APP_B), SHORT_DURATION);
-        raiseFatalFailure(Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE),
-                new VersionedPackage(APP_B, VERSION_CODE)),
-                PackageWatchdog.FAILURE_REASON_APP_CRASH);
-        assertThat(mLatch1.await(5, TimeUnit.SECONDS)).isTrue();
-        assertThat(mLatch2.await(5, TimeUnit.SECONDS)).isTrue();
-
-        // The failed packages should be the same as the registered ones to ensure registration is
-        // done successfully
-        assertThat(mTestObserver1.mHealthCheckFailedPackages).containsExactly(APP_A);
-        assertThat(mTestObserver2.mHealthCheckFailedPackages).containsExactly(APP_A, APP_B);
-    }
-
-
-    /**
-     * Test that an unregistered observer is not notified for a failing package it previous
-     * observed.
-     */
-    @Test
-    public void testUnregistration() throws Exception {
-        mTestObserver1 = new TestObserver(OBSERVER_NAME_1);
-        mTestObserver2 = new TestObserver(OBSERVER_NAME_2, mLatch2);
-        mPackageWatchdog.startObservingHealth(mTestObserver2, Arrays.asList(APP_A), SHORT_DURATION);
-        mPackageWatchdog.startObservingHealth(mTestObserver1, Arrays.asList(APP_A), SHORT_DURATION);
-
-        mPackageWatchdog.unregisterHealthObserver(mTestObserver1);
-
-        raiseFatalFailure(Arrays.asList(new VersionedPackage(APP_A,
-                VERSION_CODE)), PackageWatchdog.FAILURE_REASON_APP_CRASH);
-
-        assertThat(mLatch2.await(1, TimeUnit.MINUTES)).isTrue();
-
-
-        assertThat(mTestObserver1.mHealthCheckFailedPackages).isEmpty();
-        assertThat(mTestObserver2.mHealthCheckFailedPackages).containsExactly(APP_A);
-
-    }
-
-    /**
-     * Test package failure under threshold does not notify observers
-     */
-    @Test
-    public void testNoPackageFailureBeforeThreshold() throws Exception {
-        mTestObserver1 = new TestObserver(OBSERVER_NAME_1);
-        mTestObserver2 = new TestObserver(OBSERVER_NAME_2);
-
-        mPackageWatchdog.startObservingHealth(mTestObserver2, Arrays.asList(APP_A), SHORT_DURATION);
-        mPackageWatchdog.startObservingHealth(mTestObserver1, Arrays.asList(APP_A), SHORT_DURATION);
-
-        for (int i = 0; i < FAILURE_COUNT_THRESHOLD - 1; i++) {
-            mPackageWatchdog.onPackageFailure(Arrays.asList(
-                    new VersionedPackage(APP_A, VERSION_CODE)),
-                    PackageWatchdog.FAILURE_REASON_UNKNOWN);
-        }
-
-        // Small break to allow failure to be noted.
-        Thread.sleep(1000);
-
-        // Verify that observers are not notified
-        assertThat(mTestObserver1.mHealthCheckFailedPackages).isEmpty();
-        assertThat(mTestObserver2.mHealthCheckFailedPackages).isEmpty();
-    }
-
-    /** Test that observers execute correctly for failures reasons that skip thresholding. */
-    @Test
-    public void testImmediateFailures() throws Exception {
-        mLatch1 = new CountDownLatch(2);
-        mTestObserver1 = new TestObserver(OBSERVER_NAME_1, mLatch1);
-
-        mPackageWatchdog.startObservingHealth(mTestObserver1, Arrays.asList(APP_A), SHORT_DURATION);
-
-        mPackageWatchdog.onPackageFailure(Arrays.asList(new VersionedPackage(APP_A, VERSION_CODE)),
-                PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK);
-        mPackageWatchdog.onPackageFailure(Arrays.asList(new VersionedPackage(APP_B, VERSION_CODE)),
-                PackageWatchdog.FAILURE_REASON_NATIVE_CRASH);
-
-        assertThat(mLatch1.await(5, TimeUnit.SECONDS)).isTrue();
-        assertThat(mTestObserver1.mMitigatedPackages).containsExactly(APP_A, APP_B);
-    }
-
-    /**
-     * Test that a persistent observer will mitigate failures if it wishes to observe a package.
-     */
-    @Test
-    public void testPersistentObserverWatchesPackage() throws Exception {
-        mTestObserver1 = new TestObserver(OBSERVER_NAME_1, mLatch1);
-        mTestObserver1.setPersistent(true);
-        mTestObserver1.setMayObservePackages(true);
-
-        mTestObserver2 = new TestObserver(OBSERVER_NAME_2, mLatch2);
-
-        mPackageWatchdog.startObservingHealth(mTestObserver1, Arrays.asList(APP_B), SHORT_DURATION);
-
-        raiseFatalFailure(Arrays.asList(new VersionedPackage(APP_A,
-                VERSION_CODE)), PackageWatchdog.FAILURE_REASON_APP_CRASH);
-        assertThat(mLatch1.await(5, TimeUnit.SECONDS)).isTrue();
-
-        // Persistent observer will observe the failing package.
-        assertThat(mTestObserver1.mHealthCheckFailedPackages).containsExactly(APP_A);
-
-        // A non-persistent observer will not observe the failing package.
-        assertThat(mTestObserver2.mHealthCheckFailedPackages).isEmpty();
-    }
-
-    /**
-     * Test that a persistent observer will not mitigate failures if it does not wish to observe
-     * a given package.
-     */
-    @Test
-    public void testPersistentObserverDoesNotWatchPackage() {
-        mTestObserver1 = new TestObserver(OBSERVER_NAME_1);
-        mTestObserver1.setPersistent(true);
-        mTestObserver1.setMayObservePackages(false);
-
-        mPackageWatchdog.startObservingHealth(mTestObserver1, Arrays.asList(APP_B), SHORT_DURATION);
-
-        raiseFatalFailure(Arrays.asList(new VersionedPackage(APP_A,
-                VERSION_CODE)), PackageWatchdog.FAILURE_REASON_UNKNOWN);
-        assertThat(mTestObserver1.mHealthCheckFailedPackages).isEmpty();
-    }
-
-    private void raiseFatalFailure(List<VersionedPackage> failingPackages, int failureReason) {
-        int failureCount = FAILURE_COUNT_THRESHOLD;
-        if (failureReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH
-                || failureReason == PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK) {
-            failureCount = 1;
-        }
-        for (int i = 0; i < failureCount; i++) {
-            mPackageWatchdog.onPackageFailure(failingPackages, failureReason);
-        }
-    }
-
-    private static class TestObserver implements PackageWatchdog.PackageHealthObserver {
-        private final String mName;
-        private final int mImpact;
-        private boolean mIsPersistent = false;
-        private boolean mMayObservePackages = false;
-        final List<String> mMitigatedPackages = new ArrayList<>();
-        final List<String> mHealthCheckFailedPackages = new ArrayList<>();
-        private final CountDownLatch mLatch;
-
-        TestObserver(String name, CountDownLatch latch) {
-            mName = name;
-            mLatch = latch;
-            mImpact = PackageWatchdog.PackageHealthObserverImpact.USER_IMPACT_MEDIUM;
-        }
-
-        TestObserver(String name) {
-            mName = name;
-            mLatch = new CountDownLatch(1);
-            mImpact = PackageWatchdog.PackageHealthObserverImpact.USER_IMPACT_MEDIUM;
-        }
-
-        public int onHealthCheckFailed(VersionedPackage versionedPackage, int failureReason,
-                int mitigationCount) {
-            mHealthCheckFailedPackages.add(versionedPackage.getPackageName());
-            return mImpact;
-        }
-
-        public boolean execute(VersionedPackage versionedPackage, int failureReason,
-                int mitigationCount) {
-            mMitigatedPackages.add(versionedPackage.getPackageName());
-            mLatch.countDown();
-            return true;
-        }
-
-        public String getName() {
-            return mName;
-        }
-
-        public int onBootLoop(int level) {
-            return mImpact;
-        }
-
-        public boolean executeBootLoopMitigation(int level) {
-            return true;
-        }
-
-        public boolean isPersistent() {
-            return mIsPersistent;
-        }
-
-        public boolean mayObservePackage(String packageName) {
-            return mMayObservePackages;
-        }
-
-        private void setPersistent(boolean isPersistent) {
-            mIsPersistent = isPersistent;
-        }
-
-        private void setMayObservePackages(boolean mayObservePackages) {
-            mMayObservePackages = mayObservePackages;
-        }
-    }
-}
diff --git a/tests/stats/AndroidTest.xml b/tests/stats/AndroidTest.xml
index 9eab530..55ab762 100644
--- a/tests/stats/AndroidTest.xml
+++ b/tests/stats/AndroidTest.xml
@@ -18,8 +18,6 @@
     <option name="test-suite-tag" value="apct" />
     <option name="test-suite-tag" value="apct-instrumentation" />
 
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
-
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true"/>
         <option name="test-file-name" value="CtsRootStatsDeviceTestCases.apk"/>
diff --git a/tests/usage/AndroidTest.xml b/tests/usage/AndroidTest.xml
index 6ea4a99..ef4c8ad 100644
--- a/tests/usage/AndroidTest.xml
+++ b/tests/usage/AndroidTest.xml
@@ -18,8 +18,6 @@
     <option name="test-suite-tag" value="apct" />
     <option name="test-suite-tag" value="apct-instrumentation" />
 
-    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
-
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true"/>
         <option name="test-file-name" value="CtsRootUsageDeviceTestCases.apk"/>