| # Copyright 2014 The Chromium OS 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 json |
| import os |
| |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.cros import cryptohome |
| from autotest_lib.client.cros import enterprise_base |
| from autotest_lib.client.bin import utils |
| |
| |
| class enterprise_PowerManagement(enterprise_base.EnterpriseTest): |
| """Verify the power management policy setting.""" |
| version = 1 |
| |
| |
| def setup(self): |
| os.chdir(self.srcdir) |
| utils.make('OUT_DIR=.') |
| |
| |
| def initialize(self): |
| self.import_dmserver(self.srcdir) |
| super(enterprise_PowerManagement, self).initialize() |
| |
| |
| def _setup_lock_policy(self): |
| """Setup policy to lock screen in 10 seconds of idle time.""" |
| self._screen_lock_delay = 10 |
| screen_lock_policy = '{ "AC": %d }' % (self._screen_lock_delay*1000) |
| |
| policy_blob = """{ |
| "google/chromeos/user": { |
| "mandatory": { |
| "ScreenLockDelays": %s |
| } |
| }, |
| "managed_users": [ "*" ], |
| "policy_user": "%s", |
| "current_key_index": 0, |
| "invalidation_source": 16, |
| "invalidation_name": "test_policy" |
| }""" % (json.dumps(screen_lock_policy), self.USERNAME) |
| |
| self.setup_policy(policy_blob) |
| |
| |
| def _setup_logout_policy(self): |
| """Setup policy to logout in 10 seconds of idle time.""" |
| self._screen_logout_delay = 10 |
| idle_settings_policy = '''{ |
| "AC": { |
| "Delays": { |
| "ScreenDim": 2000, |
| "ScreenOff": 3000, |
| "IdleWarning": 4000, |
| "Idle": %d |
| }, |
| "IdleAction": "Logout" |
| } |
| }''' % (self._screen_logout_delay*1000) |
| |
| policy_blob = """{ |
| "google/chromeos/user": { |
| "mandatory": { |
| "PowerManagementIdleSettings": %s |
| } |
| }, |
| "managed_users": [ "*" ], |
| "policy_user": "%s", |
| "current_key_index": 0, |
| "invalidation_source": 16, |
| "invalidation_name": "test_policy" |
| }""" % (json.dumps(idle_settings_policy), self.USERNAME) |
| |
| self.setup_policy(policy_blob) |
| |
| |
| def run_once(self): |
| """Run the power management policy tests.""" |
| self._setup_lock_policy() |
| with self.create_chrome(autotest_ext=True) as cr: |
| utils.poll_for_condition( |
| lambda: cr.login_status['isScreenLocked'], |
| exception=error.TestFail('User is not locked'), |
| timeout=self._screen_lock_delay*2, |
| sleep_interval=1, |
| desc='Expects to find Chrome locked.') |
| |
| self._setup_logout_policy() |
| with self.create_chrome() as cr: |
| utils.poll_for_condition( |
| lambda: not cryptohome.is_vault_mounted(user=self.USERNAME, |
| allow_fail=True), |
| exception=error.TestFail('User is not logged out'), |
| timeout=self._screen_logout_delay*2, |
| sleep_interval=1, |
| desc='Expects to find user logged out.') |
| |