普通文本  |  96行  |  3.37 KB

#!/usr/bin/env python
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import logging
import os
import subprocess
import sys

import pyauto_functional  # Must be imported before pyauto
import pyauto

sys.path.append('/usr/local')  # To make autotest libs importable.
from autotest.cros import cros_ui
from autotest.cros import cryptohome


class ChromeosVolume(pyauto.PyUITest):
  """Test case for volume levels.

  Test volume and mute changes with different state like, login,
  lock, logout, etc...
  """

  def setUp(self):
    # We want a clean session_manager instance for every run,
    # so restart ui now.
    cros_ui.stop(allow_fail=True)
    cryptohome.remove_all_vaults()
    cros_ui.start(wait_for_login_prompt=False)
    pyauto.PyUITest.setUp(self)
    self._initial_volume_info = self.GetVolumeInfo()

  def tearDown(self):
    self.SetVolume(self._initial_volume_info['volume'])
    self.SetMute(self._initial_volume_info['is_mute'])
    pyauto.PyUITest.tearDown(self)

  def ShouldAutoLogin(self):
    return False

  def _Login(self):
    """Perform login"""
    credentials = self.GetPrivateInfo()['test_google_account']
    self.Login(credentials['username'], credentials['password'])
    logging.info('Logged in as %s' % credentials['username'])
    login_info = self.GetLoginInfo()
    self.assertTrue(login_info['is_logged_in'], msg='Login failed.')

  def testDefaultVolume(self):
    """Test the default volume settings"""
    self._Login()
    board_name = self.ChromeOSBoard()
    default_volume = self.GetPrivateInfo()['default_volume']
    assert default_volume.get(board_name), \
           'No volume settings available for %s.' % board_name
    expected = {u'volume': default_volume[board_name],
                u'is_mute': default_volume['is_mute']}
    volume = self.GetVolumeInfo()
    self.assertEqual(volume.get('is_mute'), expected.get('is_mute'))
    self.assertAlmostEqual(volume.get('volume'), expected.get('volume'),
        msg='Volume settings are set to %s, not matching with default '
            'volume settings %s.' % (volume, expected))

  def testLoginLogoutVolume(self):
    """Test that volume settings are preserved after login and logout"""
    before_login = self.GetVolumeInfo()
    self._Login()
    after_login = self.GetVolumeInfo()
    self.assertEqual(before_login, after_login,
        msg='Before login : %s and after login : %s, volume states are not '
            'matching' % (before_login, after_login))
    self.Logout()
    after_logout = self.GetVolumeInfo()
    self.assertEqual(after_login, after_logout,
        msg='Before logout : %s and after logout : %s, volume states are not '
            'matching' % (after_login, after_logout))

  def testLoginLockoutVolume(self):
    """Test that volume changes on the lock screen, are preserved"""
    lock_volume = {u'volume': 50.000000000000014, u'is_mute': True}
    self._Login()
    login_vol = self.GetVolumeInfo()
    self.LockScreen()
    self.SetVolume(lock_volume['volume'])
    self.SetMute(lock_volume['is_mute'])
    self.UnlockScreen(self.GetPrivateInfo()['test_google_account']['password'])
    after_login = self.GetVolumeInfo()
    self.assertEqual(lock_volume, after_login,
        msg='Locking screen volume changes are not preserved')


if __name__ == '__main__':
  pyauto_functional.Main()