// Copyright 2023 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.

// Add test realm to core
{
    children: [
        {
            name: "testing",
            url: "fuchsia-pkg://fuchsia.com/testing#meta/test_realm.cm",
            environment: "#core-env",
        },
    ],
    offer: [
        // Needed by come tests or test runners
        {
            directory: "dev-builtin",
            from: "parent",
            to: "#testing",
        },
        {
            protocol: [
                "fuchsia.boot.ReadOnlyLog",
                "fuchsia.boot.WriteOnlyLog",
                "fuchsia.diagnostics.ArchiveAccessor",
                "fuchsia.diagnostics.FeedbackArchiveAccessor",
                "fuchsia.diagnostics.LegacyMetricsArchiveAccessor",
                "fuchsia.kernel.HypervisorResource",
                "fuchsia.kernel.MmioResource",
                "fuchsia.kernel.VmexResource",
                "fuchsia.logger.Log",
                "fuchsia.logger.LogSink",
            ],
            from: "parent",
            to: "#testing",
        },

        // Needed for IO compliance tests for CM capabiltiies.
        {
            protocol: [
                "fuchsia.boot.Arguments",
                "fuchsia.boot.FactoryItems",
                "fuchsia.boot.Items",
                "fuchsia.sys2.CrashIntrospect",
            ],
            from: "parent",
            to: "#testing",
        },
        {
            event_stream: [
                "capability_requested",
                "debug_started",
                "destroyed",
                "discovered",
                "started",
                "stopped",
            ],
            from: "parent",
            to: "#testing",
            scope: "#testing",
        },

        // From optional core components
        {
            protocol: [
                "fuchsia.media.Audio",
                "fuchsia.media.AudioDeviceEnumerator",
                "fuchsia.media.ProfileProvider",
            ],
            from: "#audio_core",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.factory.WeaveFactoryStoreProvider",
            from: "#factory_store_providers",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: [
                "fuchsia.feedback.ComponentDataRegister",
                "fuchsia.feedback.CrashReportingProductRegister",
            ],
            from: "#feedback",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.component.resolution.Resolver",
            from: "#full-resolver",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.intl.PropertyProvider",
            from: "#intl",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            storage: "data",
            from: "self",
            to: "#testing",
        },
        {
            protocol: [ "fuchsia.tracing.controller.Controller" ],
            from: "#trace_manager",
            to: "#testing",
            source_availability: "unknown",
        },

        // Test realms may offer subdirectories of config-data to test
        // components. See:
        // https://fuchsia.dev/fuchsia-src/development/components/data#product-specific_configuration_with_config_data
        {
            directory: "config-data",
            from: "parent",
            to: "#testing",
        },
        {
            protocol: "fuchsia.fonts.Provider",
            from: "#font_provider",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.exception.Handler",
            from: "#exceptions",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: [
                "fuchsia.hwinfo.Board",
                "fuchsia.hwinfo.Device",
                "fuchsia.hwinfo.Product",
            ],
            from: "#hwinfo",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.memorypressure.Provider",
            from: "#memory_monitor",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: [
                "fuchsia.sysmem.Allocator",
                "fuchsia.sysmem2.Allocator",
            ],
            from: "parent",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            // TODO(https://fxbug.dev/42058885): After removing "weak" from the block
            // below, merge them together
            protocol: [ "fuchsia.ui.input3.Keyboard" ],
            from: "#ui",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: [
                "fuchsia.session.scene.Manager",
                "fuchsia.ui.composition.Allocator",
                "fuchsia.ui.composition.Flatland",
                "fuchsia.ui.composition.Screenshot",
                "fuchsia.ui.scenic.Scenic",
            ],
            from: "#ui",
            to: "#testing",

            // TODO(https://fxbug.dev/42058885): break the cycle, then merge the 2 blocks
            dependency: "weak",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.vulkan.loader.Loader",
            from: "#vulkan_loader",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.mediacodec.CodecFactory",
            from: "#codec_factory",
            to: "#testing",
            source_availability: "unknown",
        },

        // Needed by some non-hermetic tests
        {
            protocol: [
                "fuchsia.kernel.CpuResource",
                "fuchsia.kernel.DebuglogResource",
                "fuchsia.kernel.DebugResource",
                "fuchsia.kernel.EnergyInfoResource",
                "fuchsia.kernel.FramebufferResource",
                "fuchsia.kernel.InfoResource",
                "fuchsia.kernel.IommuResource",
                "fuchsia.kernel.IoportResource",
                "fuchsia.kernel.IrqResource",
                "fuchsia.kernel.MexecResource",
                "fuchsia.kernel.MsiResource",
                "fuchsia.kernel.PowerResource",
                "fuchsia.kernel.ProfileResource",
                "fuchsia.kernel.RootJob",
                "fuchsia.kernel.RootJobForInspect",
                "fuchsia.kernel.SmcResource",
                "fuchsia.kernel.Stats",
                "fuchsia.process.Launcher",
                "fuchsia.scheduler.deprecated.ProfileProvider",
                "fuchsia.scheduler.RoleManager",
            ],
            from: "parent",
            to: "#testing",
        },

        // Needed for driver tests.
        {
            directory: [
                "dev-class",
                "dev-topological",
            ],
            from: "parent",
            to: "#testing",
        },
        {
            protocol: [
                "fuchsia.driver.development.Manager",
                "fuchsia.driver.registrar.DriverRegistrar",
            ],
            from: "parent",
            to: "#testing",
        },
        {
            directory: "boot",
            from: "parent",
            to: "#testing",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-codec",
            to: "#testing",
            subdir: "codec",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-display-coordinator",
            to: "#testing",
            subdir: "display-coordinator",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-mediacodec",
            to: "#testing",
            subdir: "media-codec",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-goldfish-address-space",
            to: "#testing",
            subdir: "goldfish-address-space",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-goldfish-control",
            to: "#testing",
            subdir: "goldfish-control",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-goldfish-pipe",
            to: "#testing",
            subdir: "goldfish-pipe",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-goldfish-sync",
            to: "#testing",
            subdir: "goldfish-sync",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-gpu",
            to: "#testing",
            subdir: "gpu",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-gpu-performance-counters",
            to: "#testing",
            subdir: "gpu-performance-counters",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-audio-input",
            to: "#testing",
            subdir: "audio-input",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-audio-output",
            to: "#testing",
            subdir: "audio-output",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-dai",
            to: "#testing",
            subdir: "dai",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-composite",
            to: "#testing",
            subdir: "audio-composite",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-input",
            to: "#testing",
            subdir: "input",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-input-report",
            to: "#testing",
            subdir: "input-report",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-tee",
            to: "#testing",
            subdir: "tee",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-securemem",
            to: "#testing",
            subdir: "securemem",
        },

        // Tests of the media system want to test against the real hardware
        // TODO(https://fxbug.dev/42164198): Remove when specialized test realms are ready.
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-mediacodec",
            to: "#testing",
            subdir: "media-codec",
        },
        {
            directory: "dev-class",
            from: "parent",
            as: "dev-sysmem",
            to: "#testing",
            subdir: "sysmem",
        },
        {
            directory: "dev-topological",
            from: "parent",
            as: "sys",
            to: "#testing",
            subdir: "sys",
        },
        {
            directory: "root-ssl-certificates",
            from: "parent",
            to: "#testing",
        },

        // Tests of the media system change their behavior based on board
        // TODO(https://fxbug.dev/42164198): Remove when specialized test realms are ready.
        {
            protocol: "fuchsia.sysinfo.SysInfo",
            from: "parent",
            to: "#testing",
        },

        // Needed for //src/cobalt/bin/meta/cobalt_testapp_for_prober_do_not_run_manually.cml
        // and chromium realm.
        // TODO(https://fxbug.dev/42163671): Remove once e2e is better supported.
        {
            protocol: [ "fuchsia.net.http.Loader" ],
            from: "#network",
            to: "#testing",
        },

        // Needed by Chromium and Dart + Flutter runners
        {
            protocol: "fuchsia.posix.socket.Provider",
            from: "#network",
            to: "#testing",
        },

        // Profiling tests need access to the ktrace data
        {
            protocol: [
                "fuchsia.kernel.Counter",
                "fuchsia.tracing.kernel.Controller",
                "fuchsia.tracing.kernel.Reader",
            ],
            from: "parent",
            to: "#testing",
            availability: "same_as_target",
        },

        // Needed by system-validation-tests
        {
            // TODO(https://fxbug.dev/42058885): After removing "weak" from the block
            // below, merge them together
            protocol: [ "fuchsia.accessibility.semantics.SemanticsManager" ],
            from: "#ui",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: "fuchsia.buildinfo.Provider",
            from: "#build-info",
            to: "#testing",
        },

        // TODO(https://fxbug.dev/42163671): Remove once e2e is better supported.
        {
            protocol: [ "fuchsia.net.interfaces.State" ],
            from: "#network",
            to: "#testing",
        },

        // Required by ctf tests
        {
            protocol: "fuchsia.process.Resolver",
            from: "#process_resolver",
            to: "#testing",
            source_availability: "unknown",
        },
        {
            protocol: [
                "fuchsia.settings.Intl",
                "fuchsia.settings.Privacy",
            ],
            from: "#setui_service",
            to: "#testing",
            source_availability: "unknown",
        },

        // ICU timezone data
        {
            directory: [
                // `tzdata-icu` offers /config/tzdata/icu.
                // `tzdata-icu-44-le` offers /config/tzdata/icu/44/le only.
                "tzdata-icu",
                "tzdata-icu-44-le",
            ],
            from: "#tzdata-provider",
            to: "#testing",
        },
    ],
}
