diff options
author | Nandu Suram <nandiswar@google.com> | 2023-11-29 21:37:08 -0800 |
---|---|---|
committer | Nandu Suram <nandiswar@google.com> | 2023-11-29 21:41:44 -0800 |
commit | f31f0b278f6055a2fe0e80982ac7ecfe1c62f48f (patch) | |
tree | 8d22435aa37521600fa31bcc2a00db3b9b01b7c4 | |
parent | bd0f766013af24905e9654bc1f9acfb76d823e3f (diff) | |
download | platform_testing-f31f0b278f6055a2fe0e80982ac7ecfe1c62f48f.tar.gz |
add support for multiuser tests in Android S
bug: 307756655
This cl
- adds support to capture metrics for multiuser tests in Android S.
- uses adb shell command to switch user for devices running Android S
Change-Id: I47b6111f6ebf7eb0f531cc2aab5c958ef865d98e
Test: verified the change by using ats-tradefed. run ./ats-tradefed run commandAndExit catbox-performance-switch-to-existing-user
5 files changed, 18 insertions, 18 deletions
diff --git a/libraries/car-helpers/multiuser-helper/Android.bp b/libraries/car-helpers/multiuser-helper/Android.bp index 9fd8040cf..32f4911b9 100644 --- a/libraries/car-helpers/multiuser-helper/Android.bp +++ b/libraries/car-helpers/multiuser-helper/Android.bp @@ -25,6 +25,7 @@ java_library_static { static_libs: [ "android.car-test-stubs", "androidx.test.runner", + "compatibility-device-util-axt", "ub-uiautomator", ], } diff --git a/libraries/car-helpers/multiuser-helper/src/android/platform/helpers/MultiUserHelper.java b/libraries/car-helpers/multiuser-helper/src/android/platform/helpers/MultiUserHelper.java index bf48642cc..35b75f832 100644 --- a/libraries/car-helpers/multiuser-helper/src/android/platform/helpers/MultiUserHelper.java +++ b/libraries/car-helpers/multiuser-helper/src/android/platform/helpers/MultiUserHelper.java @@ -24,12 +24,15 @@ import android.car.user.UserSwitchResult; import android.car.util.concurrent.AsyncFuture; import android.content.Context; import android.content.pm.UserInfo; +import android.os.Build; import android.os.SystemClock; import android.os.UserManager; import android.support.test.uiautomator.UiDevice; import androidx.test.InstrumentationRegistry; +import com.android.compatibility.common.util.SystemUtil; + import java.io.IOException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -42,6 +45,8 @@ public class MultiUserHelper { /** For testing purpose we allow a wide range of switching time. */ private static final int USER_SWITCH_TIMEOUT_SECOND = 300; + private static final String SWITCH_USER_COMMAND = "cmd car_service switch-user "; + private static MultiUserHelper sMultiUserHelper; private CarUserManager mCarUserManager; private UserManager mUserManager; @@ -102,6 +107,11 @@ public class MultiUserHelper { * @param id Id of the user to switch to */ public void switchToUserId(int id) throws Exception { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { + switchUserUsingShell(id); + return; + } + final CountDownLatch latch = new CountDownLatch(1); // A UserLifeCycleListener to wait for user switch event. It is equivalent to // UserSwitchObserver#onUserSwitchComplete callback @@ -177,4 +187,11 @@ public class MultiUserHelper { .findFirst() .orElse(null); } + + private void switchUserUsingShell(int userId) throws Exception { + String retStr = SystemUtil.runShellCommand(SWITCH_USER_COMMAND + userId); + if (!retStr.contains("STATUS_SUCCESSFUL")) { + throw new Exception("failed to switch to user: " + userId); + } + } } diff --git a/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToExistingSecondaryUser.java b/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToExistingSecondaryUser.java index 3aa6efd8a..4b6cd79e1 100644 --- a/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToExistingSecondaryUser.java +++ b/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToExistingSecondaryUser.java @@ -18,14 +18,12 @@ package android.platform.scenario.multiuser; import android.app.UiAutomation; import android.content.pm.UserInfo; -import android.os.Build; import android.os.SystemClock; import android.platform.helpers.MultiUserHelper; import android.platform.test.scenario.annotation.Scenario; import androidx.test.platform.app.InstrumentationRegistry; -import org.junit.Assume; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -51,10 +49,6 @@ public class SwitchToExistingSecondaryUser { /* TODO: Create setup util API */ - // Execute these tests only on devices running Android T or higher - Assume.assumeTrue( - "Skipping below Android T", Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU); - // Execute user manager APIs with elevated permissions mUiAutomation = getUiAutomation(); // TODO: b/302175460 - update minimum SDK version diff --git a/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToNewGuest.java b/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToNewGuest.java index 00897dea0..facc1ac6f 100644 --- a/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToNewGuest.java +++ b/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToNewGuest.java @@ -18,14 +18,12 @@ package android.platform.scenario.multiuser; import android.app.UiAutomation; import android.content.pm.UserInfo; -import android.os.Build; import android.os.SystemClock; import android.platform.helpers.MultiUserHelper; import android.platform.test.scenario.annotation.Scenario; import androidx.test.platform.app.InstrumentationRegistry; -import org.junit.Assume; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -51,10 +49,6 @@ public class SwitchToNewGuest { /* TODO: Create setup util API */ - // Execute these tests only on devices running Android T or higher - Assume.assumeTrue( - "Skipping below Android T", Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU); - // Execute user manager APIs with elevated permissions mUiAutomation = getUiAutomation(); // TODO: b/302175460 - update minimum SDK version diff --git a/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToNewSecondaryUser.java b/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToNewSecondaryUser.java index 4feedeced..7696f6ce6 100644 --- a/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToNewSecondaryUser.java +++ b/tests/automotive/health/multiuser/src/android/platform/scenario/multiuser/nonui/SwitchToNewSecondaryUser.java @@ -18,14 +18,12 @@ package android.platform.scenario.multiuser; import android.app.UiAutomation; import android.content.pm.UserInfo; -import android.os.Build; import android.os.SystemClock; import android.platform.helpers.MultiUserHelper; import android.platform.test.scenario.annotation.Scenario; import androidx.test.platform.app.InstrumentationRegistry; -import org.junit.Assume; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -52,10 +50,6 @@ public class SwitchToNewSecondaryUser { TODO(b/194536236): Refactor setup code in multiuser nonui tests * and create setup util API instead */ - // Execute these tests only on devices running Android T or higher - Assume.assumeTrue( - "Skipping below Android T", Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU); - // Execute user manager APIs with elevated permissions mUiAutomation = getUiAutomation(); // TODO: b/302175460 - update minimum SDK version |