blob: 04139909ca327872afb6a92f540c7c2673bdc64a [file] [log] [blame]
# Copyright 2019 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/fuzz.gni")
import("//build/test.gni")
static_library("journal") {
friend = [ ":*" ]
public = [
"background_executor.h",
"data_streamer.h",
"format.h",
"header_view.h",
"initializer.h",
"journal.h",
"journal_writer.h",
"replay.h",
"superblock.h",
]
sources = [
"header_view.cc",
"initializer.cc",
]
public_deps = [
"//sdk/lib/fit",
"//sdk/lib/fit-promise",
"//src/storage/lib/vfs/cpp/transaction",
"//zircon/system/ulib/storage/buffer",
"//zircon/system/ulib/storage/operation",
"//zircon/system/ulib/zx",
]
deps = [ "//zircon/third_party/ulib/cksum" ]
configs += [ "//build/config:all_source" ]
if (is_fuchsia) {
sources += [
"background_executor.cc",
"data_streamer.cc",
"entry_view.cc",
"entry_view.h",
"format_assertions.h",
"journal.cc",
"journal_writer.cc",
"replay.cc",
"replay_tree.cc",
"replay_tree.h",
"superblock.cc",
]
public_deps += [ "//zircon/system/ulib/range" ]
deps += [
"//sdk/lib/syslog/cpp",
"//zircon/system/public",
"//zircon/system/ulib/sync",
"//zircon/system/ulib/zx",
"//zircon/third_party/ulib/safemath",
]
}
}
group("tests") {
testonly = true
deps = [
":journal-fuzzers",
":journal-unit-tests",
]
}
test("journal-unit") {
if (is_fuchsia) {
fdio_config = [ "//build/config/fuchsia:fdio_config" ]
if (configs + fdio_config - fdio_config != configs) {
configs -= fdio_config
}
}
sources = [
"background_executor_test.cc",
"data_streamer_test.cc",
"entry_view_test.cc",
"header_view_test.cc",
"journal_test.cc",
"replay_test.cc",
"replay_tree_test.cc",
"superblock_test.cc",
]
deps = [
":journal",
"//sdk/fidl/fuchsia.hardware.block.driver:fuchsia.hardware.block.driver_banjo_c",
"//sdk/lib/fit",
"//sdk/lib/fit-promise",
"//src/lib/fxl/test:gtest_main",
"//src/storage/lib/block_client/cpp:fake_device",
"//src/storage/lib/block_client/cpp:interface",
"//src/storage/lib/vfs/cpp/transaction",
"//third_party/googletest:gmock",
"//third_party/googletest:gtest",
"//zircon/system/ulib/fzl",
"//zircon/system/ulib/storage/buffer",
"//zircon/system/ulib/storage/operation",
"//zircon/system/ulib/sync",
"//zircon/system/ulib/zx",
"//zircon/third_party/ulib/cksum",
"//zircon/third_party/ulib/safemath",
]
}
source_set("fuzz-utils") {
public = [ "fuzzer_utils.h" ]
sources = [ "fuzzer_utils.cc" ]
public_deps = [
":journal",
"//sdk/fidl/fuchsia.hardware.block.driver:fuchsia.hardware.block.driver_banjo_c",
"//src/storage/lib/vfs/cpp/transaction",
"//zircon/system/ulib/storage/buffer",
"//zircon/system/ulib/storage/operation",
"//zircon/system/ulib/zx",
]
}
fuchsia_component("journal-unit-tests-component") {
component_name = "journal-unit-tests"
testonly = true
manifest = "meta/journal-unit-tests.cml"
deps = [ ":journal-unit" ]
}
fuchsia_test_package("journal-unit-tests") {
test_specs = {
log_settings = {
max_severity = "ERROR"
}
}
test_components = [ ":journal-unit-tests-component" ]
}
fuchsia_library_fuzzer("journal-fuzzer") {
sources = [ "journal_fuzztest.cc" ]
deps = [ ":fuzz-utils" ]
}
fuchsia_library_fuzzer("journal-entry-fuzzer") {
sources = [ "entry_parse_fuzztest.cc" ]
deps = [ ":fuzz-utils" ]
}
fuchsia_library_fuzzer("journal-replay-fuzzer") {
sources = [ "replay_fuzztest.cc" ]
deps = [ ":fuzz-utils" ]
}
fuchsia_fuzzer_component("journal-fuzzer-component") {
manifest = "meta/journal-fuzzer.cml"
deps = [ ":journal-fuzzer" ]
}
fuchsia_fuzzer_component("journal-entry-fuzzer-component") {
manifest = "meta/journal-entry-fuzzer.cml"
deps = [ ":journal-entry-fuzzer" ]
}
fuchsia_fuzzer_component("journal-replay-fuzzer-component") {
manifest = "meta/journal-replay-fuzzer.cml"
deps = [ ":journal-replay-fuzzer" ]
}
fuchsia_fuzzer_package("journal-fuzzers") {
cpp_fuzzer_components = [
":journal-fuzzer-component",
":journal-entry-fuzzer-component",
":journal-replay-fuzzer-component",
]
}