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

rustc_library("work_scheduler_dispatch_reporter") {
  name = "work_scheduler_dispatch_reporter"
  edition = "2018"
  source_root = "work_scheduler_dispatch_reporter.rs"
  deps = [
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/component_manager:lib",
    "//src/sys/component_manager/testing:test_utils_lib",
    "//src/sys/component_manager/tests/fidl:fuchsia.test.workscheduler-rustc",
    "//src/sys/lib/cm_rust",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:lazy_static",
  ]

  sources = [ "work_scheduler_dispatch_reporter.rs" ]
}

rustc_test("work_scheduler_integration_test_bin") {
  name = "work_scheduler_integration_test"
  edition = "2018"
  source_root = "//src/sys/component_manager/tests/work_scheduler/work_scheduler_integration_test.rs"
  deps = [
    ":work_scheduler_dispatch_reporter",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/sys/component_manager:lib",
    "//src/sys/component_manager/testing:test_utils_lib",
    "//src/sys/component_manager/tests/fidl:fuchsia.test.workscheduler-rustc",
  ]

  sources = [ "work_scheduler_integration_test.rs" ]
}

fuchsia_component("unbound_child_worker_child") {
  deps = [ "components:unbound_child_worker_child_bin" ]
  manifest = "components/unbound_child/meta/worker_child.cml"
}

fuchsia_component("unbound_child_worker_sibling") {
  deps = [ "components:unbound_child_worker_sibling_bin" ]
  manifest = "components/unbound_child/meta/worker_sibling.cml"
}

fuchsia_component("unbound_child_worker_parent") {
  manifest = "components/unbound_child/meta/worker_parent.cml"
}

fuchsia_component("bound_worker") {
  deps = [ "components:bound_worker_bin" ]
  manifest = "components/bound/meta/worker.cml"
}

fuchsia_unittest_package("work_scheduler_integration_test") {
  manifest = "meta/work_scheduler_integration_test.cmx"
  deps = [
    ":bound_worker",
    ":unbound_child_worker_child",
    ":unbound_child_worker_parent",
    ":unbound_child_worker_sibling",
    ":work_scheduler_integration_test_bin",
  ]
}
