# 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("echo_interposer") {
  name = "echo_interposer"
  edition = "2018"
  source_root = "echo_interposer.rs"
  deps = [
    "//examples/components/routing/fidl:echo-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/sys/component_manager/testing:test_utils_lib",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "echo_interposer.rs" ]
}

rustc_library("echo_factory_interposer") {
  name = "echo_factory_interposer"
  edition = "2018"
  source_root = "echo_factory_interposer.rs"
  deps = [
    ":echo_interposer",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/sys/component_manager/testing:test_utils_lib",
    "//src/sys/component_manager/tests/fidl:echofactory-rustc",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "echo_factory_interposer.rs" ]
}

rustc_test("events_integration_test_bin") {
  name = "events_integration_test"
  edition = "2018"
  source_root = "integration_test.rs"
  deps = [
    ":echo_factory_interposer",
    ":echo_interposer",
    "//examples/components/routing/fidl:echo-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/storage/vfs/rust:vfs",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/component_manager/testing:test_utils_lib",
    "//src/sys/component_manager/tests/fidl:components-rustc",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "integration_test.rs" ]
}

fuchsia_component("async_reporter") {
  testonly = true
  deps = [ "components:async_reporter_bin" ]
  manifest = "components/async/meta/reporter.cml"
}

fuchsia_component("capability_ready_child") {
  testonly = true
  deps = [ "components:capability_ready_child_bin" ]
  manifest = "components/capability_ready/meta/child.cml"
}

fuchsia_component("capability_ready_root") {
  testonly = true
  deps = [ "components:capability_ready_root_bin" ]
  manifest = "components/capability_ready/meta/root.cml"
}

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

fuchsia_component("echo_client") {
  testonly = true
  deps = [ "components:echo_client_for_events_bin" ]
  manifest = "components/scoped/meta/echo_client.cml"
}

fuchsia_component("echo_server") {
  testonly = true
  deps = [ "components:echo_server_for_events_bin" ]
  manifest = "components/scoped/meta/echo_server.cml"
}

fuchsia_component("echo_reporter") {
  testonly = true
  deps = [ "components:echo_reporter_bin" ]
  manifest = "components/scoped/meta/echo_reporter.cml"
}

fuchsia_component("interpose_echo_looper") {
  testonly = true
  deps = [ "components:interpose_echo_looper_bin" ]
  manifest = "components/interpose/meta/echo_looper.cml"
}

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

fuchsia_component("nested_reporter") {
  testonly = true
  deps = [ "components:nested_reporter_bin" ]
  manifest = "components/nested/meta/reporter.cml"
}

fuchsia_component("resolved_error_reporter") {
  testonly = true
  deps = [ "components:resolved_error_reporter_bin" ]
  manifest = "components/resolved_error/meta/reporter.cml"
}

fuchsia_component("chained_interpose_echo_client") {
  testonly = true
  deps = [ "components:chained_interpose_echo_client_bin" ]
  manifest = "components/chained_interpose/meta/echo_client.cml"
}

fuchsia_component("chained_interpose_echo_factory") {
  testonly = true
  deps = [ "components:chained_interpose_echo_factory_bin" ]
  manifest = "components/chained_interpose/meta/echo_factory.cml"
}

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

fuchsia_component("event_dispatch_order_root") {
  testonly = true
  manifest = "components/event_dispatch_order/meta/root.cml"
}

fuchsia_component("stub_component") {
  testonly = true
  deps = [ "components:stub_component_bin" ]
  manifest = "components/stub/meta/component.cml"
}

fuchsia_component("synthesis_reporter") {
  testonly = true
  deps = [ "components:synthesis_reporter_bin" ]
  manifest = "components/synthesis/meta/reporter.cml"
}

fuchsia_component("static_event_stream_trigger_client") {
  testonly = true
  deps = [ "components:trigger_client_bin" ]
  manifest = "components/static_event_stream/meta/trigger_client.cml"
}

fuchsia_component("static_event_stream_trigger_server") {
  testonly = true
  deps = [ "components:trigger_server_bin" ]
  manifest = "components/static_event_stream/meta/trigger_server.cml"
}

fuchsia_component("trigger_realm") {
  testonly = true
  manifest = "components/static_event_stream/meta/trigger_realm.cml"
}

fuchsia_component("file_contents_reporter") {
  testonly = true
  deps = [ "components:file_contents_reporter_bin" ]
  manifest = "components/dir_capability_routed/meta/reporter.cml"
}

fuchsia_component("realm_offered_reporter") {
  testonly = true
  deps = [ "components:realm_offered_bin" ]
  manifest = "components/realm_offered/meta/reporter.cml"
}

fuchsia_component("realm_offered_nested") {
  testonly = true
  deps = [ "components:realm_offered_nested" ]
  manifest = "components/realm_offered/meta/nested.cml"
}

fuchsia_component("realm_offered_root") {
  testonly = true
  manifest = "components/realm_offered/meta/root.cml"
}

fuchsia_unittest_package("events_integration_test") {
  manifest = "meta/events_integration_test.cmx"
  deps = [
    ":async_reporter",
    ":capability_ready_child",
    ":capability_ready_root",
    ":chained_interpose_echo_client",
    ":chained_interpose_echo_factory",
    ":chained_interpose_echo_realm",
    ":echo_client",
    ":echo_realm",
    ":echo_reporter",
    ":echo_server",
    ":event_dispatch_order_root",
    ":events_integration_test_bin",
    ":file_contents_reporter",
    ":interpose_echo_looper",
    ":interpose_echo_realm",
    ":nested_reporter",
    ":realm_offered_nested",
    ":realm_offered_reporter",
    ":realm_offered_root",
    ":resolved_error_reporter",
    ":static_event_stream_trigger_client",
    ":static_event_stream_trigger_server",
    ":stub_component",
    ":synthesis_reporter",
    ":trigger_realm",
  ]
}
