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

rustc_test("hub_integration_test_bin") {
  name = "hub_integration_test"
  edition = "2018"
  source_root = "hub_integration_test.rs"
  deps = [
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component-test",
    "//src/sys/lib/component-events",
  ]

  sources = [ "hub_integration_test.rs" ]
}

fuchsia_component("advanced_routing_reporter") {
  testonly = true
  deps = [ "components:advanced_routing_reporter_bin" ]
  manifest = "components/advanced_routing/meta/reporter.cml"
}

fuchsia_component("advanced_routing_echo_realm") {
  testonly = true
  manifest = "components/advanced_routing/meta/echo_realm.cml"
}

fuchsia_component("dynamic_child_reporter") {
  testonly = true
  deps = [ "components:dynamic_child_reporter_bin" ]
  manifest = "components/dynamic_child/meta/reporter.cml"
}

fuchsia_component("simple") {
  testonly = true
  deps = [ "components:simple_component_bin" ]
  manifest = "components/simple_component/meta/simple.cml"
}

fuchsia_component("hub_client") {
  testonly = true
  manifest = "components/simple_component/meta/hub_client.cml"
}

fuchsia_component("visibility_reporter") {
  testonly = true
  deps = [ "components:visibility_reporter_bin" ]
  manifest = "components/visibility/meta/reporter.cml"
}

fuchsia_component("resolver") {
  testonly = true
  deps = [ "components:resolver_bin" ]
  manifest = "components/resolver/meta/resolver.cml"
}

fuchsia_component("child") {
  testonly = true
  manifest = "components/visibility/meta/child.cml"
}

fuchsia_component("grandchild") {
  testonly = true
  manifest = "components/visibility/meta/grandchild.cml"
}

fuchsia_component_manifest("structured_config_reporter_manifest") {
  testonly = true
  component_name = "structured_config_reporter"
  manifest = "components/structured_config/meta/reporter.cml"
}

fuchsia_component("structured_config_reporter") {
  testonly = true
  deps = [ "components:structured_config_reporter_bin" ]
  cm_label = ":structured_config_reporter_manifest"
}

fuchsia_structured_config_values("structured_config_reporter_values") {
  testonly = true
  cm_label = ":structured_config_reporter_manifest"
  values_source = "components/structured_config/config/reporter.json5"
}

fuchsia_unittest_package("hub_integration_test") {
  manifest = "meta/hub_integration_test.cml"
  deps = [
    ":advanced_routing_echo_realm",
    ":advanced_routing_reporter",
    ":child",
    ":dynamic_child_reporter",
    ":grandchild",
    ":hub_client",
    ":hub_integration_test_bin",
    ":resolver",
    ":simple",
    ":structured_config_reporter",
    ":structured_config_reporter_values",
    ":visibility_reporter",
    "//src/sys/component_manager:component-manager-realm-builder-debug-cmp",
    "//src/sys/component_manager/testing/echo_server",
  ]
}
