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)));
}
+
}
+