# Format example here:
# https://github.com/gradle/gradle-profiler?tab=readme-ov-file#advanced-profiling-scenarios

scenario-groups {
    # This is the target run by gradle_benchmark.py.
    # Remember to propagate any modifications to this list into perf.py.
    performance-suite = [
        "configuration_only",
        "compile_java_main",
        "compile_java_main_cleaned",
        "compile_java_main_abi_change_InternalOptions",
        "compile_java_main_non_abi_change_InternalOptions",
        "r8_with_relocate_deps",
        "r8_with_relocate_deps_cleaned",
        "assemble_tests",
        "assemble_tests_cleaned",
        "assemble_tests_abi_change_LambdaFactoryTest"
    ]
}

base_config {
    # These flags should mirror gradle.py
    gradle-args = [
        "--offline",
        "-Porg.gradle.java.installations.auto-detect=false",
        "-Porg.gradle.java.installations.auto-download=false"
    ]
    # A bug in the csv output prevents changing the amount of warmups per scenario
    # https://github.com/gradle/gradle-profiler/issues/317
    warm-ups = 2
    iterations = 1
}

configuration_only = ${base_config} {
    tasks = []
    iterations = 5
}

compile_java_main = ${base_config} {
    tasks = [":main:compileJava"]
    iterations = 5
}

compile_java_main_cleaned = ${base_config} {
    tasks = [":main:compileJava"]
    cleanup-tasks = ["clean"]
    iterations = 2
}

compile_java_main_abi_change_InternalOptions = ${base_config} {
    tasks = [":main:compileJava"]
    apply-abi-change-to = ["src/main/java/com/android/tools/r8/utils/InternalOptions.java"]
    iterations = 2
}

compile_java_main_non_abi_change_InternalOptions = ${base_config} {
    tasks = [":main:compileJava"]
    apply-non-abi-change-to = ["src/main/java/com/android/tools/r8/utils/InternalOptions.java"]
    iterations = 2
}

r8_with_relocate_deps = ${base_config} {
    tasks = [":dist:r8WithRelocatedDeps"]
    iterations = 5
}

r8_with_relocate_deps_cleaned = ${base_config} {
    tasks = [":dist:r8WithRelocatedDeps"]
    cleanup-tasks = ["clean"]
    iterations = 2
}

assemble_tests = ${base_config} {
    tasks = [":test:test"]
    gradle-args = ${base_config.gradle-args} [
        "-I", "tools/gradle_benchmark_test_skipper.gradle.kts",
        "-Pno_internal"
    ]
    iterations = 5
}

assemble_tests_cleaned = ${base_config} {
    tasks = [":test:test"]
    gradle-args = ${base_config.gradle-args} [
        "-I", "tools/gradle_benchmark_test_skipper.gradle.kts",
        "-Pno_internal"
    ]
    cleanup-tasks = ["clean"]
    iterations = 2
}

assemble_tests_abi_change_LambdaFactoryTest = ${base_config} {
    tasks = [":test:test"]
    gradle-args = ${base_config.gradle-args} [
        "-I", "tools/gradle_benchmark_test_skipper.gradle.kts",
        "-Pno_internal"
    ]
    apply-abi-change-to = ["src/test/java8/desugar/com/android/tools/r8/desugar/lambdas/LambdaFactoryTest.java"]
    iterations = 2
}
