1 #!/usr/bin/env python 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 import logging 7 import os 8 import subprocess 9 import sys 10 11 import pyauto_functional # Must be imported before pyauto 12 import pyauto 13 14 sys.path.append('/usr/local') # To make autotest libs importable. 15 from autotest.cros import cros_ui 16 from autotest.cros import cryptohome 17 18 19 class ChromeosVolume(pyauto.PyUITest): 20 """Test case for volume levels. 21 22 Test volume and mute changes with different state like, login, 23 lock, logout, etc... 24 """ 25 26 def setUp(self): 27 # We want a clean session_manager instance for every run, 28 # so restart ui now. 29 cros_ui.stop(allow_fail=True) 30 cryptohome.remove_all_vaults() 31 cros_ui.start(wait_for_login_prompt=False) 32 pyauto.PyUITest.setUp(self) 33 self._initial_volume_info = self.GetVolumeInfo() 34 35 def tearDown(self): 36 self.SetVolume(self._initial_volume_info['volume']) 37 self.SetMute(self._initial_volume_info['is_mute']) 38 pyauto.PyUITest.tearDown(self) 39 40 def ShouldAutoLogin(self): 41 return False 42 43 def _Login(self): 44 """Perform login""" 45 credentials = self.GetPrivateInfo()['test_google_account'] 46 self.Login(credentials['username'], credentials['password']) 47 logging.info('Logged in as %s' % credentials['username']) 48 login_info = self.GetLoginInfo() 49 self.assertTrue(login_info['is_logged_in'], msg='Login failed.') 50 51 def testDefaultVolume(self): 52 """Test the default volume settings""" 53 self._Login() 54 board_name = self.ChromeOSBoard() 55 default_volume = self.GetPrivateInfo()['default_volume'] 56 assert default_volume.get(board_name), \ 57 'No volume settings available for %s.' % board_name 58 expected = {u'volume': default_volume[board_name], 59 u'is_mute': default_volume['is_mute']} 60 volume = self.GetVolumeInfo() 61 self.assertEqual(volume.get('is_mute'), expected.get('is_mute')) 62 self.assertAlmostEqual(volume.get('volume'), expected.get('volume'), 63 msg='Volume settings are set to %s, not matching with default ' 64 'volume settings %s.' % (volume, expected)) 65 66 def testLoginLogoutVolume(self): 67 """Test that volume settings are preserved after login and logout""" 68 before_login = self.GetVolumeInfo() 69 self._Login() 70 after_login = self.GetVolumeInfo() 71 self.assertEqual(before_login, after_login, 72 msg='Before login : %s and after login : %s, volume states are not ' 73 'matching' % (before_login, after_login)) 74 self.Logout() 75 after_logout = self.GetVolumeInfo() 76 self.assertEqual(after_login, after_logout, 77 msg='Before logout : %s and after logout : %s, volume states are not ' 78 'matching' % (after_login, after_logout)) 79 80 def testLoginLockoutVolume(self): 81 """Test that volume changes on the lock screen, are preserved""" 82 lock_volume = {u'volume': 50.000000000000014, u'is_mute': True} 83 self._Login() 84 login_vol = self.GetVolumeInfo() 85 self.LockScreen() 86 self.SetVolume(lock_volume['volume']) 87 self.SetMute(lock_volume['is_mute']) 88 self.UnlockScreen(self.GetPrivateInfo()['test_google_account']['password']) 89 after_login = self.GetVolumeInfo() 90 self.assertEqual(lock_volume, after_login, 91 msg='Locking screen volume changes are not preserved') 92 93 94 if __name__ == '__main__': 95 pyauto_functional.Main() 96