| # 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/test.gni") |
| import("//src/storage/testing/driver_test_realm.gni") |
| |
| source_set("options") { |
| public = [ "adapter_options.h" ] |
| } |
| |
| source_set("blobfs-partition") { |
| sources = [ "blobfs_partition.cc" ] |
| public = [ "blobfs_partition.h" ] |
| public_deps = [ |
| ":options", |
| "//sdk/lib/fit", |
| "//src/storage/volume_image:partition", |
| "//src/storage/volume_image/fvm:options", |
| "//src/storage/volume_image/utils:io-interfaces", |
| ] |
| deps = [ |
| "//src/storage/blobfs", |
| "//src/storage/fvm", |
| "//src/storage/volume_image/utils:block-utils", |
| ] |
| } |
| |
| source_set("minfs-partition") { |
| sources = [ "minfs_partition.cc" ] |
| public = [ "minfs_partition.h" ] |
| public_deps = [ |
| ":options", |
| "//sdk/lib/fit", |
| "//src/storage/volume_image:partition", |
| "//src/storage/volume_image/fvm:options", |
| "//src/storage/volume_image/utils:io-interfaces", |
| ] |
| deps = [ |
| "//src/storage/fvm", |
| "//src/storage/minfs", |
| "//src/storage/volume_image/utils:block-utils", |
| ] |
| } |
| |
| source_set("empty-partition") { |
| sources = [ "empty_partition.cc" ] |
| public = [ "empty_partition.h" ] |
| public_deps = [ |
| ":options", |
| "//sdk/lib/fit", |
| "//src/storage/volume_image:partition", |
| "//src/storage/volume_image/fvm:options", |
| "//src/storage/volume_image/utils:io-interfaces", |
| ] |
| deps = [ "//src/storage/fvm" ] |
| } |
| |
| source_set("commands") { |
| sources = [ |
| "commands/arguments.cc", |
| "commands/create.cc", |
| "commands/extend.cc", |
| "commands/pave.cc", |
| "commands/size.cc", |
| ] |
| public = [ "commands.h" ] |
| |
| public_deps = [ |
| ":options", |
| "//sdk/lib/fit", |
| "//src/storage/volume_image/fvm:options", |
| ] |
| |
| deps = [ |
| ":blobfs-partition", |
| ":empty-partition", |
| ":minfs-partition", |
| ":mtd-writer", |
| "//src/storage/fvm", |
| "//src/storage/volume_image/fvm:fvm-descriptor", |
| "//src/storage/volume_image/fvm:fvm-image-extend", |
| "//src/storage/volume_image/fvm:fvm-sparse-image", |
| "//src/storage/volume_image/utils:block-io", |
| "//src/storage/volume_image/utils:fd-io", |
| "//src/storage/volume_image/utils:lz4-compression", |
| ] |
| } |
| |
| source_set("mtd-writer") { |
| public = [ "mtd_writer.h" ] |
| deps = [ "//src/storage/volume_image/utils:io-interfaces" ] |
| public_deps = [ |
| "//sdk/lib/fit-promise", |
| "//src/storage/volume_image/ftl:ftl-io", |
| "//src/storage/volume_image/utils:block-io", |
| ] |
| |
| if (current_os == "linux") { |
| sources = [ "mtd_writer_linux.cc" ] |
| deps += [ |
| "//src/storage/lib/ftl-mtd", |
| "//zircon/system/ulib/mtd", |
| "//zircon/third_party/ulib/safemath", |
| ] |
| } else { |
| sources = [ "mtd_writer_default.cc" ] |
| } |
| } |
| |
| test_blob_image_label = ":test-blobfs-image-gen($default_toolchain)" |
| test_blob_image_path = |
| get_label_info(test_blob_image_label, "target_out_dir") + "/test_blobfs.blk" |
| test_files = [ |
| "test_data/file1.ext1", |
| "test_data/file2.ext2", |
| "test_data/file3.ext3", |
| ] |
| |
| compiled_action("test-blobfs-image-gen") { |
| testonly = true |
| visibility = [ ":*" ] |
| tool = "//src/storage/blobfs/tools:blobfs" |
| inputs = test_files |
| outputs = [ test_blob_image_path ] |
| args = [ |
| rebase_path(test_blob_image_path, root_build_dir), |
| "create", |
| ] |
| |
| foreach(test_file, test_files) { |
| args += [ |
| "--blob", |
| rebase_path(test_file, root_build_dir), |
| ] |
| } |
| } |
| |
| test_minfs_image_label = ":test-minfs-image-gen($default_toolchain)" |
| test_minfs_image_path = |
| get_label_info(test_minfs_image_label, "target_out_dir") + "/test_minfs.blk" |
| test_minfs_image_manifest_path = |
| get_label_info(test_minfs_image_label, "target_out_dir") + |
| "/test_minfs.manifest" |
| |
| generated_file("test-minfs-image-manifest") { |
| outputs = [ test_minfs_image_manifest_path ] |
| output_conversion = "list lines" |
| contents = [] |
| foreach(test_file, test_files) { |
| test_file_path = |
| rebase_path(test_file, |
| get_label_info(test_minfs_image_label, "target_out_dir")) |
| contents += [ "$test_file=$test_file_path" ] |
| } |
| } |
| |
| compiled_action("test-minfs-image-gen") { |
| testonly = true |
| visibility = [ ":*" ] |
| tool = "//src/storage/minfs/tools:minfs" |
| inputs = test_files + [ test_minfs_image_manifest_path ] |
| outputs = [ test_minfs_image_path ] |
| args = [ |
| rebase_path(test_minfs_image_path, root_build_dir), |
| "create", |
| ] |
| |
| args += [ |
| "--manifest", |
| rebase_path(test_minfs_image_manifest_path, root_build_dir), |
| ] |
| |
| deps = [ ":test-minfs-image-manifest" ] |
| } |
| |
| test_fvm_sparse_image_label = ":test-fvm-sparse-image-gen($default_toolchain)" |
| test_fvm_sparse_image_path = |
| get_label_info(test_fvm_sparse_image_label, "target_out_dir") + |
| "/test_fvm.sparse.blk" |
| compiled_action("test-fvm-sparse-image-gen") { |
| testonly = true |
| visibility = [ ":*" ] |
| tool = "//src/storage/bin/fvm" |
| inputs = [ |
| test_minfs_image_path, |
| test_blob_image_path, |
| ] |
| outputs = [ test_fvm_sparse_image_path ] |
| args = [ |
| rebase_path(test_fvm_sparse_image_path, root_build_dir), |
| "sparse", |
| "--compress", |
| "lz4", |
| "--slice", |
| "8388608", |
| "--blob", |
| rebase_path(test_blob_image_path, root_build_dir), |
| "--data", |
| rebase_path(test_minfs_image_path, root_build_dir), |
| "--minimum-inodes", |
| "600000", |
| "--minimum-data-bytes", |
| "10M", |
| "--maximum-bytes", |
| "218103808", |
| "--reserve-slices", |
| "4", |
| ] |
| |
| deps = [ |
| ":test-blobfs-image-gen", |
| ":test-minfs-image-gen", |
| ] |
| } |
| |
| test_fvm_sparse_small_image_label = |
| ":test-fvm-sparse-small-image-gen($default_toolchain)" |
| test_fvm_sparse_small_image_path = |
| get_label_info(test_fvm_sparse_small_image_label, "target_out_dir") + |
| "/test_fvm_small.sparse.blk" |
| compiled_action("test-fvm-sparse-small-image-gen") { |
| testonly = true |
| visibility = [ ":*" ] |
| tool = "//src/storage/bin/fvm" |
| inputs = [ |
| test_minfs_image_path, |
| test_blob_image_path, |
| ] |
| outputs = [ test_fvm_sparse_small_image_path ] |
| args = [ |
| rebase_path(test_fvm_sparse_small_image_path, root_build_dir), |
| "sparse", |
| "--compress", |
| "lz4", |
| "--slice", |
| "32k", |
| "--blob", |
| rebase_path(test_blob_image_path, root_build_dir), |
| "--data", |
| rebase_path(test_minfs_image_path, root_build_dir), |
| "--reserve-slices", |
| "4", |
| ] |
| |
| deps = [ |
| ":test-blobfs-image-gen", |
| ":test-minfs-image-gen", |
| ] |
| } |
| |
| config("test-image-path") { |
| if (is_host) { |
| output_path = |
| rebase_path(get_label_info("host-test-images", "root_out_dir"), |
| root_build_dir) |
| defines = [ "STORAGE_VOLUME_IMAGE_ADAPTER_TEST_IMAGE_PATH=\"$output_path/adapter_test_images/\"" ] |
| } else { |
| defines = [ |
| "STORAGE_VOLUME_IMAGE_ADAPTER_TEST_IMAGE_PATH=\"pkg/data/test_images/\"", |
| ] |
| } |
| } |
| |
| if (is_host) { |
| host_test_data("host-test-images") { |
| sources = [ |
| test_blob_image_path, |
| test_fvm_sparse_image_path, |
| test_fvm_sparse_small_image_path, |
| test_minfs_image_path, |
| ] |
| deps = [ |
| ":test-blobfs-image-gen($default_toolchain)", |
| ":test-fvm-sparse-image-gen($default_toolchain)", |
| ":test-fvm-sparse-small-image-gen($default_toolchain)", |
| ":test-minfs-image-gen($default_toolchain)", |
| ] |
| outputs = [ "$root_out_dir/adapter_test_images/{{source_file_part}}" ] |
| } |
| } |
| |
| resource("adapter-test-images") { |
| testonly = true |
| sources = [ |
| "$target_out_dir/test_blobfs.blk", |
| "$target_out_dir/test_fvm.sparse.blk", |
| "$target_out_dir/test_fvm_small.sparse.blk", |
| "$target_out_dir/test_minfs.blk", |
| ] |
| outputs = [ "data/test_images/{{source_file_part}}" ] |
| deps = [ |
| ":test-blobfs-image-gen", |
| ":test-fvm-sparse-image-gen", |
| ":test-fvm-sparse-small-image-gen", |
| ":test-minfs-image-gen", |
| ] |
| } |
| |
| source_set("adapter-tests") { |
| testonly = true |
| sources = [ |
| "blobfs_partition_test.cc", |
| "commands/arguments_test.cc", |
| "commands/create_test.cc", |
| "commands/extend_test.cc", |
| "commands/file_client.cc", |
| "commands/pave_test.cc", |
| "commands/size_test.cc", |
| "empty_partition_test.cc", |
| "minfs_partition_test.cc", |
| ] |
| deps = [ |
| ":blobfs-partition", |
| ":commands", |
| ":empty-partition", |
| ":minfs-partition", |
| "//src/lib/fxl/test:gtest_main", |
| "//src/storage/blobfs", |
| "//src/storage/fvm", |
| "//src/storage/gpt", |
| "//src/storage/minfs", |
| "//src/storage/volume_image/fvm:fvm-image-extend", |
| "//src/storage/volume_image/fvm:fvm-sparse-image", |
| "//src/storage/volume_image/utils:block-utils", |
| "//src/storage/volume_image/utils:fd-io", |
| "//src/storage/volume_image/utils:fd-test-helper", |
| "//src/storage/volume_image/utils:lz4-compression", |
| "//third_party/googletest:gmock", |
| "//third_party/googletest:gtest", |
| ] |
| |
| if (current_os == "linux") { |
| sources += [ "mtd_writer_test.cc" ] |
| deps += [ |
| ":mtd-writer", |
| "//src/storage/lib/ftl-mtd", |
| "//zircon/system/ulib/mtd", |
| ] |
| } |
| |
| configs += [ ":test-image-path" ] |
| |
| if (is_host) { |
| deps += [ ":host-test-images" ] |
| } |
| } |
| |
| test("adapter-integration-test") { |
| sources = [ "adapter_integration_test.cc" ] |
| configs += [ ":test-image-path" ] |
| deps = [ |
| ":blobfs-partition", |
| ":empty-partition", |
| ":minfs-partition", |
| "//sdk/fidl/fuchsia.hardware.block.volume:fuchsia.hardware.block.volume_cpp_wire", |
| "//src/lib/fxl/test:gtest_main", |
| "//src/lib/storage/block_client/cpp", |
| "//src/lib/storage/fs_management/cpp:fs-management", |
| "//src/storage/blobfs", |
| "//src/storage/fvm", |
| "//src/storage/testing:storage_driver_test_support", |
| "//src/storage/volume_image/fvm:fvm-descriptor", |
| "//src/storage/volume_image/fvm:fvm-sparse-image", |
| "//src/storage/volume_image/utils:block-utils", |
| "//src/storage/volume_image/utils:fd-io", |
| "//third_party/googletest:gmock", |
| "//third_party/googletest:gtest", |
| "//zircon/system/ulib/fdio-caller", |
| ] |
| } |
| |
| storage_driver_test_realm_v2_component("adapter-integration-test-component") { |
| component_name = "adapter-integration-test" |
| manifest = "adapter-integration-test.cml" |
| deps = [ |
| ":adapter-integration-test", |
| ":adapter-test-images", |
| ] |
| } |
| |
| fuchsia_test_package("storage-volume-image-adapter-integration-tests") { |
| test_specs = { |
| log_settings = { |
| max_severity = "ERROR" |
| } |
| } |
| test_components = [ ":adapter-integration-test-component" ] |
| deps = [ |
| "//src/storage/bin/blobfs:component", |
| "//src/storage/bin/minfs:minfs-component", |
| ] |
| } |
| |
| group("tests") { |
| testonly = true |
| deps = [ ":storage-volume-image-adapter-integration-tests" ] |
| } |