blob: c505f13953515f5d6134053c67b45f1ee3c71518 [file] [log] [blame]
# Copyright 2020 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/test.gni")
import("//src/storage/testing/driver_test_realm.gni")
import("//src/storage/volume_image/fvm/generate_fvm.gni")
source_set("options") {
public = [ "options.h" ]
public_deps = [ "//src/storage/volume_image:volume-descriptor" ]
}
source_set("fvm-descriptor") {
sources = [ "fvm_descriptor.cc" ]
public = [ "fvm_descriptor.h" ]
public_deps = [
":options",
"//sdk/lib/fit-promise",
"//src/storage/fvm",
"//src/storage/volume_image:partition",
]
deps = [ "//src/storage/volume_image/utils:block-utils" ]
}
source_set("fvm-metadata") {
sources = [ "fvm_metadata.cc" ]
public = [ "fvm_metadata.h" ]
public_deps = [
"//sdk/lib/fit-promise",
"//src/storage/fvm",
"//src/storage/volume_image/utils:io-interfaces",
]
deps = [ "//zircon/system/ulib/fbl" ]
}
source_set("fvm-image-extend") {
sources = [ "fvm_image_extend.cc" ]
public = [ "fvm_image_extend.h" ]
public_deps = [
":options",
"//src/storage/volume_image/utils:io-interfaces",
]
deps = [ ":fvm-metadata" ]
}
source_set("fvm-sparse-image") {
sources = [
"fvm_sparse_image.cc",
"fvm_sparse_image_reader.cc",
]
public = [ "fvm_sparse_image.h" ]
public_deps = [
":fvm-descriptor",
"//sdk/lib/fit-promise",
"//src/storage/fvm",
"//src/storage/volume_image/utils:compression-interfaces",
"//src/storage/volume_image/utils:io-interfaces",
]
deps = [
"//src/storage/volume_image/utils:block-utils",
"//src/storage/volume_image/utils:lz4-compression",
"//src/storage/volume_image/utils:lz4-decompress-reader",
]
}
source_set("fvm-unpack") {
sources = [ "fvm_unpack.cc" ]
public = [ "fvm_unpack.h" ]
public_deps = [
"//sdk/lib/fit-promise",
"//src/storage/fvm",
"//src/storage/volume_image/utils:io-interfaces",
]
deps = [
":fvm-metadata",
"//src/storage/volume_image/utils:fd-io",
"//zircon/system/ulib/fbl",
]
}
# This source set is included in the volume image test package in the directory above.
source_set("fvm-test") {
testonly = true
sources = [
"fvm_descriptor_test.cc",
"fvm_image_extend_test.cc",
"fvm_sparse_image_test.cc",
"fvm_unpack_test.cc",
]
deps = [
":fvm-descriptor",
":fvm-image-extend",
":fvm-sparse-image",
":fvm-unpack",
"//sdk/lib/stdcompat",
"//src/lib/json_parser",
"//src/storage/fvm",
"//src/storage/volume_image/serialization:schema",
"//src/storage/volume_image/utils:block-utils",
"//src/storage/volume_image/utils:guid",
"//src/storage/volume_image/utils:lz4-compression",
"//third_party/googletest:gmock",
"//third_party/googletest:gtest",
"//zircon/third_party/ulib/lz4",
]
}
test_data_image_path = "$target_out_dir/test_data.blk"
test_blob_image_path = "$target_out_dir/test_blob.blk"
compiled_action("test_data.blk") {
testonly = true
visibility = [ ":*" ]
tool = "//src/storage/minfs/tools:minfs"
outputs = [ test_data_image_path ]
args = [
rebase_path(test_data_image_path, root_build_dir),
"create",
]
}
compiled_action("test_blob.blk") {
testonly = true
visibility = [ ":*" ]
tool = "//src/storage/blobfs/tools:blobfs"
outputs = [ test_blob_image_path ]
args = [
rebase_path(test_blob_image_path, root_build_dir),
"create",
]
}
test_fvm_data_partition = {
type = "data"
dep = ":test_data.blk"
minimum_inodes =
"600000" # Deliberately chosen so that partition is expanded.
minimum_data_bytes = "10M"
maximum_bytes = "218103808"
}
test_fvm_blob_partition = {
type = "blob"
dep = ":test_blob.blk"
}
generate_fvm("test_fvm.sparse.blk") {
testonly = true
output_name = "$target_out_dir/test_fvm.sparse.blk"
deps = [
":test_blob.blk",
":test_data.blk",
]
args = [
"sparse",
"--compress",
"lz4",
"--slice",
"8388608",
]
partitions = [
# Place blobfs first, since it is A/B enabled (thus allocates extra slices for B-copies of some
# metadata) and bugs are likely to be detected in partitions added after this partition.
test_fvm_blob_partition,
test_fvm_data_partition,
]
}
resource("test_fvm.sparse.blk-resource") {
testonly = true
sources = [ "$target_out_dir/test_fvm.sparse.blk" ]
outputs = [ "data/{{source_file_part}}" ]
deps = [ ":test_fvm.sparse.blk" ]
}
test("fvm_sparse_image_reader_test") {
testonly = true
sources = [ "fvm_sparse_image_reader_test.cc" ]
deps = [
":fvm-sparse-image",
"//sdk/lib/component/incoming/cpp",
"//sdk/lib/device-watcher/cpp",
"//src/lib/fxl/test:gtest_main",
"//src/storage/lib/block_client/cpp",
"//src/storage/lib/fs_management",
"//src/storage/testing:storage_driver_test_support",
"//src/storage/volume_image/ftl:ftl-image",
"//src/storage/volume_image/utils:fd-io",
"//third_party/googletest:gtest",
"//zircon/system/ulib/fbl",
]
}
storage_driver_test_realm_v2_component(
"fvm-sparse-image-reader-tests-component") {
component_name = "fvm-sparse-image-reader-tests"
manifest = "sparse-image-reader-tests.cml"
deps = [
":fvm_sparse_image_reader_test",
":test_fvm.sparse.blk-resource",
]
}
fuchsia_test_package("fvm-sparse-image-reader-tests") {
test_specs = {
log_settings = {
max_severity = "ERROR"
}
}
test_components = [ ":fvm-sparse-image-reader-tests-component" ]
deps = [
"//src/storage/blobfs/bin:component",
"//src/storage/minfs/bin:minfs-component",
]
}
group("tests") {
testonly = true
deps = [ ":fvm-sparse-image-reader-tests" ]
}