OLD | NEW |
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 logging, os, shutil, sys, time | 5 import logging, os, shutil, sys, time |
6 from autotest_lib.client.bin import site_backchannel, site_ui_test, site_login | 6 from autotest_lib.client.bin import site_backchannel, site_ui_test, site_login |
7 from autotest_lib.client.common_lib import error, site_httpd, \ | 7 from autotest_lib.client.common_lib import error, site_httpd, \ |
8 site_power_status, site_ui, utils | 8 site_power_status, site_ui, utils |
9 | 9 |
10 # Workaround so flimflam.py doesn't need to be installed in the chroot. | 10 # Workaround so flimflam.py doesn't need to be installed in the chroot. |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 ssid=wifi_ap, | 95 ssid=wifi_ap, |
96 security=wifi_sec, | 96 security=wifi_sec, |
97 passphrase=wifi_pw, | 97 passphrase=wifi_pw, |
98 mode='managed')[0]: | 98 mode='managed')[0]: |
99 raise error.TestError('Could not connect to WiFi network.') | 99 raise error.TestError('Could not connect to WiFi network.') |
100 | 100 |
101 if check_network and site_backchannel.is_network_iface_running('eth0'): | 101 if check_network and site_backchannel.is_network_iface_running('eth0'): |
102 raise error.TestError( | 102 raise error.TestError( |
103 'Ethernet interface is active. Please remove Ethernet cable') | 103 'Ethernet interface is active. Please remove Ethernet cable') |
104 | 104 |
105 # TODO (snanda): | 105 # record the max backlight level |
106 # - set brightness level | |
107 # - turn off suspend on idle (not implemented yet in Chrome OS) | |
108 | |
109 # record the current and max backlight levels | |
110 cmd = 'backlight-tool --get_max_brightness' | 106 cmd = 'backlight-tool --get_max_brightness' |
111 self._tmp_keyvals['level_backlight_max'] = int( | 107 self._max_backlight = int(utils.system_output(cmd).rstrip()) |
112 utils.system_output(cmd).rstrip()) | 108 self._tmp_keyvals['level_backlight_max'] = self._max_backlight |
113 | |
114 cmd = 'backlight-tool --get_brightness' | |
115 self._tmp_keyvals['level_backlight_current'] = int( | |
116 utils.system_output(cmd).rstrip()) | |
117 | |
118 # disable screen locker and powerd | |
119 os.system('stop screen-locker') | |
120 os.system('stop powerd') | |
121 | 109 |
122 # fix up file perms for the power test extension so that chrome | 110 # fix up file perms for the power test extension so that chrome |
123 # can access it | 111 # can access it |
124 os.system('chmod -R 755 %s' % self.bindir) | 112 os.system('chmod -R 755 %s' % self.bindir) |
125 | 113 |
126 | |
127 # TODO (bleung) : | 114 # TODO (bleung) : |
128 # The new external extension packed crx means we can't pass params by | 115 # The new external extension packed crx means we can't pass params by |
129 # modifying params.js | 116 # modifying params.js |
130 # Possible solution : | 117 # Possible solution : |
131 # - modify extension to not start until we poke it from the browser. | 118 # - modify extension to not start until we poke it from the browser. |
132 # then pass through URL. | 119 # then pass through URL. |
133 | 120 |
134 # write test parameters to the power extension's params.js file | 121 # write test parameters to the power extension's params.js file |
135 # self._ext_path = os.path.join(self.bindir, 'extension') | 122 # self._ext_path = os.path.join(self.bindir, 'extension') |
136 # self._write_ext_params() | 123 # self._write_ext_params() |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 | 155 |
169 for i in range(self._loop_count): | 156 for i in range(self._loop_count): |
170 # the power test extension will report its status here | 157 # the power test extension will report its status here |
171 latch = self._testServer.add_wait_url('/status') | 158 latch = self._testServer.add_wait_url('/status') |
172 | 159 |
173 if site_login.logged_in(): | 160 if site_login.logged_in(): |
174 site_login.attempt_logout() | 161 site_login.attempt_logout() |
175 # the act of logging in will launch chrome with external extension. | 162 # the act of logging in will launch chrome with external extension. |
176 self.login(self.username, self.password) | 163 self.login(self.username, self.password) |
177 | 164 |
| 165 # stop powerd |
| 166 os.system('stop powerd') |
| 167 |
| 168 # reset X settings since X gets restarted upon login |
| 169 self._do_xset() |
| 170 |
| 171 # reset backlight level since powerd might've modified it |
| 172 # based on ambient light |
| 173 self._set_backlight_level() |
| 174 |
178 low_battery = self._do_wait(self._verbose, self._loop_time, | 175 low_battery = self._do_wait(self._verbose, self._loop_time, |
179 latch) | 176 latch) |
180 | 177 |
181 if self._verbose: | 178 if self._verbose: |
182 logging.debug('loop %d completed' % i) | 179 logging.debug('loop %d completed' % i) |
183 | 180 |
184 if low_battery: | 181 if low_battery: |
185 logging.info('Exiting due to low battery') | 182 logging.info('Exiting due to low battery') |
186 break | 183 break |
187 | 184 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 | 231 |
235 self.write_perf_keyval(keyvals) | 232 self.write_perf_keyval(keyvals) |
236 | 233 |
237 | 234 |
238 def cleanup(self): | 235 def cleanup(self): |
239 # remove json file after test to stop external extension launch. | 236 # remove json file after test to stop external extension launch. |
240 if self._json_path: | 237 if self._json_path: |
241 jsonfile = os.path.join(self._json_path, 'external_extensions.json') | 238 jsonfile = os.path.join(self._json_path, 'external_extensions.json') |
242 if os.path.exists(jsonfile): | 239 if os.path.exists(jsonfile): |
243 os.system('rm -f %s' % jsonfile) | 240 os.system('rm -f %s' % jsonfile) |
244 # re-enable screen locker and powerd. This also re-enables dpms. | 241 # re-enable powerd |
245 os.system('start powerd') | 242 os.system('start powerd') |
246 os.system('start screen-locker') | |
247 if site_login.logged_in(): | 243 if site_login.logged_in(): |
248 site_login.attempt_logout() | 244 site_login.attempt_logout() |
249 | 245 |
250 | 246 |
251 def _percent_current_charge(self): | 247 def _percent_current_charge(self): |
252 return self._power_status.battery[0].charge_now * 100 / \ | 248 return self._power_status.battery[0].charge_now * 100 / \ |
253 self._power_status.battery[0].charge_full_design | 249 self._power_status.battery[0].charge_full_design |
254 | 250 |
255 | 251 |
256 def _write_ext_params(self): | 252 def _write_ext_params(self): |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 for e in form_data: | 295 for e in form_data: |
300 key = 'ext_' + e | 296 key = 'ext_' + e |
301 if key in self._tmp_keyvals: | 297 if key in self._tmp_keyvals: |
302 self._tmp_keyvals[key] += form_data[e] | 298 self._tmp_keyvals[key] += form_data[e] |
303 else: | 299 else: |
304 self._tmp_keyvals[key] = form_data[e] | 300 self._tmp_keyvals[key] = form_data[e] |
305 else: | 301 else: |
306 logging.debug("Didn't get status back from power extension") | 302 logging.debug("Didn't get status back from power extension") |
307 | 303 |
308 return low_battery | 304 return low_battery |
| 305 |
| 306 |
| 307 def _do_xset(self): |
| 308 XSET = 'LD_LIBRARY_PATH=/usr/local/lib xset' |
| 309 # Disable X screen saver |
| 310 site_ui.xsystem('%s s 0 0' % XSET) |
| 311 # Disable DPMS Standby/Suspend/Off |
| 312 site_ui.xsystem('%s dpms 0 0 0' % XSET) |
| 313 # Force monitor on |
| 314 site_ui.xsystem('%s dpms force on' % XSET) |
| 315 # Save off X settings |
| 316 site_ui.xsystem('%s q' % XSET) |
| 317 |
| 318 |
| 319 def _set_backlight_level(self): |
| 320 # set backlight level to 40% of max |
| 321 cmd = 'backlight-tool --set_brightness %d ' % ( |
| 322 int(self._max_backlight * 0.4)) |
| 323 os.system(cmd) |
| 324 |
| 325 # record brightness level |
| 326 cmd = 'backlight-tool --get_brightness' |
| 327 level = int(utils.system_output(cmd).rstrip()) |
| 328 logging.info('backlight level is %d' % level) |
| 329 self._tmp_keyvals['level_backlight_current'] = level |
OLD | NEW |