Refactoring Multi-user Tests to rename all instances of "profile" to "user"

Use system property- fw.stop_bg_users_on_switch instead of running on user 0
Test: make AndroidAutoScenarioTests
Test: locally, install apk and run tests. Prerequisite: System property fw.stop_bg_users_on_switch is 0 before test execution. Exception: DeleteLastAdminUser Test has to be executed as User0 since the user on which Test apk is installed deletes self during the test.
Bug: 193179798
Change-Id: I0b3850ce887d6874a97cad988112475071205009
diff --git a/libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoProfileHelper.java b/libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoUserHelper.java
similarity index 84%
rename from libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoProfileHelper.java
rename to libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoUserHelper.java
index 6bff0c4..aed8fee 100644
--- a/libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoProfileHelper.java
+++ b/libraries/app-helpers/interfaces/auto/src/android/platform/helpers/IAutoUserHelper.java
@@ -16,49 +16,49 @@
 
 package android.platform.helpers;
 
-public interface IAutoProfileHelper extends IAppHelper {
+public interface IAutoUserHelper extends IAppHelper {
 
     /**
      * Setup expectation: Profiles and Accounts setting is open.
      *
      * <p>This method is to add an a new user.
      */
-    void addProfile();
+    void addUser();
 
     /**
      * Setup expectation: Profiles and Accounts setting is open.
      *
      * <p>This method is to add an a new user.
      */
-    void addProfileQuickSettings(String userName);
+    void addUserQuickSettings(String userName);
 
     /**
      * Setup expectation: Profiles and Accounts setting is open.
      *
      * <p>This method is to delete an existing user.
      */
-    void deleteProfile(String user);
+    void deleteUser(String user);
 
     /**
      * Setup expectation: Profiles and Accounts setting is open.
      *
      * <p>This method is to delete user's own profile.
      */
-    void deleteCurrentProfile();
+    void deleteCurrentUser();
 
     /**
      * Setup expectation: Profiles and Accounts setting is open.
      *
      * <p>This method is to check if user already exists.
      */
-    boolean isProfilePresent(String userName);
+    boolean isUserPresent(String userName);
 
     /**
      * Setup expectation: Profiles and Accounts setting is open.
      *
      * <p>This method is to switch between existing users.
      */
-    void switchProfile(String userFrom, String userTo);
+    void switchUser(String userFrom, String userTo);
 
     /**
      * Setup expectation: Profiles and Accounts setting is open.
diff --git a/libraries/automotive-helpers/settings-app-helper/src/android/platform/helpers/SettingProfileHelperImpl.java b/libraries/automotive-helpers/settings-app-helper/src/android/platform/helpers/SettingUserHelperImpl.java
similarity index 76%
rename from libraries/automotive-helpers/settings-app-helper/src/android/platform/helpers/SettingProfileHelperImpl.java
rename to libraries/automotive-helpers/settings-app-helper/src/android/platform/helpers/SettingUserHelperImpl.java
index db68beb..be2a1c5 100644
--- a/libraries/automotive-helpers/settings-app-helper/src/android/platform/helpers/SettingProfileHelperImpl.java
+++ b/libraries/automotive-helpers/settings-app-helper/src/android/platform/helpers/SettingUserHelperImpl.java
@@ -22,11 +22,12 @@
 import android.support.test.uiautomator.UiObject2;
 import android.util.Log;
 
+
 /**
- * Implementation of {@link IAutoProfileHelper} to support tests of account settings
+ * Implementation of {@link IAutoUserHelper} to support tests of account settings
  */
-public class SettingProfileHelperImpl extends AbstractAutoStandardAppHelper
-    implements IAutoProfileHelper {
+public class SettingUserHelperImpl extends AbstractAutoStandardAppHelper
+    implements IAutoUserHelper {
 
     // Packages
     private static final String APP_NAME = AutoConfigConstants.SETTINGS;
@@ -36,9 +37,9 @@
     private static final int UI_RESPONSE_WAIT_MS = 10000;
 
     //constants
-    private static final String TAG = "SettingProfileHelperImpl";
+    private static final String TAG = "SettingUserHelperImpl";
 
-    public SettingProfileHelperImpl(Instrumentation instr) {
+    public SettingUserHelperImpl(Instrumentation instr) {
         super(instr);
     }
 
@@ -55,7 +56,7 @@
      */
     // Add a new user
     @Override
-    public void addProfile() {
+    public void addUser() {
         clickbutton(AutoConfigConstants.ADD_PROFILE);
         clickbutton(AutoConfigConstants.OK);
         SystemClock.sleep(UI_RESPONSE_WAIT_MS);
@@ -63,8 +64,8 @@
 
     // delete an existing user
     @Override
-    public void deleteProfile(String user) {
-        if (isProfilePresent(user)) {
+    public void deleteUser(String user) {
+        if (isUserPresent(user)) {
             clickbutton(user);
             clickbutton(AutoConfigConstants.DELETE);
             clickbutton(AutoConfigConstants.DELETE);
@@ -72,9 +73,9 @@
         }
     }
 
-    // delete self profile
+    // delete self User
     @Override
-    public void deleteCurrentProfile() {
+    public void deleteCurrentUser() {
         clickbutton(AutoConfigConstants.DELETE_SELF);
         clickbutton(AutoConfigConstants.DELETE);
         SystemClock.sleep(UI_RESPONSE_WAIT_MS);
@@ -85,50 +86,51 @@
      */
     // check if a user is present in the list of existing users
     @Override
-    public boolean isProfilePresent(String user) {
-        UiObject2 AddProfileButton =
+    public boolean isUserPresent(String user) {
+        UiObject2 addUserButton =
             scrollAndFindUiObject(
                 getResourceFromConfig(APP_NAME, APP_CONFIG, AutoConfigConstants.ADD_PROFILE));
         Log.v(
             TAG,
             String.format(
                 "AddProfileButton = %s ; UI_Obj = %s",
-                AutoConfigConstants.ADD_PROFILE, AddProfileButton));
-        if (AddProfileButton == null) {
+                AutoConfigConstants.ADD_PROFILE, addUserButton));
+        if (addUserButton == null) {
             clickbutton(AutoConfigConstants.MANAGE_OTHER_PROFILES);
-            UiObject2 profileObject = scrollAndFindUiObject(By.text(user));
-            return profileObject != null;
+            UiObject2 UserObject = scrollAndFindUiObject(By.text(user));
+            return UserObject != null;
         }
         return false;
     }
 
-    // switch profile from current user to given user
+    // switch User from current user to given user
     @Override
-    public void switchProfile(String userFrom, String userTo) {
+    public void switchUser(String userFrom, String userTo) {
         goToQuickSettings();
         clickbutton(userFrom);
         clickbutton(userTo);
         SystemClock.sleep(UI_RESPONSE_WAIT_MS);
     }
 
-    // add profile via quick settings
+    // add User via quick settings
     @Override
-    public void addProfileQuickSettings(String userFrom) {
+    public void addUserQuickSettings(String userFrom) {
         goToQuickSettings();
         clickbutton(userFrom);
-        addProfile();
+        addUser();
     }
 
     // make an existing user admin
     @Override
     public void makeUserAdmin(String user) {
-        if (isProfilePresent(user)) {
+        if (isUserPresent(user)) {
             clickbutton(user);
             clickbutton(AutoConfigConstants.MAKE_ADMIN);
             clickbutton(AutoConfigConstants.MAKE_ADMIN_CONFIRM);
         }
     }
 
+
     // click an on-screen element if expected text for that element is present
     private void clickbutton(String button_text) {
         UiObject2 buttonObject =
@@ -148,8 +150,8 @@
         SystemClock.sleep(UI_RESPONSE_WAIT_MS);
     }
 
-    // go to quick Settings for switching profile
+    // go to quick Settings for switching User
     private void goToQuickSettings() {
         clickbutton(AutoConfigConstants.TIME_PATTERN);
     }
-}
+}
\ No newline at end of file
diff --git a/tests/automotive/functional/multiuser/Android.bp b/tests/automotive/functional/multiuser/Android.bp
new file mode 100644
index 0000000..c97679f
--- /dev/null
+++ b/tests/automotive/functional/multiuser/Android.bp
@@ -0,0 +1,46 @@
+// 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: "AndroidAutomotiveMultiuserTests",
+    min_sdk_version: "24",
+    static_libs: [
+        "androidx.test.runner",
+        "androidx.test.rules",
+        "automotive-multiuser-scenarios",
+        "automotive-utility-helper",
+        "automotive-health-test-rules",
+        "automotive-settings-app-helper",
+        "app-helpers-common-interfaces",
+        "app-helpers-auto-interfaces",
+        "ub-uiautomator",
+        "collector-device-lib-platform",
+        "common-platform-scenarios",
+        "common-platform-scenario-tests",
+        "microbenchmark-device-lib",
+        "platform-test-rules",
+        "platform-test-options",
+        "multi-user-helper",
+        "microbenchmark-device-lib",
+        "longevity-device-lib",
+    ],
+    srcs: ["src/**/*.java"],
+    certificate: "platform",
+    test_suites: ["catbox"],
+    privileged: true,
+}
diff --git a/tests/automotive/functional/multiuser/AndroidManifest.xml b/tests/automotive/functional/multiuser/AndroidManifest.xml
new file mode 100644
index 0000000..3a54471
--- /dev/null
+++ b/tests/automotive/functional/multiuser/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?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="android.platform.tests" >
+    <uses-sdk android:minSdkVersion="24" android:targetSdkVersion="24" />
+    <uses-permission android:name="android.permission.DUMP" />
+    <uses-permission android:name="android.permission.MANAGE_ACTIVITY_TASKS"/>
+    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+    <uses-permission android:name="android.Manifest.permission.MANAGE_USERS" />
+    <uses-permission android:name="android.permission.MANAGE_USERS" />
+    <uses-permission android:name="android.permission.CREATE_USERS" />
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
+
+    <application>
+        <uses-library android:name="android.test.runner"/>
+    </application>
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="android.platform.tests"
+        android:label="Android Automotive Multiuser Functional Tests" />
+</manifest>
\ No newline at end of file
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/AddUserQuickSettings.java b/tests/automotive/functional/multiuser/src/android/platform/tests/AddUserQuickSettings.java
similarity index 81%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/AddUserQuickSettings.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/AddUserQuickSettings.java
index a6505a4..637c76f 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/AddUserQuickSettings.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/AddUserQuickSettings.java
@@ -14,16 +14,17 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertTrue;
 
 import android.content.pm.UserInfo;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -32,19 +33,17 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
+ * <p> Set system property to run MU test: adb shell setprop fw.stop_bg_users_on_switch 0
  */
 @RunWith(AndroidJUnit4.class)
 public class AddUserQuickSettings {
 
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
 
     public AddUserQuickSettings() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -62,11 +61,11 @@
     public void testAddUser() throws Exception {
         // create new user quick settings
         UserInfo initialUser = mMultiUserHelper.getCurrentForegroundUserInfo();
-        mProfilesHelper.get().addProfileQuickSettings(initialUser.name);
+        mUsersHelper.get().addUserQuickSettings(initialUser.name);
         // switched to new user
         UserInfo newUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         // switch from new user to initial user
-        mProfilesHelper.get().switchProfile(newUser.name, initialUser.name);
+        mUsersHelper.get().switchUser(newUser.name, initialUser.name);
         // verify new user is seen in list of users
         assertTrue(mMultiUserHelper.getUserByName(newUser.name) != null);
         // remove new user
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/AddUserSettings.java b/tests/automotive/functional/multiuser/src/android/platform/tests/AddUserSettings.java
similarity index 83%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/AddUserSettings.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/AddUserSettings.java
index bbb75b2..5e6e120 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/AddUserSettings.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/AddUserSettings.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertTrue;
 
@@ -22,9 +22,10 @@
 import android.platform.helpers.AutoConfigConstants;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
 import org.junit.Before;
@@ -34,19 +35,17 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
+ * <p> Set system property to run MU test: adb shell setprop fw.stop_bg_users_on_switch 0
  */
 @RunWith(AndroidJUnit4.class)
 public class AddUserSettings {
 
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
 
     public AddUserSettings() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -69,11 +68,11 @@
     public void testAddUser() throws Exception {
         // create new user
         UserInfo initialUser = mMultiUserHelper.getCurrentForegroundUserInfo();
-        mProfilesHelper.get().addProfile();
+        mUsersHelper.get().addUser();
         // switched to new user
         UserInfo newUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         // switch from new user to initial user
-        mProfilesHelper.get().switchProfile(newUser.name, initialUser.name);
+        mUsersHelper.get().switchUser(newUser.name, initialUser.name);
         // verify new user is seen in list of users
         assertTrue(mMultiUserHelper.getUserByName(newUser.name) != null);
         // remove new user
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteAdminUser.java b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteAdminUser.java
similarity index 81%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteAdminUser.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/DeleteAdminUser.java
index 0b48dd3..f73cb55 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteAdminUser.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteAdminUser.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertFalse;
 
@@ -22,9 +22,10 @@
 import android.platform.helpers.AutoConfigConstants;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -33,9 +34,6 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
  */
 @RunWith(AndroidJUnit4.class)
 public class DeleteAdminUser {
@@ -43,12 +41,12 @@
     private static final String userName = MultiUserConstants.SECONDARY_USER_NAME;
     private static final int WAIT_TIME = 10000;
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
     private int mTargetUserId;
 
     public DeleteAdminUser() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -69,10 +67,10 @@
         SystemClock.sleep(WAIT_TIME);
         // make the new user admin and delete new user
         mSettingHelper.get().openSetting(AutoConfigConstants.PROFILE_ACCOUNT_SETTINGS);
-        mProfilesHelper.get().makeUserAdmin(userName);
+        mUsersHelper.get().makeUserAdmin(userName);
         mSettingHelper.get().openSetting(AutoConfigConstants.PROFILE_ACCOUNT_SETTINGS);
-        mProfilesHelper.get().deleteProfile(userName);
+        mUsersHelper.get().deleteUser(userName);
         // verify new user was deleted
-        assertFalse(mProfilesHelper.get().isProfilePresent(userName));
+        assertFalse(mUsersHelper.get().isUserPresent(userName));
     }
 }
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteCurrentNonAdminUser.java b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteCurrentNonAdminUser.java
similarity index 81%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteCurrentNonAdminUser.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/DeleteCurrentNonAdminUser.java
index a359cc2..b2751ba 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteCurrentNonAdminUser.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteCurrentNonAdminUser.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertTrue;
 
@@ -22,9 +22,10 @@
 import android.platform.helpers.AutoConfigConstants;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
 import org.junit.Before;
@@ -34,19 +35,17 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
+ * <p> Set system property to run MU test: adb shell setprop fw.stop_bg_users_on_switch 0
  */
 @RunWith(AndroidJUnit4.class)
 public class DeleteCurrentNonAdminUser {
 
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
 
     public DeleteCurrentNonAdminUser() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -69,14 +68,15 @@
     public void testRemoveUserSelf() throws Exception {
         // add new user
         UserInfo initialUser = mMultiUserHelper.getCurrentForegroundUserInfo();
-        mProfilesHelper.get().addProfile();
+        mUsersHelper.get().addUser();
         // switched to new user and user deleted self
         UserInfo newUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         mSettingHelper.get().openSetting(AutoConfigConstants.PROFILE_ACCOUNT_SETTINGS);
-        mProfilesHelper.get().deleteCurrentProfile();
+        mUsersHelper.get().deleteCurrentUser();
         // goes to guest user, switch back to initial user
         UserInfo guestUser = mMultiUserHelper.getCurrentForegroundUserInfo();
-        mProfilesHelper.get().switchProfile(guestUser.name, initialUser.name);
+        mMultiUserHelper.switchAndWaitForStable(
+            initialUser.id, MultiUserConstants.WAIT_FOR_IDLE_TIME_MS);
         // verify that user is deleted
         assertTrue(mMultiUserHelper.getUserByName(newUser.name) == null);
     }
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteGuestNotAllowed.java b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteGuestNotAllowed.java
similarity index 82%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteGuestNotAllowed.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/DeleteGuestNotAllowed.java
index 03ecfbc..71ea343 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteGuestNotAllowed.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteGuestNotAllowed.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertFalse;
 
@@ -22,9 +22,10 @@
 import android.platform.helpers.AutoConfigConstants;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
 import org.junit.Before;
@@ -34,19 +35,16 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
  */
 @RunWith(AndroidJUnit4.class)
 public class DeleteGuestNotAllowed {
 
     private static final String guestUser = MultiUserConstants.GUEST_NAME;
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
 
     public DeleteGuestNotAllowed() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -68,6 +66,6 @@
     @Test
     public void testDeleteGuestNotAllowed() throws Exception {
         // verify that guest user cannot be seen and deleted from list of profiles
-        assertFalse(mProfilesHelper.get().isProfilePresent(guestUser));
+        assertFalse(mUsersHelper.get().isUserPresent(guestUser));
     }
 }
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteGuestSelfNotAllowed.java b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteGuestSelfNotAllowed.java
similarity index 83%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteGuestSelfNotAllowed.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/DeleteGuestSelfNotAllowed.java
index 5413fda..b31cbaa 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteGuestSelfNotAllowed.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteGuestSelfNotAllowed.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
@@ -23,9 +23,10 @@
 import android.platform.helpers.AutoConfigConstants;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import android.util.Log;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
@@ -35,20 +36,18 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
+ * <p> Set system property to run MU test: adb shell setprop fw.stop_bg_users_on_switch 0
  */
 @RunWith(AndroidJUnit4.class)
 public class DeleteGuestSelfNotAllowed {
 
     private static final String guestUser = MultiUserConstants.GUEST_NAME;
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
 
     public DeleteGuestSelfNotAllowed() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -66,14 +65,14 @@
     public void testDeleteGuestNotAllowed() throws Exception {
         UserInfo previousUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         // switch to Guest and verify the user switch
-        mProfilesHelper.get().switchProfile(previousUser.name, guestUser);
+        mUsersHelper.get().switchUser(previousUser.name, guestUser);
         UserInfo currentUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         assertTrue(currentUser.name.equals(guestUser));
         boolean IsDeleteAllowed = true;
         // try to delete self - runtime exception encountered
         try {
             mSettingHelper.get().openSetting(AutoConfigConstants.PROFILE_ACCOUNT_SETTINGS);
-            mProfilesHelper.get().deleteCurrentProfile();
+            mUsersHelper.get().deleteCurrentUser();
         } catch (RuntimeException err) {
             Log.v(
                 "DeleteGuestSelfNotAllowed",
@@ -82,6 +81,6 @@
         }
         assertFalse(IsDeleteAllowed);
         // switch to initial user before terminating the test
-        mProfilesHelper.get().switchProfile(currentUser.name, previousUser.name);
+        mUsersHelper.get().switchUser(currentUser.name, previousUser.name);
     }
 }
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteNonAdminUser.java b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteNonAdminUser.java
similarity index 82%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteNonAdminUser.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/DeleteNonAdminUser.java
index ddfc2cc..8dab462 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteNonAdminUser.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/DeleteNonAdminUser.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertFalse;
 
@@ -22,9 +22,10 @@
 import android.platform.helpers.AutoConfigConstants;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -33,9 +34,6 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
  */
 @RunWith(AndroidJUnit4.class)
 public class DeleteNonAdminUser {
@@ -43,12 +41,12 @@
     private static final String userName = MultiUserConstants.SECONDARY_USER_NAME;
     private static final int WAIT_TIME = 10000;
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
     private int mTargetUserId;
 
     public DeleteNonAdminUser() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -69,8 +67,8 @@
         SystemClock.sleep(WAIT_TIME);
         // make the new user admin and delete new user
         mSettingHelper.get().openSetting(AutoConfigConstants.PROFILE_ACCOUNT_SETTINGS);
-        mProfilesHelper.get().deleteProfile(userName);
+        mUsersHelper.get().deleteUser(userName);
         // verify new user was deleted
-        assertFalse(mProfilesHelper.get().isProfilePresent(userName));
+        assertFalse(mUsersHelper.get().isUserPresent(userName));
     }
 }
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/SwitchToGuestFromNonAdmin.java b/tests/automotive/functional/multiuser/src/android/platform/tests/SwitchToGuestFromNonAdmin.java
similarity index 81%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/SwitchToGuestFromNonAdmin.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/SwitchToGuestFromNonAdmin.java
index 539be6d..c18347e 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/SwitchToGuestFromNonAdmin.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/SwitchToGuestFromNonAdmin.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertTrue;
 
@@ -22,9 +22,10 @@
 import android.platform.helpers.AutoConfigConstants;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
 import org.junit.Before;
@@ -34,20 +35,18 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
+ * <p> Set system property to run MU test: adb shell setprop fw.stop_bg_users_on_switch 0
  */
 @RunWith(AndroidJUnit4.class)
 public class SwitchToGuestFromNonAdmin {
 
     private static final String guestUser = MultiUserConstants.GUEST_NAME;
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
 
     public SwitchToGuestFromNonAdmin() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -70,16 +69,17 @@
     public void testSwitchToGuest() throws Exception {
         // add new user
         UserInfo initialUser = mMultiUserHelper.getCurrentForegroundUserInfo();
-        mProfilesHelper.get().addProfile();
+        mUsersHelper.get().addUser();
         // switched to new user account
         UserInfo newUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         // switch to guest from new user
-        mProfilesHelper.get().switchProfile(newUser.name, guestUser);
+        mUsersHelper.get().switchUser(newUser.name, guestUser);
         // verify the user switch
         UserInfo currentUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         assertTrue(currentUser.name.equals(guestUser));
         // switch to initial user and delete new user before terminating the test
-        mProfilesHelper.get().switchProfile(currentUser.name, initialUser.name);
+        mMultiUserHelper.switchAndWaitForStable(
+            initialUser.id, MultiUserConstants.WAIT_FOR_IDLE_TIME_MS);
         mMultiUserHelper.removeUser(newUser);
     }
 }
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/SwitchUserQuickSettings.java b/tests/automotive/functional/multiuser/src/android/platform/tests/SwitchUserQuickSettings.java
similarity index 80%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/SwitchUserQuickSettings.java
rename to tests/automotive/functional/multiuser/src/android/platform/tests/SwitchUserQuickSettings.java
index 0dfdc3d..179aed4 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/SwitchUserQuickSettings.java
+++ b/tests/automotive/functional/multiuser/src/android/platform/tests/SwitchUserQuickSettings.java
@@ -14,16 +14,17 @@
  * limitations under the License.
  */
 
-package android.platform.scenario.multiuser;
+package android.platform.tests;
 
 import static junit.framework.Assert.assertTrue;
 
 import android.content.pm.UserInfo;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
+import android.platform.scenario.multiuser.MultiUserConstants;
 import androidx.test.runner.AndroidJUnit4;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -32,20 +33,18 @@
 
 /**
  * This test will create user through API and delete the same user from UI
- *
- * <p>It should be running under user 0, otherwise instrumentation may be killed after user
- * switched.
+ * <p> Set system property to run MU test: adb shell setprop fw.stop_bg_users_on_switch 0
  */
 @RunWith(AndroidJUnit4.class)
 public class SwitchUserQuickSettings {
 
     private static final String guestUser = MultiUserConstants.GUEST_NAME;
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
 
     public SwitchUserQuickSettings() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -63,11 +62,11 @@
     public void testSwitchUser() throws Exception {
         UserInfo previousUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         // switch to Guest
-        mProfilesHelper.get().switchProfile(previousUser.name, guestUser);
+        mUsersHelper.get().switchUser(previousUser.name, guestUser);
         UserInfo currentUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         // verify the user switch
         assertTrue(currentUser.name.equals(guestUser));
         // switch to initial user before terminating the test
-        mProfilesHelper.get().switchProfile(currentUser.name, previousUser.name);
+        mUsersHelper.get().switchUser(currentUser.name, previousUser.name);
     }
 }
diff --git a/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/MultiUserConstants.java b/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/MultiUserConstants.java
index a85733a..4d90ca2 100644
--- a/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/MultiUserConstants.java
+++ b/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/MultiUserConstants.java
@@ -19,19 +19,21 @@
 import android.platform.helpers.MultiUserHelper;
 import androidx.test.InstrumentationRegistry;
 
-class MultiUserConstants {
+public final class MultiUserConstants {
 
     // Shouldn't be too optimistic for the MU latency. The time to wait for system idle will be
     // 2 x (worst-case number) to make sure regression not affecting test itself.
-    static final long WAIT_FOR_IDLE_TIME_MS = 40000;
+    public static final long WAIT_FOR_IDLE_TIME_MS = 40000;
     // Default initial user does not change throughout the test process
-    static final int DEFAULT_INITIAL_USER = MultiUserHelper.getInstance().getInitialUser();
-
-    static final String INCLUDE_CREATION_TIME_KEY = "include_creation_time";
-    static final boolean INCLUDE_CREATION_TIME =
+    public static final int DEFAULT_INITIAL_USER = MultiUserHelper.getInstance().getInitialUser();
+    public static final String INCLUDE_CREATION_TIME_KEY = "include_creation_time";
+    public static final boolean INCLUDE_CREATION_TIME =
         Boolean.valueOf(
             InstrumentationRegistry.getArguments().getString(INCLUDE_CREATION_TIME_KEY, "false"));
+    public static final String GUEST_NAME = "Guest";
+    public static final String SECONDARY_USER_NAME = "SecondaryUser";
 
-    static final String GUEST_NAME = "Guest";
-    static final String SECONDARY_USER_NAME = "SecondaryUser";
+    private MultiUserConstants() {
+        throw new RuntimeException("Class cannot be instantiated");
+    }
 }
diff --git a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteCurrentLastAdminUser.java b/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteLastAdminUser.java
similarity index 87%
rename from tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteCurrentLastAdminUser.java
rename to tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteLastAdminUser.java
index 41affbe..6a04037 100644
--- a/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteCurrentLastAdminUser.java
+++ b/tests/automotive/health/multiuser/tests/src/android/platform/scenario/multiuser/ui/DeleteLastAdminUser.java
@@ -22,7 +22,7 @@
 import android.platform.helpers.AutoConfigConstants;
 import android.platform.helpers.AutoUtility;
 import android.platform.helpers.HelperAccessor;
-import android.platform.helpers.IAutoProfileHelper;
+import android.platform.helpers.IAutoUserHelper;
 import android.platform.helpers.IAutoSettingHelper;
 import android.platform.helpers.MultiUserHelper;
 import androidx.test.runner.AndroidJUnit4;
@@ -39,14 +39,14 @@
  * switched.
  */
 @RunWith(AndroidJUnit4.class)
-public class DeleteCurrentLastAdminUser {
+public class DeleteLastAdminUser {
 
     private final MultiUserHelper mMultiUserHelper = MultiUserHelper.getInstance();
-    private HelperAccessor<IAutoProfileHelper> mProfilesHelper;
+    private HelperAccessor<IAutoUserHelper> mUsersHelper;
     private HelperAccessor<IAutoSettingHelper> mSettingHelper;
 
-    public DeleteCurrentLastAdminUser() {
-        mProfilesHelper = new HelperAccessor<>(IAutoProfileHelper.class);
+    public DeleteLastAdminUser() {
+        mUsersHelper = new HelperAccessor<>(IAutoUserHelper.class);
         mSettingHelper = new HelperAccessor<>(IAutoSettingHelper.class);
     }
 
@@ -70,9 +70,11 @@
         // add new user
         UserInfo initialUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         // user deleted self
-        mProfilesHelper.get().deleteCurrentProfile();
+        mUsersHelper.get().deleteCurrentUser();
         UserInfo newUser = mMultiUserHelper.getCurrentForegroundUserInfo();
         // verify that user is deleted
         assertTrue((initialUser.id != newUser.id) && (initialUser.name.equals(newUser.name)));
     }
+
 }
+