# 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_au_1, suite:faft_bios_au_2, suite:faft_bios_au_3, suite:faft_lv2, suite:faft_normal, suite:faft_bios_ec3po, suite:faft_bios_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 4

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)
