# 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")

# Set to true to enable tracing.  For now this cannot be enabled by default due to
# https://fxbug.dev/66819#c88.  Enabling it trips an LSAN bug that is triggered by the
# implementation of trace_provider_create_with_fdio.
tracing_enabled = false

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",
  ]
}
