# 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/rust/rustc_binary.gni")
import("//src/sys/build/components.gni")

group("log-stats") {
  testonly = true
  deps = [
    ":package",
    ":tests",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":log-stats-tests" ]
}

fuchsia_component("component") {
  component_name = "log-stats"
  manifest = "meta/log-stats.cml"
  deps = [ ":bin" ]
}

fuchsia_package("package") {
  package_name = "log-stats"
  deps = [ ":component" ]
}

fuchsia_component("component-v1") {
  component_name = "log-stats"
  manifest = "meta/log-stats.cmx"
  deps = [ ":bin" ]
}

rustc_binary("bin") {
  name = "log-stats"
  with_unit_tests = true

  deps = [
    "fidl:controller-rustc",
    "//sdk/fidl/fuchsia.diagnostics:fuchsia.diagnostics-rustc",
    "//src/diagnostics/archivist:lib",
    "//src/lib/diagnostics/inspect/derive",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/diagnostics/reader/rust",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/syslog",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:tracing",
  ]

  sources = [ "src/main.rs" ]
}

fuchsia_unittest_component("log-stats-unit-tests") {
  executable_path = "bin/log_stats_bin_test"
  deps = [ ":bin_test" ]
}

fuchsia_component("log-stats-integration-tests") {
  testonly = true
  manifest = "meta/integration-tests.cmx"
  deps = [
    ":component-v1",
    ":test-bin",
  ]
}

fuchsia_test_package("log-stats-tests") {
  test_components = [
    ":log-stats-unit-tests",
    ":log-stats-integration-tests",
  ]
}

rustc_test("test-bin") {
  testonly = true
  name = "log_stats_integration_tests"
  deps = [
    "//src/lib/diagnostics/reader/rust",
    "//src/lib/diagnostics/testing/rust",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
  ]

  source_root = "tests/integration.rs"
  sources = [ "tests/integration.rs" ]
}
