# Copyright (c) 2020 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 = "Chrome OS Team"
NAME = "firmware_SysfsVPD"
PURPOSE = "Servo based test for reading VPD data through sysfs"
CRITERIA = "This test will fail if the VPD test string is not read back correctly"
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_ro_qual, suite:faft_bios_rw_qual, suite:faft_lv2, suite:faft_normal, suite:faft_bios_tot"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 0
PY_VERSION = 3

DOC = """
This test writes random test strings to the RO and RW sections of VPD data
and verifies that they can be read through sysfs after a reboot. The test case
fails if the VPD test data is not read back or does not match the generated
string.
"""

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run_sysfsvpd(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_SysfsVPD", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=False, tag="normal")

parallel_simple(run_sysfsvpd, machines)
