aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-05-07 01:09:55 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-05-07 01:09:55 +0000
commitefc37183aabb0f5c97e0eff1a1ec7fad28a5a8af (patch)
tree13ff98e650cd3c8e0fdee0e6d88b15ef88300fe2
parentd89a7de1916d97dd436b0542a7f4e1d47f66492b (diff)
parentcbf09f262e96bcc6dfb922ef5aae01f3a4bc9bcd (diff)
downloadcsuite-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.java20
-rw-r--r--harness/src/test/java/com/android/compatibility/testtype/AppLaunchTestTest.java27
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)))