// Copyright 2022 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.
// Component test example which injects echo_server and launches echo_test_client
// which is a test which connects to this injected server, tests it and
// passes back result using `fuchsia.test.Suite`
{
    // Two children: a server and client. "echo_test_client" has "eager" startup so it
    // will be started along with the realm.
    children: [
        {
            name: "echo_server",
            url: "#meta/echo_server.cm",
        },
        {
            name: "echo_test_client",
            url: "#meta/echo_test_client.cm",
        },
    ],
    offer: [
        {
            protocol: "fidl.examples.routing.echo.Echo",
            from: "#echo_server",
            to: "#echo_test_client",
        },
        {
            protocol: "fuchsia.logger.LogSink",
            from: "parent",
            to: [
                "#echo_server",
                "#echo_test_client",
            ],
        },
    ],
    expose: [
        {
            protocol: "fuchsia.test.Suite",
            from: "#echo_test_client",
        },
    ],
}
