# 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/components/fuchsia_unittest_component.gni")
import("//build/fidl/fidl.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/rust/rustc_macro.gni")
import("//src/storage/fs_test/suite.gni")

tracing_enabled = true

fxfs_deps = [
  ":fxfs_macros",
  "//src/lib/async-utils",
  "//src/lib/fuchsia-async",
  "//src/lib/storage/storage_device",
  "//src/storage/lib/interval_tree",
  "//third_party/rust_crates:aes",
  "//third_party/rust_crates:anyhow",
  "//third_party/rust_crates:async-lock",
  "//third_party/rust_crates:async-trait",
  "//third_party/rust_crates:bincode",
  "//third_party/rust_crates:byteorder",
  "//third_party/rust_crates:chacha20",
  "//third_party/rust_crates:either",
  "//third_party/rust_crates:event-listener",
  "//third_party/rust_crates:futures",
  "//third_party/rust_crates:log",
  "//third_party/rust_crates:num-traits",
  "//third_party/rust_crates:once_cell",
  "//third_party/rust_crates:pin-project",
  "//third_party/rust_crates:rand",
  "//third_party/rust_crates:serde",
  "//third_party/rust_crates:slab",
  "//third_party/rust_crates:static_assertions",
  "//third_party/rust_crates:thiserror",
  "//third_party/rust_crates:uuid",
  "//third_party/rust_crates:xts-mode",
]

fxfs_test_deps = [ "//third_party/rust_crates:assert_matches" ]

fxfs_sources = [
  "src/crypt.rs",
  "src/data_buffer.rs",
  "src/debug_assert_not_too_long.rs",
  "src/errors.rs",
  "src/ff1.rs",
  "src/filesystem.rs",
  "src/fsck.rs",
  "src/fsck/errors.rs",
  "src/fsck/store_scanner.rs",
  "src/fsck/tests.rs",
  "src/lib.rs",
  "src/lsm_tree.rs",
  "src/lsm_tree/merge.rs",
  "src/lsm_tree/simple_persistent_layer.rs",
  "src/lsm_tree/skip_list_layer.rs",
  "src/lsm_tree/types.rs",
  "src/metrics.rs",
  "src/metrics/stubs.rs",
  "src/metrics/traits.rs",
  "src/object_handle.rs",
  "src/object_handle/bootstrap.rs",
  "src/object_store.rs",
  "src/object_store/allocator.rs",
  "src/object_store/allocator/merge.rs",
  "src/object_store/caching_object_handle.rs",
  "src/object_store/directory.rs",
  "src/object_store/extent_record.rs",
  "src/object_store/flush.rs",
  "src/object_store/graveyard.rs",
  "src/object_store/journal.rs",
  "src/object_store/journal/checksum_list.rs",
  "src/object_store/journal/reader.rs",
  "src/object_store/journal/super_block.rs",
  "src/object_store/journal/writer.rs",
  "src/object_store/merge.rs",
  "src/object_store/object_manager.rs",
  "src/object_store/object_record.rs",
  "src/object_store/store_object_handle.rs",
  "src/object_store/testing.rs",
  "src/object_store/testing/fake_allocator.rs",
  "src/object_store/testing/fake_filesystem.rs",
  "src/object_store/transaction.rs",
  "src/object_store/tree.rs",
  "src/object_store/volume.rs",
  "src/object_store/writeback_cache.rs",
  "src/platform.rs",
  "src/range.rs",
  "src/round.rs",
  "src/serialized_types.rs",
  "src/serialized_types/test_traits.rs",
  "src/serialized_types/tests.rs",
  "src/serialized_types/traits.rs",
  "src/serialized_types/types.rs",
  "src/testing.rs",
  "src/testing/fake_object.rs",
  "src/trace.rs",
]

if (is_fuchsia) {
  fxfs_deps += [
    ":fuchsia.fxfs-rustc",
    "//sdk/fidl/fuchsia.fs:fuchsia.fs-rustc",
    "//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block-rustc",
    "//sdk/fidl/fuchsia.hardware.block.volume:fuchsia.hardware.block.volume-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/storage/block_client/rust:remote-block-device",
    "//src/lib/storage/vfs/rust:vfs",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/storage/fidl/fuchsia.fs.startup:fuchsia.fs.startup-rustc",
  ]
  if (tracing_enabled) {
    fxfs_deps += [ "//src/lib/trace/rust:trace" ]
  }
  fxfs_test_deps += [
    ":fxfs-test-manifest",
    "//garnet/lib/rust/files_async",
    "//garnet/lib/rust/io_util",
    "//src/lib/storage/fs_management/rust:fs_management",
    "//src/sys/pkg/lib/fuchsia-merkle",
    "//third_party/rust_crates:zstd",
    "//third_party/zstd",
  ]
  fxfs_sources += [
    "src/platform/fuchsia.rs",
    "src/platform/fuchsia/component.rs",
    "src/platform/fuchsia/device.rs",
    "src/platform/fuchsia/directory.rs",
    "src/platform/fuchsia/errors.rs",
    "src/platform/fuchsia/file.rs",
    "src/platform/fuchsia/metrics.rs",
    "src/platform/fuchsia/node.rs",
    "src/platform/fuchsia/pager.rs",
    "src/platform/fuchsia/remote_crypt.rs",
    "src/platform/fuchsia/runtime.rs",
    "src/platform/fuchsia/testing.rs",
    "src/platform/fuchsia/vmo_data_buffer.rs",
    "src/platform/fuchsia/volume.rs",
    "src/platform/fuchsia/volumes_directory.rs",
  ]
}

rustc_macro("fxfs_macros") {
  name = "fxfs_macros"
  deps = [
    "//third_party/rust_crates:proc-macro2",
    "//third_party/rust_crates:quote",
    "//third_party/rust_crates:syn",
  ]
  source_root = "macros/macros.rs"
  sources = [ "macros/macros.rs" ]
}

rustc_library("lib") {
  edition = "2018"
  with_unit_tests = true
  name = "fxfs"

  deps = fxfs_deps
  sources = fxfs_sources
  test_deps = fxfs_test_deps

  features = []
  if (tracing_enabled && is_fuchsia) {
    features += [ "tracing" ]
  }
  if (is_host) {
    features += [ "insecure_crypt" ]
  }
}

group("fxfs-test-manifest") {
  metadata = {
    test_component_manifest_cml = [
      {
        use = [
          {
            # This allows tests to launch BlobFS
            protocol = [ "fuchsia.process.Launcher" ]
          },
        ]
      },
    ]
  }
}

resource("test_data") {
  sources = [
    # object_store::tests::test_object_id_cipher_upgrade uses this
    "testdata/fxfs_golden.16.0.img.zstd",
  ]
  outputs = [ "data/{{source_file_part}}" ]
}

fuchsia_unittest_component("fxfs-test") {
  deps = [
    ":lib_test",
    ":test_data",
  ]
}

fuchsia_test_package("fxfs-tests") {
  test_components = [ ":fxfs-test" ]
}

rustc_binary("fxfs") {
  edition = "2018"
  deps = [
    ":fuchsia.fxfs-rustc",
    ":lib",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/storage/block_client/rust:remote-block-device",
    "//src/lib/storage/storage_device",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/trace/rust:trace-provider",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:argh",
    "//third_party/rust_crates:log",
  ]
  sources = [ "src/main.rs" ]

  if (tracing_enabled && is_fuchsia) {
    features = [ "tracing" ]
  }
}

fuchsia_component("fxfs_component") {
  manifest = "meta/fxfs.cml"
  component_name = "fxfs"
  deps = [ ":fxfs" ]
}

fuchsia_shell_package("fxfs-bin") {
  deps = [ ":fxfs" ]
}

fidl("fuchsia.fxfs") {
  sources = [ "fidl/fxfs.fidl" ]
  public_deps = [
    "//sdk/fidl/fuchsia.io",
    "//zircon/vdso/zx",
  ]
}

fs_test_config("fxfs") {
  is_component = true
  max_file_size = 9223372036854775807
  supports_hard_links = true
  supports_inspect = true
  supports_resize = true
  supports_mmap = true
  supports_mmap_shared_write = false
  supports_shutdown_on_no_connections = true
  timestamp_granularity = 1
  uses_crypt = true

  options = [
    {
      description = "Fxfs"
      use_fvm = false
      has_min_volume_size = true

      device_block_count = 24576
      device_block_size = 512
    },
  ]
}

test("fxfs-interop-fs") {
  sources = [ "test/fs_test.cc" ]
  deps = [
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/storage/block_client/cpp",
    "//src/storage/fs_test",
    "//src/storage/fs_test:test_crypt_service",
    "//src/storage/fxfs",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fdio-caller",
  ]

  # TODO(fxbug.dev/95833): This target uses the deprecated C bindings.
  # Consider switching to the C++ bindings. See linked bug for details.
  configs += [ "//build/c:fidl-deprecated-c-bindings" ]
}

storage_driver_test_realm_v2_component("fxfs-interop-fs-tests") {
  deps = [
    ":fxfs-interop-fs",
    ":test_fxfs_component_manifest_shard",
  ]
}

expect_includes("test_fxfs_component_manifest_shard") {
  testonly = true
  includes = [ "meta/test_fxfs.shard.cml" ]
}

fs_test_suite("fxfs") {
  deps = [
    ":fxfs_component",
    ":fxfs_fs_test_config",
    "//src/storage/fxfs",
    "//src/storage/fxfs-crypt",
  ]
  extra_components = [ ":fxfs-interop-fs-tests" ]
  component_deps = [
    ":test_fxfs_component_manifest_shard",
    "//src/storage/fs_test:test_crypt_service",
  ]
}

slow_fs_test_suite("fxfs") {
  deps = [
    ":fxfs_component",
    ":fxfs_fs_test_config",
    "//src/storage/fxfs",
    "//src/storage/fxfs-crypt",
  ]
  component_deps = [
    ":test_fxfs_component_manifest_shard",
    "//src/storage/fs_test:test_crypt_service",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":fxfs-fs-tests",
    ":fxfs-slow-fs-tests",
    ":fxfs-tests",
    ":fxfs_component",
    ":lib_test($host_toolchain)",
    "//src/storage/fxfs/tools:tests",
  ]
}
