188135049140d13f6fa6585e17fb335c6f6f61deeDave Tu# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 288135049140d13f6fa6585e17fb335c6f6f61deeDave Tu# Use of this source code is governed by a BSD-style license that can be 388135049140d13f6fa6585e17fb335c6f6f61deeDave Tu# found in the LICENSE file. 488135049140d13f6fa6585e17fb335c6f6f61deeDave Tu 588135049140d13f6fa6585e17fb335c6f6f61deeDave Tuimport random, time 6bee23c2b0ca824c12c39e7a5a4cd4d2a313918b7Eric Lifrom autotest_lib.client.common_lib import error 7bee23c2b0ca824c12c39e7a5a4cd4d2a313918b7Eric Lifrom autotest_lib.client.cros import power_strip 888135049140d13f6fa6585e17fb335c6f6f61deeDave Tufrom autotest_lib.server import autotest, test 988135049140d13f6fa6585e17fb335c6f6f61deeDave Tu 1088135049140d13f6fa6585e17fb335c6f6f61deeDave Tuclass platform_CryptohomeSyncStressServer(test.test): 1188135049140d13f6fa6585e17fb335c6f6f61deeDave Tu version = 1 1288135049140d13f6fa6585e17fb335c6f6f61deeDave Tu max_delay = 120 1388135049140d13f6fa6585e17fb335c6f6f61deeDave Tu 1488135049140d13f6fa6585e17fb335c6f6f61deeDave Tu def run_once(self, host, power_addr, outlet, username, password): 1588135049140d13f6fa6585e17fb335c6f6f61deeDave Tu # check parameters 1688135049140d13f6fa6585e17fb335c6f6f61deeDave Tu if power_addr == None: 1788135049140d13f6fa6585e17fb335c6f6f61deeDave Tu raise error.TestFail('Missing power_addr argument.') 1888135049140d13f6fa6585e17fb335c6f6f61deeDave Tu if outlet == None: 1988135049140d13f6fa6585e17fb335c6f6f61deeDave Tu raise error.TestFail('Missing outlet argument.') 2088135049140d13f6fa6585e17fb335c6f6f61deeDave Tu if username == None: 2188135049140d13f6fa6585e17fb335c6f6f61deeDave Tu raise error.TestFail('Missing user parameter.') 2288135049140d13f6fa6585e17fb335c6f6f61deeDave Tu if password == None: 2388135049140d13f6fa6585e17fb335c6f6f61deeDave Tu raise error.TestFail('Missing pass parameter.') 2488135049140d13f6fa6585e17fb335c6f6f61deeDave Tu 2588135049140d13f6fa6585e17fb335c6f6f61deeDave Tu outlet = int(outlet) 2688135049140d13f6fa6585e17fb335c6f6f61deeDave Tu 2788135049140d13f6fa6585e17fb335c6f6f61deeDave Tu at = autotest.Autotest(host) 2888135049140d13f6fa6585e17fb335c6f6f61deeDave Tu boot_id = host.get_boot_id() 2988135049140d13f6fa6585e17fb335c6f6f61deeDave Tu 3088135049140d13f6fa6585e17fb335c6f6f61deeDave Tu # log in and verify things work 3188135049140d13f6fa6585e17fb335c6f6f61deeDave Tu self.job.set_state('client_fail', True) 3288135049140d13f6fa6585e17fb335c6f6f61deeDave Tu at.run_test('platform_CryptohomeSyncStress', 3388135049140d13f6fa6585e17fb335c6f6f61deeDave Tu username=username, password=password) 3488135049140d13f6fa6585e17fb335c6f6f61deeDave Tu if self.job.get_state('client_fail'): 3588135049140d13f6fa6585e17fb335c6f6f61deeDave Tu raise error.TestFail('Client test failed') 3688135049140d13f6fa6585e17fb335c6f6f61deeDave Tu 3788135049140d13f6fa6585e17fb335c6f6f61deeDave Tu # wait for some delay 3888135049140d13f6fa6585e17fb335c6f6f61deeDave Tu delay = random.randint(0, self.max_delay) 3988135049140d13f6fa6585e17fb335c6f6f61deeDave Tu print 'Delaying for %s seconds and then restarting.' % (delay) 4088135049140d13f6fa6585e17fb335c6f6f61deeDave Tu time.sleep(delay) 4188135049140d13f6fa6585e17fb335c6f6f61deeDave Tu 4288135049140d13f6fa6585e17fb335c6f6f61deeDave Tu # restart client 4388135049140d13f6fa6585e17fb335c6f6f61deeDave Tu power_strip.PowerStrip(power_addr).reboot(outlet) 4488135049140d13f6fa6585e17fb335c6f6f61deeDave Tu host.wait_for_restart(old_boot_id=boot_id) 45