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

rustc_binary("bin") {
  name = "httpsdate_time_source"
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.cobalt:fuchsia.cobalt-rustc",
    "//sdk/fidl/fuchsia.net.interfaces:fuchsia.net.interfaces-rustc",
    "//sdk/fidl/fuchsia.time.external:fuchsia.time.external-rustc",
    "//src/lib/cobalt/rust:fuchsia-cobalt",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/network/fidl_fuchsia_net_interfaces_ext",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/time/lib/httpdate-hyper",
    "//src/sys/time/lib/push-source",
    "//src/sys/time/lib/time-util",
    "//src/sys/time/lib/time_metrics_registry",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:tracing",
  ]

  sources = [
    "src/bound.rs",
    "src/constants.rs",
    "src/datatypes.rs",
    "src/diagnostics/cobalt.rs",
    "src/diagnostics/composite.rs",
    "src/diagnostics/fake.rs",
    "src/diagnostics/inspect.rs",
    "src/diagnostics/mod.rs",
    "src/httpsdate.rs",
    "src/main.rs",
    "src/sampler.rs",
  ]

  test_deps = [
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:lazy_static",
  ]
}

fuchsia_component("service") {
  component_name = "httpsdate_time_source"
  manifest = "meta/service.cmx"
  deps = [ ":bin" ]
}

fuchsia_unittest_package("httpsdate-time-source-tests") {
  deps = [ ":bin_test" ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}

fuchsia_package("httpsdate-time-source") {
  deps = [ ":service" ]
}

group("tests") {
  testonly = true
  deps = [ ":httpsdate-time-source-tests" ]
}
