mirror of
https://github.com/google/benchmark.git
synced 2025-03-14 03:10:22 +08:00
* Rewrite complexity_test to use (hardcoded) manual time This test is fundamentally flaky, because it tried to read tea leafs, and is inherently misbehaving in CI environments, since there are unmitigated sources of noise. That being said, the computed Big-O also depends on the `--benchmark_min_time=` Fixes https://github.com/google/benchmark/issues/272 * Correctly compute Big-O for manual timings. Fixes #1758. * complexity_test: do more stuff in empty loop * Make all empty loops be a bit longer empty Looks like on windows, some of these tests still fail, i guess clock precision is too small.
132 lines
3.3 KiB
Python
132 lines
3.3 KiB
Python
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
|
|
|
|
platform(
|
|
name = "windows",
|
|
constraint_values = [
|
|
"@platforms//os:windows",
|
|
],
|
|
)
|
|
|
|
TEST_COPTS = [
|
|
"-pedantic",
|
|
"-pedantic-errors",
|
|
"-std=c++11",
|
|
"-Wall",
|
|
"-Wconversion",
|
|
"-Wextra",
|
|
"-Wshadow",
|
|
# "-Wshorten-64-to-32",
|
|
"-Wfloat-equal",
|
|
"-fstrict-aliasing",
|
|
## assert() are used a lot in tests upstream, which may be optimised out leading to
|
|
## unused-variable warning.
|
|
"-Wno-unused-variable",
|
|
]
|
|
|
|
# Some of the issues with DoNotOptimize only occur when optimization is enabled
|
|
PER_SRC_COPTS = {
|
|
"donotoptimize_test.cc": ["-O3"],
|
|
}
|
|
|
|
TEST_ARGS = ["--benchmark_min_time=0.01s"]
|
|
|
|
PER_SRC_TEST_ARGS = {
|
|
"user_counters_tabular_test.cc": ["--benchmark_counters_tabular=true"],
|
|
"repetitions_test.cc": [" --benchmark_repetitions=3"],
|
|
"spec_arg_test.cc": ["--benchmark_filter=BM_NotChosen"],
|
|
"spec_arg_verbosity_test.cc": ["--v=42"],
|
|
"complexity_test.cc": ["--benchmark_min_time=1000000x"],
|
|
}
|
|
|
|
cc_library(
|
|
name = "output_test_helper",
|
|
testonly = 1,
|
|
srcs = ["output_test_helper.cc"],
|
|
hdrs = ["output_test.h"],
|
|
copts = select({
|
|
"//:windows": [],
|
|
"//conditions:default": TEST_COPTS,
|
|
}),
|
|
deps = [
|
|
"//:benchmark",
|
|
"//:benchmark_internal_headers",
|
|
],
|
|
)
|
|
|
|
# Tests that use gtest. These rely on `gtest_main`.
|
|
[
|
|
cc_test(
|
|
name = test_src[:-len(".cc")],
|
|
size = "small",
|
|
srcs = [test_src],
|
|
copts = select({
|
|
"//:windows": [],
|
|
"//conditions:default": TEST_COPTS,
|
|
}) + PER_SRC_COPTS.get(test_src, []),
|
|
deps = [
|
|
"//:benchmark",
|
|
"//:benchmark_internal_headers",
|
|
"@com_google_googletest//:gtest",
|
|
"@com_google_googletest//:gtest_main",
|
|
],
|
|
)
|
|
for test_src in glob(["*_gtest.cc"])
|
|
]
|
|
|
|
# Tests that do not use gtest. These have their own `main` defined.
|
|
[
|
|
cc_test(
|
|
name = test_src[:-len(".cc")],
|
|
size = "small",
|
|
srcs = [test_src],
|
|
args = TEST_ARGS + PER_SRC_TEST_ARGS.get(test_src, []),
|
|
copts = select({
|
|
"//:windows": [],
|
|
"//conditions:default": TEST_COPTS,
|
|
}) + PER_SRC_COPTS.get(test_src, []),
|
|
deps = [
|
|
":output_test_helper",
|
|
"//:benchmark",
|
|
"//:benchmark_internal_headers",
|
|
],
|
|
# FIXME: Add support for assembly tests to bazel.
|
|
# See Issue #556
|
|
# https://github.com/google/benchmark/issues/556
|
|
)
|
|
for test_src in glob(
|
|
["*_test.cc"],
|
|
exclude = [
|
|
"*_assembly_test.cc",
|
|
"cxx03_test.cc",
|
|
"link_main_test.cc",
|
|
],
|
|
)
|
|
]
|
|
|
|
cc_test(
|
|
name = "cxx03_test",
|
|
size = "small",
|
|
srcs = ["cxx03_test.cc"],
|
|
copts = TEST_COPTS + ["-std=c++03"],
|
|
target_compatible_with = select({
|
|
"//:windows": ["@platforms//:incompatible"],
|
|
"//conditions:default": [],
|
|
}),
|
|
deps = [
|
|
":output_test_helper",
|
|
"//:benchmark",
|
|
"//:benchmark_internal_headers",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "link_main_test",
|
|
size = "small",
|
|
srcs = ["link_main_test.cc"],
|
|
copts = select({
|
|
"//:windows": [],
|
|
"//conditions:default": TEST_COPTS,
|
|
}),
|
|
deps = ["//:benchmark_main"],
|
|
)
|