blob: 339356bc1d7fa2b076661134516c24e420f59f9a [file] [log] [blame]
# Copyright 2016 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.
import("//build/fidl/fidl.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")
executable("bin") {
output_name = "fuchsia_microbenchmarks"
testonly = true
sources = [
"async_loop.cc",
"atomics.cc",
"channels.cc",
"clock.cc",
"context_switch_overhead.cc",
"events.cc",
"example.cc",
"fdio_spawn.cc",
"fifos.cc",
"filesystem.cc",
"get_info.cc",
"handle.cc",
"handle_creation.cc",
"inspect.cc",
"lazy_dir.cc",
"malloc.cc",
"mem_alloc.cc",
"memcpy.cc",
"mmu.cc",
"mutex.cc",
"null.cc",
"object_wait.cc",
"ports.cc",
"prng.cc",
"pseudo_dir.cc",
"pthreads.cc",
"random_memcpy.cc",
"round_trips.cc",
"sleep.cc",
"sockets.cc",
"streams.cc",
"syscalls.cc",
"test_runner.cc",
"threads.cc",
"timer.cc",
"util.cc",
"vmo.cc",
]
deps = [
":fidl_interface",
"//sdk/lib/fdio",
"//src/lib/fsl",
"//src/lib/fxl",
"//src/zircon/lib/zircon",
"//zircon/public/lib/fbl",
"//zircon/public/lib/zx",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/async-loop:async-loop-default",
"//zircon/system/ulib/fs",
"//zircon/system/ulib/inspect",
]
public_deps = [ "//zircon/system/ulib/perftest" ]
}
# "Helper" executable used to implement the fdio_spawn benchmark.
executable("fdio_spawn_helper") {
output_name = "fdio_spawn_helper"
testonly = true
sources = [ "fdio_spawn_helper.cc" ]
deps = []
public_deps = []
}
# "Helper" executable used to implement the context_switch_overhead benchmark.
executable("context_switch_overhead_helper") {
output_name = "context_switch_overhead_helper"
testonly = true
sources = [ "context_switch_overhead_helper.cc" ]
deps = [
"//sdk/fidl/fuchsia.scheduler",
"//sdk/lib/fdio",
"//sdk/lib/sys/cpp",
"//sdk/lib/syslog/cpp",
"//zircon/public/lib/zx",
]
}
# "Helper" executable used to implement the get_info benchmark.
executable("get_info_helper") {
output_name = "get_info_helper"
testonly = true
sources = [ "get_info_helper.cc" ]
deps = [
"//sdk/lib/fdio",
"//zircon/public/lib/zx",
]
}
fidl("fidl_interface") {
# TODO(fxbug.dev/35879): Remove lint exclusions by fixing known FIDL lint violations in this target
excluded_checks = [ "protocol-name-includes-service" ]
testonly = true
name = "fuchsia.zircon.benchmarks"
sources = [
"async_loop.fidl",
"round_trip_service.fidl",
]
}
# Installing this package causes fuchsia_microbenchmarks to be run in unit
# test mode (fast mode) via runtests.
#
# This package requires fuchsia_microbenchmarks_perftestmode to also be
# installed.
#
# This package's copy of fuchsia_microbenchmarks invokes both itself
# (fuchsia_microbenchmarks) and fdio_spawn_helper as subprocesses, but it
# does so via the redirector executables in /bin (via the shell-commands
# package). Those point to the copies of those executables in
# fuchsia_microbenchmarks_perftestmode, which is why that package is
# required.
#
# Since Fuchsia packages cannot declare dependencies on other packages, GN
# targets that require fuchsia_microbenchmarks_unittestmode should depend
# on the fuchsia_microbenchmarks group() instead.
#
# The reason for splitting fuchsia_microbenchmarks into two packages like
# this is that we don't want to run fuchsia_microbenchmarks in unit test
# mode on the terminal-x64-release builder that runs SL4F tests, for two
# reasons:
#
# 1) The unit tests run on other builders, so it's unnecessary to run them
# a second time.
# 2) Running unit tests on the terminal-x64-release builder currently does
# not work: It results in the creation of a shard to run tests under
# QEMU, but running Fuchsia on QEMU on that builder does not work
# (perhaps because of missing dependencies).
test_package("fuchsia_microbenchmarks_unittestmode") {
package_name = "fuchsia_microbenchmarks"
deps = [ ":bin" ]
binaries = [
{
name = "fuchsia_microbenchmarks"
},
]
tests = [
{
name = "fuchsia_microbenchmarks"
environments = basic_envs
},
]
}
# This package contains the fuchsia_microbenchmarks executable and installs
# a redirector executable for it in /bin (via the shell-commands package).
# Installing this package allows fuchsia_microbenchmarks to be run by SL4F
# tests as a performance test (i.e. outputting performance results data).
# This package can be installed without installing the
# fuchsia_microbenchmarks_unittestmode package.
package("fuchsia_microbenchmarks_perftestmode") {
testonly = true
deps = [
":bin",
":context_switch_overhead_helper",
":fdio_spawn_helper",
":get_info_helper",
]
binaries = [
{
name = "fdio_spawn_helper"
shell = true
},
{
name = "context_switch_overhead_helper"
shell = true
},
{
name = "get_info_helper"
shell = true
},
{
name = "fuchsia_microbenchmarks"
shell = true
},
]
}
# This contains all the dependencies necessary for running
# fuchsia_microbenchmarks in unit test mode.
group("tests") {
testonly = true
deps = [
":fuchsia_microbenchmarks_perftestmode",
":fuchsia_microbenchmarks_unittestmode",
]
}
# Convenience target so that one can pass "--with //src/tests/microbenchmarks"
# to "fx set".
group("microbenchmarks") {
testonly = true
deps = [ ":tests" ]
}