blob: 513b8ef7b754b2e3751d8914305075cb36165f9a [file] [log] [blame]
# Copyright 2020 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/components.gni")
import("//src/sys/core/build/core_shard.gni")
source_set("lib") {
sources = [
"args.cc",
"cpu_stress.cc",
"cpu_stressor.cc",
"cpu_workloads.cc",
"device.cc",
"flash_stress.cc",
"hwstress.cc",
"light_stress.cc",
"memory_patterns.cc",
"memory_range.cc",
"memory_stats.cc",
"memory_stress.cc",
"profile_manager.cc",
"status.cc",
"temperature_sensor.cc",
"util.cc",
]
public_deps = [
"//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_hlcpp",
"//sdk/fidl/fuchsia.hardware.block.volume:fuchsia.hardware.block.volume_hlcpp",
"//sdk/fidl/fuchsia.hardware.light:fuchsia.hardware.light_hlcpp",
"//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_hlcpp",
"//sdk/fidl/fuchsia.kernel:fuchsia.kernel_hlcpp",
"//sdk/fidl/fuchsia.scheduler:fuchsia.scheduler_hlcpp",
"//sdk/lib/fdio",
"//sdk/lib/sys/cpp",
"//src/lib/fxl",
"//src/lib/storage/fs_management",
"//src/lib/uuid",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/async-loop:async-loop-default",
"//zircon/system/ulib/cmdline",
"//zircon/system/ulib/fdio-caller",
"//zircon/system/ulib/zx",
]
# We want to optimize as much as possible for speed, under the assumption
# that this will also optimize for generating code that will maximise the
# amount of stress placed on the system (e.g., more heat for CPU tests).
configs += [ "//build/config:optimize_speed" ]
}
executable("bin") {
output_name = "hwstress"
sources = [ "main.cc" ]
deps = [ ":lib" ]
}
# Traditional CLI package.
fuchsia_shell_package("hwstress_cli") {
package_name = "hwstress-cli"
deps = [ ":bin" ]
}
# CFv2 package.
# We generate an in-package CML file for the top-level "hwstress"
# binary, and also for each style of test we run.
#
# This is to help automated tests seperate logs for the different
# styles of test, where currently the CFv2 component name is the
# only mechanism we have to do this.
_hwstress_binaries = [
"hwstress",
"cpu",
"memory",
"flash",
"led",
]
_hwstress_v2_components = []
foreach(hwstress_name, _hwstress_binaries) {
fuchsia_component("${hwstress_name}_v2_component") {
component_name = "${hwstress_name}_v2"
manifest = "meta/hwstress.cml"
deps = [ ":bin" ]
}
_hwstress_v2_components += [ ":${hwstress_name}_v2_component" ]
}
fuchsia_package("hwstress_v2_pkg") {
package_name = "hwstress_v2"
deps = _hwstress_v2_components
}
core_shard("hwstress_v2_shard") {
shard_file = "meta/hwstress.core_shard.cml"
}
# Tests requiring support from the CFv2 (or requiring support from libraries that depend on CFv2).
executable("hwstress_v2_test") {
testonly = true
sources = [
"args_test.cc",
"cpu_stress_test.cc",
"cpu_stressor_test.cc",
"cpu_workloads_test.cc",
"flash_stress_test.cc",
"hwstress_test.cc",
"light_stress_test.cc",
"memory_patterns_test.cc",
"memory_range_test.cc",
"memory_stats_test.cc",
"memory_stress_test.cc",
"profile_manager_test.cc",
"status_test.cc",
"temperature_sensor_test.cc",
"util_test.cc",
]
deps = [
":lib",
"//sdk/lib/fdio",
"//src/lib/fxl",
"//src/lib/fxl/test:gtest_main",
"//src/lib/testing/predicates",
"//src/storage/testing:storage_driver_test_support", # requires CFv2.
"//third_party/googletest:gmock",
"//zircon/system/ulib/zx",
]
}
fuchsia_test_component("hwstress_v2_test_pkg") {
manifest = "meta/hwstress_v2_test.cml"
deps = [
":hwstress_v2_test",
"//src/storage/testing:storage_driver_test_realm",
]
}
fuchsia_test_package("hwstress_test_pkg") {
package_name = "hwstress-tests"
test_components = [ ":hwstress_v2_test_pkg" ]
test_specs = {
log_settings = {
max_severity = "ERROR"
}
}
}
group("tests") {
testonly = true
public_deps = [ ":hwstress_test_pkg" ]
}
group("hwstress") {
testonly = true
public_deps = [
":hwstress_cli",
":hwstress_v2_pkg",
":hwstress_v2_shard",
]
}