You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.4 KiB
110 lines
3.4 KiB
# Copyright 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.
|
|
|
|
load("@proto//chromiumos/config/api/test/metadata/v1/metadata.proto",
|
|
metadata_pb = "chromiumos.config.api.test.metadata.v1"
|
|
)
|
|
load("@proto//google/protobuf/struct.proto", google_pb = "google.protobuf")
|
|
|
|
|
|
|
|
_TEST_NAME_PREFIX = "remoteTestDrivers/tauto/tests/"
|
|
|
|
_COMMON_DEPS = {
|
|
"bluetooth": "scope.hardware_topology.bluetooth == scope.hardware_features.PRESENT",
|
|
}
|
|
|
|
|
|
|
|
def _define_test(
|
|
name,
|
|
*,
|
|
suites = [],
|
|
main_package = 'NOT SET',
|
|
main_args = [],
|
|
):
|
|
"""Define a single Tauto test.
|
|
|
|
Args:
|
|
name: The globally unique name of the test, as known to the scheduling
|
|
infrastructure.
|
|
suites: A list of test suites this test belongs to, without the 'suite:'
|
|
prefix.
|
|
main_package: Python package that contains the entry function.
|
|
e.g. autotest_lib.client.site_tests.dummy_Pass.dummy_Pass
|
|
main_args: A list of arguments to the entry function.
|
|
"""
|
|
test_args = google_pb.ListValue(values = [
|
|
google_pb.Value(string_value = a) for a in main_args
|
|
])
|
|
informational = metadata_pb.Informational(
|
|
details = google_pb.Struct(fields = {
|
|
"main": google_pb.Value(struct_value = google_pb.Struct(fields = {
|
|
"python_package": google_pb.Value(string_value = main_package),
|
|
"test_args": google_pb.Value(list_value = test_args),
|
|
})),
|
|
}),
|
|
)
|
|
return metadata_pb.Test(
|
|
name = _TEST_NAME_PREFIX + name,
|
|
attributes = [metadata_pb.Attribute(name = "suite:" + s)
|
|
for s in suites],
|
|
informational = informational,
|
|
)
|
|
|
|
|
|
def _define_client_test(
|
|
test_name,
|
|
purpose,
|
|
doc,
|
|
owner_emails = [],
|
|
owner_groups = [],
|
|
suites = [],
|
|
common_deps = [],
|
|
dep_expressions = [],
|
|
named_args = {},
|
|
):
|
|
|
|
attrs = [metadata_pb.Attribute(name = "suite:" + s) for s in suites]
|
|
|
|
contacts = ([metadata_pb.Contact(email = e) for e in owner_emails]
|
|
+ [metadata_pb.Contact(mdb_group = g) for g in owner_groups])
|
|
|
|
details = google_pb.Struct(fields = {
|
|
"purpose": google_pb.Value(string_value = purpose),
|
|
"doc": google_pb.Value(string_value = doc),
|
|
"named_args": google_pb.Value(string_value = to_json(named_args))
|
|
})
|
|
|
|
info = metadata_pb.Informational(
|
|
authors = contacts,
|
|
details = details,
|
|
)
|
|
|
|
missing = [dep for dep in common_deps if dep not in _COMMON_DEPS]
|
|
if missing:
|
|
fail(str(missing) + " are not known common dependencies! " +
|
|
"Please add to test_common.star or check spelling.")
|
|
|
|
dep_strs = dep_expressions + [_COMMON_DEPS[dep] for dep in common_deps]
|
|
expression = " && ".join(dep_strs)
|
|
deps = [metadata_pb.DUTCondition(expression = expression)]
|
|
|
|
return metadata_pb.Test(
|
|
name = _TEST_NAME_PREFIX + test_name,
|
|
attributes = attrs,
|
|
informational = info,
|
|
dut_constraint = metadata_pb.DUTConstraint(
|
|
config = metadata_pb.DUTConfigConstraint(
|
|
expression = expression,
|
|
)
|
|
),
|
|
)
|
|
|
|
|
|
test_common = struct(
|
|
define_client_test = _define_client_test,
|
|
define_test = _define_test,
|
|
)
|