# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/util/generate_wrapper.gni")
import("//build_overrides/build.gni")

generate_wrapper("perfetto_diff_tests") {
  testonly = true

  _protos_path = "$root_gen_dir/third_party/perfetto/protos"
  _trace_descriptor = "$_protos_path/perfetto/trace/trace.descriptor"
  _rebased_trace_descriptor = rebase_path(_trace_descriptor, root_build_dir)
  _test_extensions_descriptor =
      "$_protos_path/perfetto/trace/test_extensions.descriptor"
  _rebased_test_extensions_descriptor =
      rebase_path(_test_extensions_descriptor, root_build_dir)
  _metrics_descriptor = "$_protos_path/perfetto/metrics/metrics.descriptor"
  _rebased_metrics_descriptor = rebase_path(_metrics_descriptor, root_build_dir)
  _all_chrome_metrics_descriptor =
      "$_protos_path/perfetto/metrics/chrome/all_chrome_metrics.descriptor"
  _rebased_all_chrome_metrics_descriptor =
      rebase_path(_all_chrome_metrics_descriptor, root_build_dir)
  _all_webview_metrics_descriptor =
      "$_protos_path/perfetto/metrics/webview/all_webview_metrics.descriptor"
  _rebased_all_webview_metrics_descriptor =
      rebase_path(_all_webview_metrics_descriptor, root_build_dir)
  _chrome_track_event_descriptor =
      "$root_gen_dir/base/tracing/protos/chrome_track_event.descriptor"
  _rebased_chrome_track_event_descriptor =
      rebase_path(_chrome_track_event_descriptor, root_build_dir)
  _android_extensions_descriptor =
      "$_protos_path/third_party/android/android_extension.descriptor"
  _rebased_android_extensions_descriptor =
      rebase_path(_android_extensions_descriptor, root_build_dir)
  _gpu_extensions_descriptor =
      "$_protos_path/perfetto/trace/gpu/gpu_track_event.descriptor"
  _rebased_gpu_extensions_descriptor =
      rebase_path(_gpu_extensions_descriptor, root_build_dir)
  _gpu_interned_data_extensions_descriptor =
      "$_protos_path/perfetto/trace/gpu/gpu_interned_data.descriptor"
  _rebased_gpu_interned_data_extensions_descriptor =
      rebase_path(_gpu_interned_data_extensions_descriptor, root_build_dir)
  _trace_summary_descriptor =
      "$_protos_path/perfetto/trace_summary/trace_summary.descriptor"
  _rebased_trace_summary_descriptor =
      rebase_path(_trace_summary_descriptor, root_build_dir)

  _perfetto_script =
      rebase_path("//third_party/perfetto/tools/diff_test_trace_processor.py",
                  root_build_dir)
  _chrome_stdlib = rebase_path("//base/tracing/stdlib/chrome", root_build_dir)
  _test_dir = rebase_path("//base/tracing", root_build_dir)

  executable = "//base/tracing/test/run_perfetto_diff_tests.py"
  wrapper_script = "$root_build_dir/bin/run_perfetto_diff_tests"

  executable_args = [
    "--trace-processor-shell",
    "@WrappedPath(./trace_processor_shell)",
    "--chrome-stdlib",
    "@WrappedPath($_chrome_stdlib)",
    "--test-dir",
    "@WrappedPath($_test_dir)",
    "--trace-descriptor",
    "@WrappedPath($_rebased_trace_descriptor)",
    "--test-extensions-descriptor",
    "@WrappedPath($_rebased_test_extensions_descriptor)",
    "--metrics-descriptor",
    "@WrappedPath($_rebased_metrics_descriptor)",
    "@WrappedPath($_rebased_all_chrome_metrics_descriptor)",
    "@WrappedPath($_rebased_all_webview_metrics_descriptor)",
    "--chrome-track-event-descriptor",
    "@WrappedPath($_rebased_chrome_track_event_descriptor)",
    "--winscope-extensions-descriptor",
    "@WrappedPath($_rebased_android_extensions_descriptor)",
    "--gpu-extensions-descriptor",
    "@WrappedPath($_rebased_gpu_extensions_descriptor)",
    "--gpu-interned-data-extensions",
    "@WrappedPath($_rebased_gpu_interned_data_extensions_descriptor)",
    "--summary-descriptor",
    "@WrappedPath($_rebased_trace_summary_descriptor)",
    "--script",
    "@WrappedPath($_perfetto_script)",
  ]

  data_deps = [
    "//base/tracing/protos:chrome_track_event",
    "//third_party/perfetto/protos/perfetto/metrics:descriptor",
    "//third_party/perfetto/protos/perfetto/metrics/chrome:descriptor",
    "//third_party/perfetto/protos/perfetto/metrics/webview:descriptor",
    "//third_party/perfetto/protos/perfetto/trace:descriptor",
    "//third_party/perfetto/protos/perfetto/trace:test_extensions_descriptor",
    "//third_party/perfetto/protos/perfetto/trace/gpu:gpu_interned_data_descriptor",
    "//third_party/perfetto/protos/perfetto/trace/gpu:gpu_track_event_descriptor",
    "//third_party/perfetto/protos/perfetto/trace_summary:descriptor",
    "//third_party/perfetto/protos/third_party/android:extension_descriptor_gen",
    "//third_party/perfetto/src/trace_processor:trace_processor_shell",
  ]

  data = [
    "//third_party/perfetto/test/trace_processor/",
    "//third_party/perfetto/tools/diff_test_trace_processor.py",
    "//third_party/perfetto/python/generators/diff_tests/",
    "//base/tracing/",
    _trace_descriptor,
    _test_extensions_descriptor,
    _metrics_descriptor,
    _all_chrome_metrics_descriptor,
    _all_webview_metrics_descriptor,
    _chrome_track_event_descriptor,
    _android_extensions_descriptor,
    _gpu_extensions_descriptor,
    _gpu_interned_data_extensions_descriptor,
    _trace_summary_descriptor,
  ]
}
