# Copyright (c) 2019 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../../webrtc.gni")

rtc_library("metric_metadata_keys") {
  testonly = true
  sources = [ "metric_metadata_keys.h" ]
}

if (!build_with_chromium) {
  group("e2e") {
    testonly = true

    deps = [ ":metric_metadata_keys" ]
    if (rtc_include_tests) {
      deps += [
        ":peerconnection_quality_test",
        ":test_peer",
      ]
    }
  }

  if (rtc_include_tests) {
    group("e2e_unittests") {
      testonly = true

      deps = [
        ":peer_connection_e2e_smoke_test",
        ":peer_connection_quality_test_metric_names_test",
        ":peer_connection_quality_test_test",
        ":stats_based_network_quality_metrics_reporter_test",
        ":stats_poller_test",
      ]
    }
  }

  if (rtc_include_tests) {
    rtc_library("echo_emulation") {
      testonly = true
      sources = [
        "echo/echo_emulation.cc",
        "echo/echo_emulation.h",
      ]
      deps = [
        "../../../api/test/pclf:media_configuration",
        "../../../modules/audio_device:test_audio_device_module",
        "../../../rtc_base:swap_queue",
      ]
    }

    rtc_library("test_peer") {
      testonly = true
      sources = [
        "test_peer.cc",
        "test_peer.h",
      ]
      deps = [
        ":stats_provider",
        "../../../api:frame_generator_api",
        "../../../api:function_view",
        "../../../api:libjingle_peerconnection_api",
        "../../../api:scoped_refptr",
        "../../../api:sequence_checker",
        "../../../api/audio:audio_processing",
        "../../../api/task_queue:pending_task_safety_flag",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:media_quality_test_params",
        "../../../api/test/pclf:peer_configurer",
        "../../../pc:peerconnection_wrapper",
        "../../../rtc_base:logging",
        "../../../rtc_base:refcount",
        "../../../rtc_base/synchronization:mutex",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/strings",
        "//third_party/abseil-cpp/absl/types:optional",
        "//third_party/abseil-cpp/absl/types:variant",
      ]
    }

    rtc_library("test_peer_factory") {
      testonly = true
      sources = [
        "test_peer_factory.cc",
        "test_peer_factory.h",
      ]
      deps = [
        ":echo_emulation",
        ":test_peer",
        "../..:copy_to_file_audio_capturer",
        "../../../api:create_time_controller",
        "../../../api:enable_media_with_defaults",
        "../../../api:time_controller",
        "../../../api/rtc_event_log:rtc_event_log_factory",
        "../../../api/task_queue",
        "../../../api/task_queue:default_task_queue_factory",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:media_quality_test_params",
        "../../../api/test/pclf:peer_configurer",
        "../../../api/transport:field_trial_based_config",
        "../../../api/video_codecs:builtin_video_decoder_factory",
        "../../../api/video_codecs:builtin_video_encoder_factory",
        "../../../modules/audio_device:test_audio_device_module",
        "../../../modules/audio_processing/aec_dump",
        "../../../p2p:basic_port_allocator",
        "../../../p2p:rtc_p2p",
        "../../../rtc_base:threading",
        "analyzer/video:quality_analyzing_video_encoder",
        "analyzer/video:video_quality_analyzer_injection_helper",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/strings",
      ]
    }

    rtc_library("test_video_capturer_video_track_source") {
      testonly = true
      sources = [ "media/test_video_capturer_video_track_source.h" ]
      deps = [
        "../..:test_video_capturer",
        "../../../api:sequence_checker",
        "../../../api/test/video:test_video_track_source",
        "../../../api/video:video_frame",
      ]
      absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
    }

    rtc_library("media_helper") {
      testonly = true
      sources = [
        "media/media_helper.cc",
        "media/media_helper.h",
      ]
      deps = [
        ":test_peer",
        ":test_video_capturer_video_track_source",
        "../..:fileutils",
        "../..:frame_generator_capturer",
        "../..:platform_video_capturer",
        "../../../api:create_frame_generator",
        "../../../api:frame_generator_api",
        "../../../api:media_stream_interface",
        "../../../api:sequence_checker",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:peer_configurer",
        "../../../api/test/video:test_video_track_source",
        "../../../api/video:video_frame",
        "../../../pc:session_description",
        "../../../pc:video_track_source",
        "analyzer/video:video_quality_analyzer_injection_helper",
      ]
      absl_deps = [ "//third_party/abseil-cpp/absl/types:variant" ]
    }

    rtc_library("peer_params_preprocessor") {
      visibility = [ "*" ]
      testonly = true
      sources = [
        "peer_params_preprocessor.cc",
        "peer_params_preprocessor.h",
      ]
      deps = [
        "../..:fileutils",
        "../../../api:peer_network_dependencies",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:media_quality_test_params",
        "../../../api/test/pclf:peer_configurer",
        "../../../modules/video_coding/svc:scalability_mode_util",
        "../../../modules/video_coding/svc:scalability_structures",
        "../../../rtc_base:macromagic",
      ]
      absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
    }

    rtc_library("test_activities_executor") {
      testonly = true
      sources = [
        "test_activities_executor.cc",
        "test_activities_executor.h",
      ]
      deps = [
        "../../../api/task_queue",
        "../../../api/units:time_delta",
        "../../../api/units:timestamp",
        "../../../rtc_base:checks",
        "../../../rtc_base:criticalsection",
        "../../../rtc_base:logging",
        "../../../rtc_base:task_queue_for_test",
        "../../../rtc_base/synchronization:mutex",
        "../../../rtc_base/task_utils:repeating_task",
        "../../../system_wrappers",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/memory",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }

    rtc_library("peerconnection_quality_test") {
      testonly = true

      sources = [
        "peer_connection_quality_test.cc",
        "peer_connection_quality_test.h",
      ]
      deps = [
        ":analyzer_helper",
        ":cross_media_metrics_reporter",
        ":default_audio_quality_analyzer",
        ":media_helper",
        ":metric_metadata_keys",
        ":peer_params_preprocessor",
        ":sdp_changer",
        ":stats_poller",
        ":test_activities_executor",
        ":test_peer",
        ":test_peer_factory",
        "../..:field_trial",
        "../..:fileutils",
        "../..:perf_test",
        "../..:test_flags",
        "../../../api:audio_quality_analyzer_api",
        "../../../api:libjingle_peerconnection_api",
        "../../../api:media_stream_interface",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:rtc_event_log_output_file",
        "../../../api:scoped_refptr",
        "../../../api:time_controller",
        "../../../api:video_quality_analyzer_api",
        "../../../api/rtc_event_log",
        "../../../api/task_queue",
        "../../../api/test/metrics:metric",
        "../../../api/test/metrics:metrics_logger",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:media_quality_test_params",
        "../../../api/test/pclf:peer_configurer",
        "../../../api/units:time_delta",
        "../../../api/units:timestamp",
        "../../../pc:pc_test_utils",
        "../../../pc:sdp_utils",
        "../../../rtc_base:gunit_helpers",
        "../../../rtc_base:macromagic",
        "../../../rtc_base:safe_conversions",
        "../../../rtc_base:stringutils",
        "../../../rtc_base:task_queue_for_test",
        "../../../rtc_base:threading",
        "../../../rtc_base/synchronization:mutex",
        "../../../system_wrappers",
        "../../../system_wrappers:field_trial",
        "analyzer/video:default_video_quality_analyzer",
        "analyzer/video:single_process_encoded_image_data_injector",
        "analyzer/video:video_frame_tracking_id_injector",
        "analyzer/video:video_quality_analyzer_injection_helper",
        "analyzer/video:video_quality_metrics_reporter",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/flags:flag",
        "//third_party/abseil-cpp/absl/strings",
      ]
    }

    peer_connection_e2e_smoke_test_resources = [
      "../../../resources/pc_quality_smoke_test_alice_source.wav",
      "../../../resources/pc_quality_smoke_test_bob_source.wav",
    ]
    if (is_ios) {
      bundle_data("peer_connection_e2e_smoke_test_resources_bundle_data") {
        testonly = true
        sources = peer_connection_e2e_smoke_test_resources
        outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
      }
    }

    rtc_library("peer_connection_e2e_smoke_test") {
      testonly = true

      sources = [ "peer_connection_e2e_smoke_test.cc" ]
      deps = [
        ":default_audio_quality_analyzer",
        ":network_quality_metrics_reporter",
        ":stats_based_network_quality_metrics_reporter",
        "../../..//test/network:simulated_network",
        "../../../api:create_network_emulation_manager",
        "../../../api:create_peer_connection_quality_test_frame_generator",
        "../../../api:create_peerconnection_quality_test_fixture",
        "../../../api:libjingle_peerconnection_api",
        "../../../api:media_stream_interface",
        "../../../api:network_emulation_manager_api",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api:scoped_refptr",
        "../../../api:simulated_network_api",
        "../../../api/audio_codecs:builtin_audio_decoder_factory",
        "../../../api/audio_codecs:builtin_audio_encoder_factory",
        "../../../api/test/metrics:global_metrics_logger_and_exporter",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:media_quality_test_params",
        "../../../api/test/pclf:peer_configurer",
        "../../../api/video_codecs:builtin_video_decoder_factory",
        "../../../api/video_codecs:builtin_video_encoder_factory",
        "../../../media:rtc_audio_video",
        "../../../modules/audio_device:audio_device_impl",
        "../../../p2p:rtc_p2p",
        "../../../pc:pc_test_utils",
        "../../../pc:peerconnection_wrapper",
        "../../../rtc_base:gunit_helpers",
        "../../../rtc_base:logging",
        "../../../rtc_base:rtc_event",
        "../../../system_wrappers:field_trial",
        "../../../test:field_trial",
        "../../../test:fileutils",
        "../../../test:test_support",
        "analyzer/video:default_video_quality_analyzer",
        "analyzer/video:default_video_quality_analyzer_shared",
      ]
      data = peer_connection_e2e_smoke_test_resources
      if (is_mac || is_ios) {
        deps += [ "../../../modules/video_coding:objc_codec_factory_helper" ]
      }
      if (is_ios) {
        deps += [ ":peer_connection_e2e_smoke_test_resources_bundle_data" ]
      }
    }

    rtc_library("peer_connection_quality_test_metric_names_test") {
      testonly = true
      sources = [ "peer_connection_quality_test_metric_names_test.cc" ]
      deps = [
        ":metric_metadata_keys",
        ":network_quality_metrics_reporter",
        ":peerconnection_quality_test",
        ":stats_based_network_quality_metrics_reporter",
        "../..:test_support",
        "../../../api:create_network_emulation_manager",
        "../../../api:create_peer_connection_quality_test_frame_generator",
        "../../../api:network_emulation_manager_api",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api/test/metrics:metrics_logger",
        "../../../api/test/metrics:stdout_metrics_exporter",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:media_quality_test_params",
        "../../../api/test/pclf:peer_configurer",
        "../../../api/units:time_delta",
      ]
    }

    rtc_library("stats_based_network_quality_metrics_reporter_test") {
      testonly = true
      sources = [ "stats_based_network_quality_metrics_reporter_test.cc" ]
      deps = [
        ":metric_metadata_keys",
        ":peerconnection_quality_test",
        ":stats_based_network_quality_metrics_reporter",
        "../..:test_support",
        "../../../api:array_view",
        "../../../api:create_network_emulation_manager",
        "../../../api:create_peer_connection_quality_test_frame_generator",
        "../../../api:network_emulation_manager_api",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api/test/metrics:metrics_logger",
        "../../../api/test/metrics:stdout_metrics_exporter",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:media_quality_test_params",
        "../../../api/test/pclf:peer_configurer",
        "../../../api/units:time_delta",
      ]
      absl_deps = [
        "//third_party/abseil-cpp/absl/strings",
        "//third_party/abseil-cpp/absl/types:optional",
      ]
    }

    rtc_library("peer_connection_quality_test_test") {
      testonly = true
      sources = [ "peer_connection_quality_test_test.cc" ]
      deps = [
        ":peerconnection_quality_test",
        "../..:fileutils",
        "../..:test_support",
        "../..:video_test_support",
        "../../../api:create_network_emulation_manager",
        "../../../api:network_emulation_manager_api",
        "../../../api:peer_connection_quality_test_fixture_api",
        "../../../api/test/metrics:global_metrics_logger_and_exporter",
        "../../../api/test/pclf:media_configuration",
        "../../../api/test/pclf:media_quality_test_params",
        "../../../api/test/pclf:peer_configurer",
        "../../../api/units:time_delta",
        "../../../rtc_base:timeutils",
      ]
    }

    rtc_library("stats_provider") {
      testonly = true
      sources = [ "stats_provider.h" ]
      deps = [ "../../../api:rtc_stats_api" ]
    }

    rtc_library("stats_poller") {
      testonly = true
      sources = [
        "stats_poller.cc",
        "stats_poller.h",
      ]
      deps = [
        ":stats_provider",
        ":test_peer",
        "../../../api:libjingle_peerconnection_api",
        "../../../api:rtc_stats_api",
        "../../../api:stats_observer_interface",
        "../../../rtc_base:logging",
        "../../../rtc_base:macromagic",
        "../../../rtc_base/synchronization:mutex",
      ]
    }

    rtc_library("stats_poller_test") {
      testonly = true
      sources = [ "stats_poller_test.cc" ]
      deps = [
        ":stats_poller",
        "../..:test_support",
        "../../../api:rtc_stats_api",
      ]
    }
  }

  rtc_library("analyzer_helper") {
    sources = [
      "analyzer_helper.cc",
      "analyzer_helper.h",
    ]
    deps = [
      "../../../api:sequence_checker",
      "../../../api:track_id_stream_info_map",
      "../../../rtc_base:macromagic",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("default_audio_quality_analyzer") {
    testonly = true
    sources = [
      "analyzer/audio/default_audio_quality_analyzer.cc",
      "analyzer/audio/default_audio_quality_analyzer.h",
    ]

    deps = [
      ":metric_metadata_keys",
      "../..:perf_test",
      "../../../api:audio_quality_analyzer_api",
      "../../../api:rtc_stats_api",
      "../../../api:stats_observer_interface",
      "../../../api:track_id_stream_info_map",
      "../../../api/numerics",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/units:time_delta",
      "../../../api/units:timestamp",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:logging",
      "../../../rtc_base:rtc_numerics",
      "../../../rtc_base/synchronization:mutex",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("network_quality_metrics_reporter") {
    testonly = true
    sources = [
      "network_quality_metrics_reporter.cc",
      "network_quality_metrics_reporter.h",
    ]
    deps = [
      "../..:perf_test",
      "../../../api:network_emulation_manager_api",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtc_stats_api",
      "../../../api:track_id_stream_info_map",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/units:data_size",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base/synchronization:mutex",
      "../../../system_wrappers:field_trial",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("stats_based_network_quality_metrics_reporter") {
    testonly = true
    sources = [
      "stats_based_network_quality_metrics_reporter.cc",
      "stats_based_network_quality_metrics_reporter.h",
    ]
    deps = [
      ":metric_metadata_keys",
      "../..:perf_test",
      "../../../api:array_view",
      "../../../api:network_emulation_manager_api",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtc_stats_api",
      "../../../api:scoped_refptr",
      "../../../api:sequence_checker",
      "../../../api/numerics",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/test/network_emulation",
      "../../../api/units:data_rate",
      "../../../api/units:data_size",
      "../../../api/units:timestamp",
      "../../../rtc_base:checks",
      "../../../rtc_base:ip_address",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base:stringutils",
      "../../../rtc_base/synchronization:mutex",
      "../../../rtc_base/system:no_unique_address",
      "../../../system_wrappers:field_trial",
    ]
    absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
  }

  rtc_library("cross_media_metrics_reporter") {
    testonly = true
    sources = [
      "cross_media_metrics_reporter.cc",
      "cross_media_metrics_reporter.h",
    ]
    deps = [
      ":metric_metadata_keys",
      "../..:perf_test",
      "../../../api:network_emulation_manager_api",
      "../../../api:peer_connection_quality_test_fixture_api",
      "../../../api:rtc_stats_api",
      "../../../api:track_id_stream_info_map",
      "../../../api/numerics",
      "../../../api/test/metrics:metric",
      "../../../api/test/metrics:metrics_logger",
      "../../../api/units:timestamp",
      "../../../rtc_base:checks",
      "../../../rtc_base:criticalsection",
      "../../../rtc_base:rtc_event",
      "../../../rtc_base:rtc_numerics",
      "../../../rtc_base/synchronization:mutex",
      "../../../system_wrappers:field_trial",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }

  rtc_library("sdp_changer") {
    testonly = true
    sources = [
      "sdp/sdp_changer.cc",
      "sdp/sdp_changer.h",
    ]
    deps = [
      "../../../api:array_view",
      "../../../api:libjingle_peerconnection_api",
      "../../../api:rtp_parameters",
      "../../../api/test/pclf:media_configuration",
      "../../../media:media_constants",
      "../../../media:rid_description",
      "../../../p2p:p2p_constants",
      "../../../p2p:rtc_p2p",
      "../../../pc:sdp_utils",
      "../../../pc:session_description",
      "../../../pc:simulcast_description",
      "../../../rtc_base:stringutils",
    ]
    absl_deps = [
      "//third_party/abseil-cpp/absl/memory",
      "//third_party/abseil-cpp/absl/strings:strings",
      "//third_party/abseil-cpp/absl/types:optional",
    ]
  }
}
