aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjdesprez <jdesprez@google.com>2017-08-30 00:22:55 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-08-30 00:22:55 +0000
commit4fd6b272e5edc993eb7617e555114104f43c0ec6 (patch)
treeba5383992b9a9e33e9c38a394386aa81467906b4 /src
parentabbaef26ac3254c3cbc46d672e2ff4407a25ac5d (diff)
parent9e0501b5a583a0e180d45b5734e58b9ef2926703 (diff)
downloadtradefederation-4fd6b272e5edc993eb7617e555114104f43c0ec6.tar.gz
Merge "Add a status checker for activity on top" into oc-dev am: 94b8611500
am: 9e0501b5a5 Change-Id: Ib5d19e92b637bec87d482a6743359ba0e23d9008
Diffstat (limited to 'src')
-rw-r--r--src/com/android/tradefed/suite/checker/ActivityStatusChecker.java60
-rw-r--r--src/com/android/tradefed/testtype/suite/ITestSuite.java8
2 files changed, 68 insertions, 0 deletions
diff --git a/src/com/android/tradefed/suite/checker/ActivityStatusChecker.java b/src/com/android/tradefed/suite/checker/ActivityStatusChecker.java
new file mode 100644
index 000000000..4a66304cd
--- /dev/null
+++ b/src/com/android/tradefed/suite/checker/ActivityStatusChecker.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2017 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 com.android.tradefed.suite.checker;
+
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.log.ITestLogger;
+import com.android.tradefed.log.LogUtil.CLog;
+import com.android.tradefed.result.ITestLoggerReceiver;
+import com.android.tradefed.result.InputStreamSource;
+import com.android.tradefed.result.LogDataType;
+import com.android.tradefed.util.StreamUtil;
+
+/** Status checker for left over activities running at the end of a module. */
+public class ActivityStatusChecker implements ISystemStatusChecker, ITestLoggerReceiver {
+
+ private ITestLogger mLogger;
+
+ @Override
+ public boolean postExecutionCheck(ITestDevice device) throws DeviceNotAvailableException {
+ return isFrontActivityLauncher(device);
+ }
+
+ private boolean isFrontActivityLauncher(ITestDevice device) throws DeviceNotAvailableException {
+ String output =
+ device.executeShellCommand(
+ "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'");
+ CLog.d("dumpsys window windows: %s", output);
+ if (output.contains("Launcher")) {
+ return true;
+ } else {
+ InputStreamSource screen = device.getScreenshot("JPEG");
+ try {
+ mLogger.testLog("status_checker_front_activity", LogDataType.JPEG, screen);
+ } finally {
+ StreamUtil.cancel(screen);
+ }
+ // TODO: Add a step to return to home page, or refresh the device (reboot?)
+ return false;
+ }
+ }
+
+ @Override
+ public void setTestLogger(ITestLogger testLogger) {
+ mLogger = testLogger;
+ }
+}
diff --git a/src/com/android/tradefed/testtype/suite/ITestSuite.java b/src/com/android/tradefed/testtype/suite/ITestSuite.java
index 7949afbf3..45db8cf09 100644
--- a/src/com/android/tradefed/testtype/suite/ITestSuite.java
+++ b/src/com/android/tradefed/testtype/suite/ITestSuite.java
@@ -26,6 +26,7 @@ import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.invoker.IInvocationContext;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.result.ITestLoggerReceiver;
import com.android.tradefed.result.InputStreamSource;
import com.android.tradefed.result.LogDataType;
import com.android.tradefed.suite.checker.ISystemStatusChecker;
@@ -193,6 +194,13 @@ public abstract class ITestSuite
return;
}
+ // Allow checkers to log files for easier debbuging.
+ for (ISystemStatusChecker checker : mSystemStatusCheckers) {
+ if (checker instanceof ITestLoggerReceiver) {
+ ((ITestLoggerReceiver) checker).setTestLogger(listener);
+ }
+ }
+
/** Setup a special listener to take actions on test failures. */
TestFailureListener failureListener =
new TestFailureListener(