blob: 0b2a5b4a1499afccd9b79829fc0b2c1a90ecbaad [file] [log] [blame]
# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/components.gni")
import("//build/dist/generated_resource.gni")
import("//build/json/validate_json.gni")
import("//build/test.gni")
import("//src/storage/testing/driver_test_realm.gni")
# Generates config that will work with the filesystem test framework.
#
# data_deps (optional)
# Additional dependencies to be included with the config
template("fs_test_config") {
name = target_name
generated_resource("${name}_fs_test_config") {
testonly = true
if (defined(invoker.data_deps)) {
data_deps = invoker.data_deps
}
contents = {
forward_variables_from(invoker, "*", [ "data_deps" ])
}
if (!defined(contents.name)) {
contents.name = name
}
if (!defined(contents.binary_path) && !defined(contents.disk_format) &&
!defined(contents.library)) {
contents.binary_path = "/pkg/bin/${name}"
}
output_conversion = "json"
outputs = [ "config/config.json" ]
}
config_outputs = get_target_outputs(":${name}_fs_test_config")
validate_json("${name}_validate_fs_test_config") {
testonly = true
data = config_outputs[0]
schema = "//src/storage/fs_test/fs_test.schema.json"
deps = [ ":${name}_fs_test_config" ]
}
}
# Instantiates a filesystem test suite.
#
# config (optional)
# Configures the test suite. See //src/storage/fs_test/fs_test.schema.json for the schema. The
# name and binary_path properties will be derived from the target name if not specified. If not
# specified, the caller should ensure suitable config is included via deps.
#
# deps (required)
# This should include the filesystem binary and the config file if not specified above.
#
# omit_components (optional)
# Omit test components from the package.
#
# extra_components (optional)
# Additional test components to be included in the package.
#
# component_deps (optional)
# Additional dependencies applied to every component
template("fs_test_suite") {
suite_name = target_name
if (defined(invoker.config)) {
fs_test_config(suite_name) {
forward_variables_from(invoker.config, "*")
}
}
if (defined(invoker.component_deps)) {
extra_deps = invoker.component_deps
} else {
extra_deps = []
}
storage_driver_test_realm_v2_component("${suite_name}-access-tests") {
deps = [ "//src/storage/fs_test:access_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-append-tests") {
deps = [ "//src/storage/fs_test:append_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-attr-tests") {
deps = [ "//src/storage/fs_test:attr_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-basic-tests") {
deps = [ "//src/storage/fs_test:basic_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component(
"${suite_name}-case-sensitivity-tests") {
deps = [ "//src/storage/fs_test:case_sensitivity_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-clone-tests") {
deps = [ "//src/storage/fs_test:clone_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-corrupt-tests") {
deps = [ "//src/storage/fs_test:corrupt_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-directory-tests") {
deps = [ "//src/storage/fs_test:directory_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-dot-dot-tests") {
deps = [ "//src/storage/fs_test:dot_dot_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-fcntl-tests") {
deps = [ "//src/storage/fs_test:fcntl_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-filename-tests") {
deps = [ "//src/storage/fs_test:filename_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-full-tests") {
deps = [ "//src/storage/fs_test:full_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-inspect-tests") {
deps = [ "//src/storage/fs_test:inspect_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-link-tests") {
deps = [ "//src/storage/fs_test:link_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-lseek-tests") {
deps = [ "//src/storage/fs_test:lseek_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-mmap-tests") {
deps = [ "//src/storage/fs_test:mmap_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-open-tests") {
deps = [ "//src/storage/fs_test:open_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-overflow-tests") {
deps = [ "//src/storage/fs_test:overflow_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-persist-tests") {
deps = [ "//src/storage/fs_test:persist_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component(
"${suite_name}-query-filesystem-tests") {
deps = [ "//src/storage/fs_test:query_filesystem_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-random-op-tests") {
deps = [ "//src/storage/fs_test:random_op_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-realpath-tests") {
deps = [ "//src/storage/fs_test:realpath_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-rename-tests") {
deps = [ "//src/storage/fs_test:rename_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-resize-tests") {
deps = [ "//src/storage/fs_test:resize_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-rw-tests") {
deps = [ "//src/storage/fs_test:rw_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-rw-workers-tests") {
deps = [ "//src/storage/fs_test:rw_workers_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-sparse-tests") {
deps = [ "//src/storage/fs_test:sparse_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-sync-tests") {
deps = [ "//src/storage/fs_test:sync_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-threading-tests") {
deps = [ "//src/storage/fs_test:threading_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-truncate-tests") {
deps = [ "//src/storage/fs_test:truncate_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-unicode-tests") {
deps = [ "//src/storage/fs_test:unicode_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-unlink-tests") {
deps = [ "//src/storage/fs_test:unlink_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-watcher-tests") {
deps = [ "//src/storage/fs_test:watcher_tests" ] + extra_deps
}
fuchsia_test_package("${suite_name}-fs-tests") {
deps = []
if (defined(invoker.deps)) {
deps += invoker.deps
}
if (defined(invoker.config)) {
deps += [
":${suite_name}_fs_test_config",
":${suite_name}_validate_fs_test_config",
]
}
test_specs = {
log_settings = {
max_severity = "ERROR"
}
}
test_components = [
":${suite_name}-access-tests",
":${suite_name}-append-tests",
":${suite_name}-attr-tests",
":${suite_name}-basic-tests",
":${suite_name}-case-sensitivity-tests",
":${suite_name}-clone-tests",
":${suite_name}-corrupt-tests",
":${suite_name}-directory-tests",
":${suite_name}-dot-dot-tests",
":${suite_name}-fcntl-tests",
":${suite_name}-filename-tests",
":${suite_name}-full-tests",
":${suite_name}-inspect-tests",
":${suite_name}-link-tests",
":${suite_name}-lseek-tests",
":${suite_name}-mmap-tests",
":${suite_name}-open-tests",
":${suite_name}-overflow-tests",
":${suite_name}-persist-tests",
":${suite_name}-query-filesystem-tests",
":${suite_name}-random-op-tests",
":${suite_name}-realpath-tests",
":${suite_name}-rename-tests",
":${suite_name}-resize-tests",
":${suite_name}-rw-tests",
":${suite_name}-rw-workers-tests",
":${suite_name}-sparse-tests",
":${suite_name}-sync-tests",
":${suite_name}-threading-tests",
":${suite_name}-truncate-tests",
":${suite_name}-unicode-tests",
":${suite_name}-unlink-tests",
":${suite_name}-watcher-tests",
]
if (defined(invoker.omit_components)) {
test_components -= invoker.omit_components
}
if (defined(invoker.extra_components)) {
test_components += invoker.extra_components
}
}
}
# Instantiates filesystem tests that take longer to run. This takes the same arguments as
# fs_test_suite.
template("slow_fs_test_suite") {
suite_name = target_name
if (defined(invoker.config)) {
fs_test_config(suite_name) {
forward_variables_from(invoker.config, "*")
}
}
if (defined(invoker.component_deps)) {
extra_deps = invoker.component_deps
} else {
extra_deps = []
}
storage_driver_test_realm_v2_component(
"${suite_name}-directory-large-tests") {
deps = [ "//src/storage/fs_test:directory_large_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-max-file-tests") {
deps = [ "//src/storage/fs_test:max_file_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-sparse-large-tests") {
deps = [ "//src/storage/fs_test:sparse_large_tests" ] + extra_deps
}
storage_driver_test_realm_v2_component("${suite_name}-truncate-large-tests") {
deps = [ "//src/storage/fs_test:truncate_large_tests" ] + extra_deps
}
fuchsia_test_package("${suite_name}-slow-fs-tests") {
deps = []
if (defined(invoker.deps)) {
deps += invoker.deps
}
if (defined(invoker.config)) {
deps += [
":${suite_name}_fs_test_config",
":${suite_name}_validate_fs_test_config",
]
}
test_specs = {
environments = [
{
dimensions = emu_env.dimensions
tags = [ "slow" ]
},
]
log_settings = {
max_severity = "ERROR"
}
}
test_components = [
":${suite_name}-directory-large-tests",
":${suite_name}-max-file-tests",
":${suite_name}-sparse-large-tests",
":${suite_name}-truncate-large-tests",
]
if (defined(invoker.omit_components)) {
test_components -= invoker.omit_components
}
if (defined(invoker.extra_components)) {
test_components += invoker.extra_components
}
}
}