summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVenkatarama NG. Avadhani <venkatarama.avadhani@ittiam.com>2019-10-24 08:37:18 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-10-24 08:37:18 -0700
commit6c28cd536fc0513c19f6e4f5d88ead1b7907c3f3 (patch)
tree9da49e3d0382a95b1e9a30ad77e80b322e0622cf
parentbdc386e42864b0058b0d5d5415aa5cd2fe0bb094 (diff)
parent01c6ef2db96f71ebde4f2063d3d741ee4a901a77 (diff)
downloadcts-6c28cd536fc0513c19f6e4f5d88ead1b7907c3f3.tar.gz
Merge "Add check for HDMI CEC feature"
am: 01c6ef2db9 Change-Id: I8e2d1efe2ae471083b0002fc34ababe852aa33af
-rw-r--r--hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecOneTouchPlayTest.java27
-rw-r--r--hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecPhysicalAddressTest.java31
-rw-r--r--hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecRoutingControlTest.java61
-rw-r--r--hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecSystemInformationTest.java92
-rw-r--r--hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecUtils.java32
5 files changed, 148 insertions, 95 deletions
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecOneTouchPlayTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecOneTouchPlayTest.java
index d688b3ce292..fb5e3a84e25 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecOneTouchPlayTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecOneTouchPlayTest.java
@@ -17,6 +17,7 @@
package android.hdmicec.cts;
import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.testtype.DeviceTestCase;
/** HDMI CEC tests for One Touch Play (Section 11.2.1) */
@@ -31,18 +32,22 @@ public final class HdmiCecOneTouchPlayTest extends DeviceTestCase {
*/
public void testOneTouchPlay() throws Exception {
HdmiCecUtils hdmiCecUtils = new HdmiCecUtils(CecDevice.PLAYBACK_1, "1.0.0.0");
+ ITestDevice device = getDevice();
+ assertNotNull("Device not set", device);
- if (hdmiCecUtils.init()) {
- try {
- ITestDevice device = getDevice();
- assertNotNull("Device not set", device);
- device.executeShellCommand("input keyevent KEYCODE_HOME");
- hdmiCecUtils.checkExpectedOutput(CecDevice.TV, CecMessage.TEXT_VIEW_ON);
- String message = hdmiCecUtils.checkExpectedOutput(CecMessage.ACTIVE_SOURCE);
- assertEquals(PHYSICAL_ADDRESS, hdmiCecUtils.getParamsFromMessage(message));
- } finally {
- hdmiCecUtils.killCecProcess();
- }
+ if (!HdmiCecUtils.isHdmiCecFeatureSupported(device)) {
+ CLog.v("No HDMI CEC feature running, should skip test.");
+ return;
+ }
+
+ try {
+ hdmiCecUtils.init();
+ device.executeShellCommand("input keyevent KEYCODE_HOME");
+ hdmiCecUtils.checkExpectedOutput(CecDevice.TV, CecMessage.TEXT_VIEW_ON);
+ String message = hdmiCecUtils.checkExpectedOutput(CecMessage.ACTIVE_SOURCE);
+ assertEquals(PHYSICAL_ADDRESS, hdmiCecUtils.getParamsFromMessage(message));
+ } finally {
+ hdmiCecUtils.killCecProcess();
}
}
}
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecPhysicalAddressTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecPhysicalAddressTest.java
index 48b3d7092c9..6fa535a0e58 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecPhysicalAddressTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecPhysicalAddressTest.java
@@ -17,6 +17,7 @@
package android.hdmicec.cts;
import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.testtype.DeviceTestCase;
/** HDMI CEC test to verify physical address after device reboot (Section 10.1.2) */
@@ -32,20 +33,24 @@ public final class HdmiCecPhysicalAddressTest extends DeviceTestCase {
*/
public void testRebootPhysicalAddress() throws Exception {
HdmiCecUtils hdmiCecUtils = new HdmiCecUtils(CecDevice.PLAYBACK_1, "1.0.0.0");
+ ITestDevice device = getDevice();
+ assertNotNull("Device not set", device);
- if (hdmiCecUtils.init()) {
- try {
- ITestDevice device = getDevice();
- assertNotNull("Device not set", device);
- device.executeShellCommand("reboot");
- device.waitForBootComplete(REBOOT_TIMEOUT);
- String message = hdmiCecUtils.checkExpectedOutput
- (CecMessage.REPORT_PHYSICAL_ADDRESS);
- assertEquals(PHY_ADDRESS,
- hdmiCecUtils.getParamsFromMessage(message, PHY_ADDRESS.length()));
- } finally {
- hdmiCecUtils.killCecProcess();
- }
+ if (!HdmiCecUtils.isHdmiCecFeatureSupported(device)) {
+ CLog.v("No HDMI CEC feature running, should skip test.");
+ return;
+ }
+
+ try {
+ hdmiCecUtils.init();
+ device.executeShellCommand("reboot");
+ device.waitForBootComplete(REBOOT_TIMEOUT);
+ String message = hdmiCecUtils.checkExpectedOutput
+ (CecMessage.REPORT_PHYSICAL_ADDRESS);
+ assertEquals(PHY_ADDRESS,
+ hdmiCecUtils.getParamsFromMessage(message, PHY_ADDRESS.length()));
+ } finally {
+ hdmiCecUtils.killCecProcess();
}
}
}
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecRoutingControlTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecRoutingControlTest.java
index cc2247bae6f..397070f000a 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecRoutingControlTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecRoutingControlTest.java
@@ -17,6 +17,7 @@
package android.hdmicec.cts;
import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.testtype.DeviceTestCase;
/** HDMI CEC test to test routing control (Section 11.2.2) */
@@ -30,20 +31,25 @@ public final class HdmiCecRoutingControlTest extends DeviceTestCase {
* This test depends on One Touch Play, and will pass only if One Touch Play passes.
*/
public void testRequestActiveSource() throws Exception {
+ ITestDevice device = getDevice();
+ assertNotNull("Device not set", device);
+
+ if (!HdmiCecUtils.isHdmiCecFeatureSupported(device)) {
+ CLog.v("No HDMI CEC feature running, should skip test.");
+ return;
+ }
+
HdmiCecUtils hdmiCecUtils = new HdmiCecUtils(CecDevice.PLAYBACK_1, "1.0.0.0");
- if (hdmiCecUtils.init()) {
- try {
- ITestDevice device = getDevice();
- assertNotNull("Device not set", device);
- device.executeShellCommand("input keyevent KEYCODE_HOME");
- hdmiCecUtils.sendCecMessage(CecDevice.TV, CecDevice.BROADCAST,
- CecMessage.REQUEST_ACTIVE_SOURCE);
- String message = hdmiCecUtils.checkExpectedOutput(CecMessage.ACTIVE_SOURCE);
- assertEquals(PHYSICAL_ADDRESS, hdmiCecUtils.getParamsFromMessage(message));
- } finally {
- hdmiCecUtils.killCecProcess();
- }
+ try {
+ hdmiCecUtils.init();
+ device.executeShellCommand("input keyevent KEYCODE_HOME");
+ hdmiCecUtils.sendCecMessage(CecDevice.TV, CecDevice.BROADCAST,
+ CecMessage.REQUEST_ACTIVE_SOURCE);
+ String message = hdmiCecUtils.checkExpectedOutput(CecMessage.ACTIVE_SOURCE);
+ assertEquals(PHYSICAL_ADDRESS, hdmiCecUtils.getParamsFromMessage(message));
+ } finally {
+ hdmiCecUtils.killCecProcess();
}
}
@@ -54,22 +60,23 @@ public final class HdmiCecRoutingControlTest extends DeviceTestCase {
*/
public void testInactiveSourceOnStandby() throws Exception {
HdmiCecUtils hdmiCecUtils = new HdmiCecUtils(CecDevice.PLAYBACK_1, "1.0.0.0");
+ ITestDevice device = getDevice();
+ assertNotNull("Device not set", device);
+
+ if (!HdmiCecUtils.isHdmiCecFeatureSupported(device)) {
+ CLog.v("No HDMI CEC feature running, should skip test.");
+ return;
+ }
- if (hdmiCecUtils.init()) {
- ITestDevice device = null;
- try {
- device = getDevice();
- assertNotNull("Device not set", device);
- device.executeShellCommand("input keyevent KEYCODE_HOME");
- device.executeShellCommand("input keyevent KEYCODE_POWER");
- hdmiCecUtils.checkExpectedOutput(CecMessage.INACTIVE_SOURCE);
- } finally {
- /* Wake up the device again */
- if (device != null) {
- device.executeShellCommand("input keyevent KEYCODE_POWER");
- }
- hdmiCecUtils.killCecProcess();
- }
+ try {
+ hdmiCecUtils.init();
+ device.executeShellCommand("input keyevent KEYCODE_HOME");
+ device.executeShellCommand("input keyevent KEYCODE_POWER");
+ hdmiCecUtils.checkExpectedOutput(CecMessage.INACTIVE_SOURCE);
+ } finally {
+ /* Wake up the device again */
+ device.executeShellCommand("input keyevent KEYCODE_POWER");
+ hdmiCecUtils.killCecProcess();
}
}
}
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecSystemInformationTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecSystemInformationTest.java
index a9f3324398e..cee6c5917d2 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecSystemInformationTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecSystemInformationTest.java
@@ -16,6 +16,7 @@
package android.hdmicec.cts;
+import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.testtype.DeviceTestCase;
/** HDMI CEC system information tests (Section 11.2.6) */
@@ -29,21 +30,27 @@ public final class HdmiCecSystemInformationTest extends DeviceTestCase {
* Tests for Ack <Polling Message> message.
*/
public void testAck() throws Exception {
+
+ if (!HdmiCecUtils.isHdmiCecFeatureSupported(getDevice())) {
+ CLog.v("No HDMI CEC feature running, should skip test.");
+ return;
+ }
+
String command = "poll " + CecDevice.PLAYBACK_1;
String expectedOutput = "Playback 1 (" + CecDevice.PLAYBACK_1 + "): device " +
"status changed into 'present'";
HdmiCecUtils hdmiCecUtils = new HdmiCecUtils(CecDevice.PLAYBACK_1, "1.0.0.0");
- if (hdmiCecUtils.init()) {
- try {
- hdmiCecUtils.sendConsoleMessage(command);
- if (!hdmiCecUtils.checkConsoleOutput(expectedOutput)) {
- throw new Exception("Could not find " + expectedOutput);
- }
- } finally {
- hdmiCecUtils.killCecProcess();
+
+ try {
+ hdmiCecUtils.init();
+ hdmiCecUtils.sendConsoleMessage(command);
+ if (!hdmiCecUtils.checkConsoleOutput(expectedOutput)) {
+ throw new Exception("Could not find " + expectedOutput);
}
+ } finally {
+ hdmiCecUtils.killCecProcess();
}
}
@@ -53,16 +60,20 @@ public final class HdmiCecSystemInformationTest extends DeviceTestCase {
* <GIVE_PHYSICAL_ADDRESS>
*/
public void testGivePhysicalAddress() throws Exception {
+
+ if (!HdmiCecUtils.isHdmiCecFeatureSupported(getDevice())) {
+ CLog.v("No HDMI CEC feature running, should skip test.");
+ return;
+ }
+
HdmiCecUtils hdmiCecUtils = new HdmiCecUtils(CecDevice.PLAYBACK_1, "1.0.0.0");
- if (hdmiCecUtils.init()) {
- try {
- hdmiCecUtils.sendCecMessage(CecMessage.GIVE_PHYSICAL_ADDRESS);
- String message = hdmiCecUtils.checkExpectedOutput
- (CecMessage.REPORT_PHYSICAL_ADDRESS);
- } finally {
- hdmiCecUtils.killCecProcess();
- }
+ try {
+ hdmiCecUtils.init();
+ hdmiCecUtils.sendCecMessage(CecMessage.GIVE_PHYSICAL_ADDRESS);
+ String message = hdmiCecUtils.checkExpectedOutput(CecMessage.REPORT_PHYSICAL_ADDRESS);
+ } finally {
+ hdmiCecUtils.killCecProcess();
}
}
@@ -71,18 +82,23 @@ public final class HdmiCecSystemInformationTest extends DeviceTestCase {
* Tests that the device sends a <CEC_VERSION> in response to a <GET_CEC_VERSION>
*/
public void testGiveCecVersion() throws Exception {
+
+ if (!HdmiCecUtils.isHdmiCecFeatureSupported(getDevice())) {
+ CLog.v("No HDMI CEC feature running, should skip test.");
+ return;
+ }
+
HdmiCecUtils hdmiCecUtils = new HdmiCecUtils(CecDevice.PLAYBACK_1, "1.0.0.0");
- if (hdmiCecUtils.init()) {
- try {
- hdmiCecUtils.sendCecMessage(CecDevice.TV, CecMessage.GET_CEC_VERSION);
- String message = hdmiCecUtils.checkExpectedOutput
- (CecDevice.TV, CecMessage.CEC_VERSION);
+ try {
+ hdmiCecUtils.init();
+ hdmiCecUtils.sendCecMessage(CecDevice.TV, CecMessage.GET_CEC_VERSION);
+ String message = hdmiCecUtils.checkExpectedOutput(CecDevice.TV,
+ CecMessage.CEC_VERSION);
- assertEquals(CEC_VERSION_NUMBER, hdmiCecUtils.getParamsFromMessage(message));
- } finally {
- hdmiCecUtils.killCecProcess();
- }
+ assertEquals(CEC_VERSION_NUMBER, hdmiCecUtils.getParamsFromMessage(message));
+ } finally {
+ hdmiCecUtils.killCecProcess();
}
}
@@ -93,17 +109,21 @@ public final class HdmiCecSystemInformationTest extends DeviceTestCase {
public void testGetMenuLanguage() throws Exception {
HdmiCecUtils hdmiCecUtils = new HdmiCecUtils(CecDevice.PLAYBACK_1, "1.0.0.0");
- if (hdmiCecUtils.init()) {
- try {
- hdmiCecUtils.sendCecMessage(CecDevice.TV, CecMessage.GET_MENU_LANGUAGE);
- String message = hdmiCecUtils.checkExpectedOutput
- (CecDevice.TV, CecMessage.FEATURE_ABORT);
- String params = hdmiCecUtils.getParamsFromMessage(message,
- CecMessage.GET_MENU_LANGUAGE.toString().length());
- assertEquals(params, CecMessage.GET_MENU_LANGUAGE.toString());
- } finally {
- hdmiCecUtils.killCecProcess();
- }
+ if (!HdmiCecUtils.isHdmiCecFeatureSupported(getDevice())) {
+ CLog.v("No HDMI CEC feature running, should skip test.");
+ return;
+ }
+
+ try {
+ hdmiCecUtils.init();
+ hdmiCecUtils.sendCecMessage(CecDevice.TV, CecMessage.GET_MENU_LANGUAGE);
+ String message = hdmiCecUtils.checkExpectedOutput(CecDevice.TV,
+ CecMessage.FEATURE_ABORT);
+ String params = hdmiCecUtils.getParamsFromMessage(message,
+ CecMessage.GET_MENU_LANGUAGE.toString().length());
+ assertEquals(params, CecMessage.GET_MENU_LANGUAGE.toString());
+ } finally {
+ hdmiCecUtils.killCecProcess();
}
}
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecUtils.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecUtils.java
index 428dec8d9a0..6c4d4319c4f 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecUtils.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecUtils.java
@@ -16,6 +16,7 @@
package android.hdmicec.cts;
+import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.util.RunUtil;
@@ -34,6 +35,7 @@ public final class HdmiCecUtils {
private static final String CEC_CONSOLE_READY = "waiting for input";
private static final int MILLISECONDS_TO_READY = 5000;
private static final int DEFAULT_TIMEOUT = 20000;
+ private static final String HDMI_CEC_FEATURE = "feature:android.hardware.hdmi.cec";
private Process mCecClient;
private BufferedWriter mOutputConsole;
@@ -48,8 +50,17 @@ public final class HdmiCecUtils {
this.physicalAddress = physicalAddress;
}
+ /**
+ * Checks if the HDMI CEC feature is running on the device. Call this function before running
+ * any HDMI CEC tests.
+ * This could throw a DeviceNotAvailableException.
+ */
+ public static boolean isHdmiCecFeatureSupported(ITestDevice device) throws Exception {
+ return device.hasFeature(HDMI_CEC_FEATURE);
+ }
+
/** Initialise the client */
- public boolean init() throws Exception {
+ public void init() throws Exception {
boolean gotExpectedOut = false;
List<String> commands = new ArrayList();
int seconds = 0;
@@ -63,7 +74,7 @@ public final class HdmiCecUtils {
if (checkConsoleOutput(CecMessage.CLIENT_CONSOLE_READY + "", MILLISECONDS_TO_READY)) {
mOutputConsole = new BufferedWriter(
new OutputStreamWriter(mCecClient.getOutputStream()));
- return mCecClientInitialised;
+ return;
}
mCecClientInitialised = false;
@@ -273,11 +284,16 @@ public final class HdmiCecUtils {
/**
* Kills the cec-client process that was created in init().
*/
- public void killCecProcess() throws Exception {
- checkCecClient();
- sendConsoleMessage(CecMessage.QUIT_CLIENT.toString());
- mOutputConsole.close();
- mInputConsole.close();
- mCecClientInitialised = false;
+ public void killCecProcess() {
+ try {
+ checkCecClient();
+ sendConsoleMessage(CecMessage.QUIT_CLIENT.toString());
+ mOutputConsole.close();
+ mInputConsole.close();
+ mCecClientInitialised = false;
+ } catch (Exception e) {
+ /* If cec-client is not running, do not throw an exception, just return. */
+ return;
+ }
}
}