Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: client/site_tests/audiovideo_PlaybackRecordSemiAuto/audiovideo_PlaybackRecordSemiAuto.py

Issue 3293004: Restore playback port after each test (Closed) Base URL: ssh://git@chromiumos-git/autotest.git
Patch Set: More accurate port descriptions/usage Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/site_tests/audiovideo_PlaybackRecordSemiAuto/audiovideo_PlaybackRecordSemiAuto.py
diff --git a/client/site_tests/audiovideo_PlaybackRecordSemiAuto/audiovideo_PlaybackRecordSemiAuto.py b/client/site_tests/audiovideo_PlaybackRecordSemiAuto/audiovideo_PlaybackRecordSemiAuto.py
index 7bfc4efbe9bc7de2e0922575a87de4db197a366d..e034c98a0a60003e359a2a7d3b79a12c01af4c40 100644
--- a/client/site_tests/audiovideo_PlaybackRecordSemiAuto/audiovideo_PlaybackRecordSemiAuto.py
+++ b/client/site_tests/audiovideo_PlaybackRecordSemiAuto/audiovideo_PlaybackRecordSemiAuto.py
@@ -89,6 +89,18 @@ _DEVICE_SECTION_ENTRY_TMPL = '''<tr>
</tr>
'''
+_DEVICE_SECTION_ENTRY_PORT_START_TMPL = '''<tr>
+<td>%(name)s</td>
+<td>%(index)d</td>
+<td>%(channels)d</td>
+<td>%(is_hardware)d</td>
+<td>%(sample_format)s</td>
+<td>%(sample_rate)s</td>
+'''
+_DEVICE_SECTION_ENTRY_PORT_END_TMPL = '''<td>%s</td>
+</tr>
+'''
+
_DEVICE_LIST_TEST = '''
<tr><td><table> <tr>
<td>Device List Looks Correct?</td>
@@ -211,7 +223,7 @@ _CHANNEL_MAP_RE = re.compile('\tchannel map:\s+(.+)')
_TOP_LEVEL_RE = re.compile('\t\S')
_PORTS_RE = re.compile('\tports:')
_PORT_SPEC_RE = re.compile('\t\t(\S+): .* \(priority \d+\)')
-
+_ACTIVE_PORT_RE = re.compile('\tactive port: <(.+)>')
class ToneThread(threading.Thread):
"""Wraps the running of test_tones in a thread."""
@@ -320,6 +332,9 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
def cleanup(self):
+ for device in self._playback_devices['info']:
+ if device['is_hardware']:
+ self.restore_playback_port(device)
self._testServer.stop()
site_ui_test.UITest.cleanup(self)
@@ -446,7 +461,7 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
server.wfile.write(_VOLUME_INSTRUCTIONS)
- self.render_single_device_summary(server, device)
+ self.render_single_device_summary(server, device, port)
server.wfile.write(_VOLUME_TEST_DETAILS % device)
if device.has_key('channel_map'):
@@ -483,7 +498,7 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
server.wfile.write(_PLAYBACK_INSTRUCTIONS)
- self.render_single_device_summary(server, device)
+ self.render_single_device_summary(server, device, port)
self.render_channel_test_order(server, device, port)
# End Page.
@@ -517,7 +532,7 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
server.wfile.write(_RECORD_INSTRUCTIONS)
- self.render_single_device_summary(server, device)
+ self.render_single_device_summary(server, device, port)
self.render_channel_test_order(server, device, port)
# End Page.
@@ -600,11 +615,12 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
server.wfile.write(_HTML_FOOTER)
- def render_single_device_summary(self, server, device):
+ def render_single_device_summary(self, server, device, port):
"""Output a HTML table with information on a single device"""
server.wfile.write(_DEVICE_LIST_START)
server.wfile.write(_DEVICE_SECTION_START)
- server.wfile.write(_DEVICE_SECTION_ENTRY_TMPL % device)
+ server.wfile.write(_DEVICE_SECTION_ENTRY_PORT_START_TMPL % device)
+ server.wfile.write(_DEVICE_SECTION_ENTRY_PORT_END_TMPL % port)
server.wfile.write(_DEVICE_SECTION_END)
davejcool 2010/09/04 00:45:44 On the performing test page, it was listing ALL po
server.wfile.write(_DEVICE_LIST_END)
@@ -767,6 +783,10 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
for channel in m.group(1).split(','):
channel_map.append(channel)
current_sink['channel_map'] = channel_map
+
+ m = _ACTIVE_PORT_RE.match(line)
+ if m is not None:
+ current_sink['active_port'] = m.group(1)
def parse_device_info(self, device_info_output):
@@ -850,6 +870,19 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
logging.info('-- setting port %s' % port)
+ def restore_playback_port(self, device):
+ """Restores the sink's active port to what it was before testing.
+
+ Args:
+ device: A dictionary with the parsed device information.
+ """
+ if device['active_port'] is not None:
+ self.do_pacmd('set-sink-port %d %s' %
+ (device['index'], device['active_port']))
+ logging.info('Restoring device %d to port %s' %
+ (device['index'], device['active_port']))
+
+
def do_signal_test_end(self):
"""Play 3 short 1000Hz tones to signal a test case's completion.
@@ -867,8 +900,8 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
This sets the default playback device is set to whatever device
is returned first in enumerate_playback_devices(). The playback
- device is set to use its first port, unmuted, and set to the
- test_volume.
+ device is set to use the default port (active port before running
+ tests), unmuted, and set to the test_volume.
For each channel on the given device and port, a sample is recorded
and played-back at max source volume. Then once again with all
@@ -890,7 +923,9 @@ class audiovideo_PlaybackRecordSemiAuto(site_ui_test.UITest):
playback_device = self._playback_devices['info'][0]
playback_volume = self.get_test_volume(playback_device)
playback_port = None
davejcool 2010/09/04 00:45:44 Setting playback port the the system default, most
- if len(playback_device['ports']):
+ if playback_device['active_port'] is not None:
+ self.restore_playback_port(playback_device)
+ elif len(playback_device['ports']):
playback_port = playback_device['ports'][0]
self.set_default_device_and_port('sink', playback_device,
playback_port)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698