blob: 28d14ac7f1fe48bc40849f78223d8101a6c489ff [file] [log] [blame]
# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""This test remotely emulates noisy HPD line when connecting to an external
display in extended mode using the Chameleon board."""
import logging
from autotest_lib.server.cros.chameleon import chameleon_test
class display_HotPlugNoisy(chameleon_test.ChameleonTest):
"""Noisy display HPD test.
This test talks to a Chameleon board and a DUT to set up, run, and verify
DUT behavior in response to noisy HPD line.
"""
version = 1
PLUG_CONFIGS = [
# (pulse_width_us, pulse_count, plugged_before_noise,
# plugged_after_noise)
(100, 10000, False, False),
(100, 10000, False, True),
(100, 10000, True, False),
(100, 10000, True, True),
(1, 1000000, True, True),
]
def run_once(self, host, test_mirrored=False):
width, height = resolution = self.chameleon_port.get_resolution()
logging.info('See the display on Chameleon: port %d (%s) %dx%d',
self.chameleon_port.get_connector_id(),
self.chameleon_port.get_connector_type(),
width, height)
# Keep the original connector name, for later comparison.
expected_connector = self.display_client.get_connector_name()
logging.info('See the display on DUT: %s', expected_connector)
self.set_mirrored(test_mirrored)
errors = []
for (pulse_width_us, pulse_count, plugged_before_noise,
plugged_after_noise) in self.PLUG_CONFIGS:
logging.info('TESTING THE CASE: %s > noise > %s',
'plug' if plugged_before_noise else 'unplug',
'plug' if plugged_after_noise else 'unplug')
self.set_plug(plugged_before_noise)
self.check_external_display_connector(
expected_connector if plugged_before_noise else None)
self.chameleon_port.fire_hpd_pulse(pulse_width_us, repeat_count=
pulse_count, end_level=plugged_after_noise)
self.check_external_display_connector(
expected_connector if plugged_after_noise else None)
if plugged_after_noise:
test_name = 'SCREEN-%dx%d-%c-N-P' % (
width, height, 'P' if plugged_before_noise else 'U')
self.load_test_image_and_check(
test_name, resolution,
under_mirrored_mode=test_mirrored, error_list=errors)
self.raise_on_errors(errors)