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

Side by Side Diff: client/site_tests/desktopui_WindowManagerHotkeys/desktopui_WindowManagerHotkeys.py

Issue 3427008: autotest: Simplify desktopui_WindowManagerHotkeys. (Closed) Base URL: http://git.chromium.org/git/autotest.git
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « client/site_tests/desktopui_WindowManagerHotkeys/control ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import os, random, re, shutil, time 5 import os, random, re, shutil, time
6 from autotest_lib.client.bin import site_ui_test, site_utils, test, utils 6 from autotest_lib.client.bin import site_ui_test, site_utils, test, utils
7 from autotest_lib.client.common_lib import error 7 from autotest_lib.client.common_lib import error
8 8
9 class desktopui_WindowManagerHotkeys(site_ui_test.UITest): 9 class desktopui_WindowManagerHotkeys(site_ui_test.UITest):
10 version = 1 10 version = 1
11 11
12 def __get_channel_volume(self, output, channel_name):
13 """Find a channel's volume within the amixer command's output.
14
15 Helper method used by __get_mixer_volume().
16
17 Args:
18 output: str output from "amixer get Master"
19 channel_name: str name of channel, e.g. "Front Left"
20
21 Returns:
22 Channel volume as an int (0 is returned for muted channels).
23 """
24 regexp = '%s: Playback \d+ \[(\d+)%%\] \[(on|off)\]' % channel_name
25 match = re.search(regexp, output)
26 if not match:
27 raise error.TestError(
28 'Unable to get volume for channel "%s"' % channel_name)
29 if match.group(2) == 'off':
30 return 0
31 return int(match.group(1))
32
33 def __get_mixer_volume(self):
34 """Get the current mixer volume.
35
36 Returns:
37 A two-element tuple consisting of the int volume of the left and
38 right channels.
39 """
40 output = utils.system_output('/usr/bin/amixer get Master')
41 return (self.__get_channel_volume(output, 'Front Left'),
42 self.__get_channel_volume(output, 'Front Right'))
43
44 def run_once(self): 12 def run_once(self):
45 ax = self.get_autox() 13 ax = self.get_autox()
46 14
47 # Start a terminal and wait for it to get the focus. 15 # Start a terminal and wait for it to get the focus.
48 # TODO: This is a bit of a hack. To watch for the terminal getting 16 orig_active_win_xid = ax.get_active_window_property()
49 # the focus, we create a new window, wait for it to get the focus,
50 # and then launch the terminal and wait for our window to lose the
51 # focus (AutoX isn't notified about focus events on the terminal
52 # window itself). It's maybe cleaner to add a method to AutoX to
53 # get the currently-focused window and then just poll that after
54 # starting the terminal until it changes.
55 win = ax.create_and_map_window()
56 info = ax.get_window_info(win.id)
57 ax.await_condition(
58 lambda: info.is_focused,
59 desc='Waiting for window to get focus')
60 ax.send_hotkey('Ctrl-Alt-t') 17 ax.send_hotkey('Ctrl-Alt-t')
61 ax.await_condition( 18 ax.await_condition(
62 lambda: not info.is_focused, 19 lambda: ax.get_active_window_property() != orig_active_win_xid,
63 desc='Waiting for window to lose focus') 20 desc='Waiting for terminal to become active window')
64
65 # Type in it to create a file in /tmp and exit.
66 temp_filename = '/tmp/desktopup_WindowManagerHotkeys_%d' % time.time()
67 ax.send_text('touch %s\n' % temp_filename)
68 ax.send_text('exit\n')
69 site_utils.poll_for_condition(
70 lambda: os.access(temp_filename, os.F_OK),
71 error.TestFail(
72 'Waiting for %s to be created from terminal' % temp_filename))
73 os.remove(temp_filename)
74 21
75 # Press the Print Screen key and check that a screenshot is written. 22 # Press the Print Screen key and check that a screenshot is written.
76 screenshot_dir = '/home/chronos/user/Downloads/Screenshots' 23 screenshot_dir = '/home/chronos/user/Downloads/Screenshots'
77 shutil.rmtree(screenshot_dir, ignore_errors=True) 24 shutil.rmtree(screenshot_dir, ignore_errors=True)
78 ax.send_hotkey('Print') 25 ax.send_hotkey('Print')
79 site_utils.poll_for_condition( 26 site_utils.poll_for_condition(
80 lambda: os.access(screenshot_dir, os.F_OK) and \ 27 lambda: os.access(screenshot_dir, os.F_OK) and \
81 os.listdir(screenshot_dir), 28 os.listdir(screenshot_dir),
82 error.TestFail( 29 error.TestFail(
83 'Waiting for screenshot in %s' % screenshot_dir)) 30 'Waiting for screenshot in %s' % screenshot_dir))
84 shutil.rmtree(screenshot_dir, ignore_errors=True) 31 shutil.rmtree(screenshot_dir, ignore_errors=True)
85
86 # Make sure that the mixer is unmuted and at 50% before we test the
87 # audio key bindings.
88 utils.system('/usr/bin/amixer sset Master unmute 50%')
89
90 ax.send_hotkey('XF86AudioRaiseVolume')
91 site_utils.poll_for_condition(
92 lambda: self.__get_mixer_volume() == (55, 55),
93 error.TestFail('Waiting for volume to be increased'))
94
95 ax.send_hotkey('XF86AudioLowerVolume')
96 site_utils.poll_for_condition(
97 lambda: self.__get_mixer_volume() == (50, 50),
98 error.TestFail('Waiting for volume to be decreased'))
99
100 ax.send_hotkey('XF86AudioMute')
101 site_utils.poll_for_condition(
102 lambda: self.__get_mixer_volume() == (0, 0),
103 error.TestFail('Waiting for volume to be muted'))
104
105 ax.send_hotkey('XF86AudioRaiseVolume')
106 site_utils.poll_for_condition(
107 lambda: self.__get_mixer_volume() == (55, 55),
108 error.TestFail('Waiting for volume to be increased'))
OLDNEW
« no previous file with comments | « client/site_tests/desktopui_WindowManagerHotkeys/control ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698