Home | History | Annotate | Download | only in functional
      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