普通文本  |  102行  |  3.28 KB

# 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.')