|  | # Copyright (c) 2013 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. | 
|  |  | 
|  | from autotest_lib.server import utils | 
|  |  | 
|  | AUTHOR = "ChromeOS Team" | 
|  | NAME = "firmware_ECHash" | 
|  | PURPOSE = "Servo based EC hash recompute test" | 
|  | CRITERIA = "This test will fail if EC failed to recompute its hash." | 
|  | ATTRIBUTES = "suite:faft_ec, suite:faft_ec_fw_qual, suite:faft_ec_tot" | 
|  | TIME = "SHORT" | 
|  | TEST_CATEGORY = "Functional" | 
|  | TEST_CLASS = "firmware" | 
|  | TEST_TYPE = "server" | 
|  | JOB_RETRIES = 0 | 
|  | DEPENDENCIES = "ec:cros, servo_state:WORKING" | 
|  | PY_VERSION = 3 | 
|  |  | 
|  | DOC = """ | 
|  | This test ensures that the AP will ask the EC to recompute the hash if | 
|  | the current hash isn't the right size/offset. Use 'ectool echash' command | 
|  | to request the hash of some other part of EC EEPROM, then warm-reboot | 
|  | the AP and use 'ectool echash' to see what hash the EC has after booting. | 
|  | AP-RW should have requested the EC recompute the hash of EC-RW. | 
|  | """ | 
|  |  | 
|  | args_dict = utils.args_to_dict(args) | 
|  | servo_args = hosts.CrosHost.get_servo_arguments(args_dict) | 
|  |  | 
|  | def run_echash(machine): | 
|  | host = hosts.create_host(machine, servo_args=servo_args) | 
|  | job.run_test("firmware_ECHash", host=host, cmdline_args=args, | 
|  | disable_sysinfo=True) | 
|  |  | 
|  | parallel_simple(run_echash, machines) |