diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-05-07 01:09:55 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-05-07 01:09:55 +0000 |
commit | efc37183aabb0f5c97e0eff1a1ec7fad28a5a8af (patch) | |
tree | 13ff98e650cd3c8e0fdee0e6d88b15ef88300fe2 | |
parent | d89a7de1916d97dd436b0542a7f4e1d47f66492b (diff) | |
parent | cbf09f262e96bcc6dfb922ef5aae01f3a4bc9bcd (diff) | |
download | csuite-android-cts-12.0_r6.tar.gz |
Snap for 7343210 from cbf09f262e96bcc6dfb922ef5aae01f3a4bc9bcd to sc-releaseandroid-vts-12.0_r9android-vts-12.0_r8android-vts-12.0_r7android-vts-12.0_r6android-vts-12.0_r5android-vts-12.0_r4android-vts-12.0_r3android-vts-12.0_r2android-vts-12.0_r12android-vts-12.0_r11android-vts-12.0_r10android-vts-12.0_r1android-security-12.0.0_r61android-security-12.0.0_r60android-security-12.0.0_r59android-security-12.0.0_r58android-security-12.0.0_r57android-security-12.0.0_r56android-security-12.0.0_r55android-security-12.0.0_r54android-security-12.0.0_r53android-security-12.0.0_r52android-security-12.0.0_r51android-security-12.0.0_r50android-security-12.0.0_r49android-security-12.0.0_r48android-security-12.0.0_r47android-security-12.0.0_r46android-security-12.0.0_r45android-security-12.0.0_r44android-security-12.0.0_r43android-security-12.0.0_r42android-security-12.0.0_r41android-security-12.0.0_r40android-security-12.0.0_r39android-security-12.0.0_r38android-security-12.0.0_r37android-security-12.0.0_r36android-security-12.0.0_r35android-security-12.0.0_r34android-platform-12.0.0_r1android-cts-12.0_r9android-cts-12.0_r8android-cts-12.0_r7android-cts-12.0_r6android-cts-12.0_r5android-cts-12.0_r4android-cts-12.0_r3android-cts-12.0_r2android-cts-12.0_r12android-cts-12.0_r11android-cts-12.0_r10android-cts-12.0_r1android-12.0.0_r9android-12.0.0_r8android-12.0.0_r34android-12.0.0_r33android-12.0.0_r31android-12.0.0_r30android-12.0.0_r3android-12.0.0_r25android-12.0.0_r2android-12.0.0_r11android-12.0.0_r10android-12.0.0_r1android12-tests-releaseandroid12-security-releaseandroid12-s5-releaseandroid12-s4-releaseandroid12-s3-releaseandroid12-s2-releaseandroid12-s1-releaseandroid12-releaseandroid12-platform-release
Change-Id: Ib560bfedd7a641d6696b9eae85a3aa0eb36a93a6
-rw-r--r-- | harness/src/main/java/com/android/compatibility/testtype/AppLaunchTest.java | 20 | ||||
-rw-r--r-- | harness/src/test/java/com/android/compatibility/testtype/AppLaunchTestTest.java | 27 |
2 files changed, 46 insertions, 1 deletions
diff --git a/harness/src/main/java/com/android/compatibility/testtype/AppLaunchTest.java b/harness/src/main/java/com/android/compatibility/testtype/AppLaunchTest.java index e15f960..7a52735 100644 --- a/harness/src/main/java/com/android/compatibility/testtype/AppLaunchTest.java +++ b/harness/src/main/java/com/android/compatibility/testtype/AppLaunchTest.java @@ -59,6 +59,12 @@ import java.util.Set; /** A test that verifies that a single app can be successfully launched. */ public class AppLaunchTest implements IDeviceTest, IRemoteTest, IConfigurationReceiver, ITestFilterReceiver { + @VisibleForTesting static final String SCREENSHOT_AFTER_LAUNCH = "screenshot-after-launch"; + + @Option( + name = SCREENSHOT_AFTER_LAUNCH, + description = "Whether to take a screenshost after a package is launched.") + private boolean mScreenshotAfterLaunch; @Option(name = "package-name", description = "Package name of testing app.") private String mPackageName; @@ -204,6 +210,20 @@ public class AppLaunchTest break; } } + + if (mScreenshotAfterLaunch) { + try (InputStreamSource screenSource = mDevice.getScreenshot()) { + listener.testLog( + mPackageName + "_screenshot_" + mDevice.getSerialNumber(), + LogDataType.PNG, + screenSource); + } catch (DeviceNotAvailableException e) { + CLog.e( + "Device %s became unavailable while capturing screenshot, %s", + mDevice.getSerialNumber(), e.toString()); + throw e; + } + } } finally { reportResult(listener, testDescription, result); stopPackage(); diff --git a/harness/src/test/java/com/android/compatibility/testtype/AppLaunchTestTest.java b/harness/src/test/java/com/android/compatibility/testtype/AppLaunchTestTest.java index 070cf85..0c23cc3 100644 --- a/harness/src/test/java/com/android/compatibility/testtype/AppLaunchTestTest.java +++ b/harness/src/test/java/com/android/compatibility/testtype/AppLaunchTestTest.java @@ -15,16 +15,20 @@ */ package com.android.compatibility.testtype; +import com.android.tradefed.config.OptionSetter; import com.android.tradefed.device.DeviceNotAvailableException; import com.android.tradefed.device.ITestDevice; import com.android.tradefed.invoker.TestInformation; import com.android.tradefed.metrics.proto.MetricMeasurement.Metric; +import com.android.tradefed.result.FileInputStreamSource; import com.android.tradefed.result.ITestInvocationListener; +import com.android.tradefed.result.InputStreamSource; import com.android.tradefed.result.TestDescription; import com.android.tradefed.testtype.InstrumentationTest; import com.android.tradefed.util.CommandResult; import com.android.tradefed.util.CommandStatus; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -38,12 +42,14 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.when; -import static org.testng.Assert.assertThrows; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.InOrder; +import org.mockito.Mockito; import java.util.HashMap; import java.util.HashSet; @@ -56,6 +62,7 @@ public final class AppLaunchTestTest { private final ITestInvocationListener mMockListener = mock(ITestInvocationListener.class); private static final String TEST_PACKAGE_NAME = "package_name"; private static final TestInformation NULL_TEST_INFORMATION = null; + @Rule public final TemporaryFolder tempFolder = new TemporaryFolder(); @Test public void run_testFailed() throws DeviceNotAvailableException { @@ -78,6 +85,24 @@ public final class AppLaunchTestTest { } @Test + public void run_takeScreenShot_savesToTestLog() throws Exception { + InstrumentationTest instrumentationTest = createPassingInstrumentationTest(); + AppLaunchTest appLaunchTest = createLaunchTestWithInstrumentation(instrumentationTest); + new OptionSetter(appLaunchTest) + .setOptionValue(AppLaunchTest.SCREENSHOT_AFTER_LAUNCH, "true"); + ITestDevice mMockDevice = mock(ITestDevice.class); + appLaunchTest.setDevice(mMockDevice); + InputStreamSource screenshotData = new FileInputStreamSource(tempFolder.newFile()); + when(mMockDevice.getScreenshot()).thenReturn(screenshotData); + when(mMockDevice.getSerialNumber()).thenReturn("SERIAL"); + + appLaunchTest.run(NULL_TEST_INFORMATION, mMockListener); + + Mockito.verify(mMockListener, times(1)) + .testLog(Mockito.contains("screenshot"), Mockito.any(), Mockito.eq(screenshotData)); + } + + @Test public void run_packageResetSuccess() throws DeviceNotAvailableException { ITestDevice mMockDevice = mock(ITestDevice.class); when(mMockDevice.executeShellV2Command(String.format("pm clear %s", TEST_PACKAGE_NAME))) |