Skip to content

Commit 9dd7f41

Browse files
authored
Merge pull request #14 from bugparty/codex/configure-cmake-variable-for-test-time
Make test and benchmark durations configurable
2 parents 6a1a792 + 44ebdc6 commit 9dd7f41

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

CMakeLists.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@ cmake_minimum_required(VERSION 3.21)
22
project(bitvector)
33

44
set(CMAKE_CXX_STANDARD 17)
5+
6+
# Allow configuring how long tests may run and how long benchmarks
7+
# should execute. The timeout for GoogleTest-based unit tests is set via
8+
# `BITVECTOR_TEST_TIMEOUT`. The minimum runtime for Google Benchmark
9+
# benchmarks is configured with `BITVECTOR_BENCHMARK_MIN_TIME`.
10+
set(BITVECTOR_TEST_TIMEOUT 10 CACHE STRING "Timeout in seconds for each unit test")
11+
set(BITVECTOR_BENCHMARK_MIN_TIME 0.2 CACHE STRING "Minimum time in seconds for benchmark runs")
512
option(BITVECTOR_NO_BOUND_CHECK "Disable bounds checking in bitvector" ON)
613
if(BITVECTOR_NO_BOUND_CHECK)
714
add_compile_definitions(BITVECTOR_NO_BOUND_CHECK)
@@ -78,6 +85,7 @@ target_link_libraries(bitvector_tests GTest::gtest_main)
7885
# Benchmark target
7986
add_executable(bitvector_benchmark bitvector_benchmark.cpp)
8087
target_link_libraries(bitvector_benchmark benchmark::benchmark)
88+
target_compile_definitions(bitvector_benchmark PRIVATE BITVECTOR_BENCHMARK_MIN_TIME=${BITVECTOR_BENCHMARK_MIN_TIME})
8189

8290

8391
# Link your project with Google Test (only for test purposes)
@@ -91,5 +99,5 @@ target_link_libraries(bitvector_benchmark benchmark::benchmark)
9199

92100
# Enable test discovery
93101
include(GoogleTest)
94-
gtest_discover_tests(bitvector_tests)
102+
gtest_discover_tests(bitvector_tests PROPERTIES TIMEOUT ${BITVECTOR_TEST_TIMEOUT})
95103

bitvector_benchmark.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
#include <benchmark/benchmark.h>
33
#include <vector>
44

5+
#ifndef BITVECTOR_BENCHMARK_MIN_TIME
6+
#define BITVECTOR_BENCHMARK_MIN_TIME 0.2
7+
#endif
8+
59
using bowen::bitvector;
610

711
static void BM_Bowen_Set(benchmark::State& state) {
@@ -143,17 +147,17 @@ static void BM_Std_IncrementUntilZero(benchmark::State& state) {
143147
}
144148
}
145149

146-
BENCHMARK(BM_Bowen_Set)->Arg(1<<20)->MinTime(5.0);
147-
BENCHMARK(BM_Std_Set)->Arg(1<<20)->MinTime(5.0);
148-
BENCHMARK(BM_Bowen_PushBack)->Arg(1<<20)->MinTime(5.0);
149-
BENCHMARK(BM_Std_PushBack)->Arg(1<<20)->MinTime(5.0);
150-
BENCHMARK(BM_Bowen_Access)->Arg(1<<20)->MinTime(5.0);
151-
BENCHMARK(BM_Std_Access)->Arg(1<<20)->MinTime(5.0);
152-
BENCHMARK(BM_Bowen_SetBitTrue6)->Arg(1<<20)->MinTime(5.0);
153-
BENCHMARK(BM_Std_SetBitTrue6)->Arg(1<<20)->MinTime(5.0);
154-
BENCHMARK(BM_Bowen_QSetBitTrue6V2)->Arg(1<<20)->MinTime(5.0);
155-
BENCHMARK(BM_Std_QSetBitTrue6)->Arg(1<<20)->MinTime(5.0);
156-
BENCHMARK(BM_Bowen_IncrementUntilZero)->Arg(1<<20)->MinTime(5.0);
157-
BENCHMARK(BM_Std_IncrementUntilZero)->Arg(1<<20)->MinTime(5.0);
150+
BENCHMARK(BM_Bowen_Set)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
151+
BENCHMARK(BM_Std_Set)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
152+
BENCHMARK(BM_Bowen_PushBack)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
153+
BENCHMARK(BM_Std_PushBack)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
154+
BENCHMARK(BM_Bowen_Access)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
155+
BENCHMARK(BM_Std_Access)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
156+
BENCHMARK(BM_Bowen_SetBitTrue6)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
157+
BENCHMARK(BM_Std_SetBitTrue6)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
158+
BENCHMARK(BM_Bowen_QSetBitTrue6V2)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
159+
BENCHMARK(BM_Std_QSetBitTrue6)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
160+
BENCHMARK(BM_Bowen_IncrementUntilZero)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
161+
BENCHMARK(BM_Std_IncrementUntilZero)->Arg(1<<20)->MinTime(BITVECTOR_BENCHMARK_MIN_TIME);
158162

159163
BENCHMARK_MAIN();

0 commit comments

Comments
 (0)