blob: 863427120741705695dad9b3fe8c62350faf256b [file] [log] [blame]
load("//tools/base/transport/test-framework:transport_test.bzl", "transport_test")
load("//tools/base/bazel:android.bzl", "dex_library")
# Run an integration test that verifes profiler APIs.
#
# srcs: One or more test classes to run under this test.
# test_app: A target that represents a mock app (i.e. a collection of mock
# Android activities.
def perf_test(
name,
srcs,
test_app,
deps = [],
jvm_flags = [],
data = [],
tags = [],
app_runtime_deps = [],
size = None):
# Copy the undexed version of the test app and transform its bytecode with
# profiler hooks. This is how profilers work when targetting devices that
# don't support jvmti.
native.genrule(
name = name + "_transformed_undexed",
srcs = [test_app + "_undexed_deploy.jar"],
outs = [name + "_transformed_undexed_deploy.jar"],
cmd = select({
"//tools/base/bazel:darwin": "cp ./$< ./$@",
"//tools/base/bazel:windows": "cp ./$< ./$@",
"//conditions:default": "$(location //tools/base/profiler/tests/profiler-transform-main:profilers-transform-main) ./$< ./$@",
}),
executable = 1,
exec_tools = select({
"//tools/base/bazel:darwin": [],
"//tools/base/bazel:windows": [],
"//conditions:default": [
"//tools/base/profiler/tests/profiler-transform-main:profilers-transform-main",
],
}),
tags = tags,
)
dex_library(
name = name + "_transformed",
jars = [name + "_transformed_undexed_deploy.jar"],
)
transport_test(
name = name,
srcs = srcs,
deps = deps + [
"//tools/base/profiler/tests/test-framework",
],
app_dexes = [test_app],
app_dexes_nojvmti = [
":profiler-service",
name + "_transformed",
],
app_runtime_deps = app_runtime_deps + [
"//tools/base/profiler/app:perfa_java",
"//tools/base/profiler/app:perfa_okhttp",
"//tools/base/profiler/native/agent:libsupportjni.so",
],
tags = tags,
size = size,
jvm_flags = jvm_flags,
)