File tree Expand file tree Collapse file tree 5 files changed +66
-14
lines changed
Expand file tree Collapse file tree 5 files changed +66
-14
lines changed Original file line number Diff line number Diff line change @@ -117,7 +117,6 @@ cc_library(
117117 "@com_google_absl//absl/log:check" ,
118118 "@com_google_absl//absl/log:globals" ,
119119 "@com_google_absl//absl/log:initialize" ,
120- "@com_google_absl//absl/status" ,
121120 "@com_google_absl//absl/strings" ,
122121 "@com_google_absl//absl/strings:string_view" ,
123122 "@com_google_benchmark//:benchmark" ,
Original file line number Diff line number Diff line change @@ -129,11 +129,17 @@ int main(int argc, char* argv[]) {
129129
130130 CheckMemoryLimit ();
131131
132- if (benchmark::GetBenchmarkFilter ().empty () ||
133- benchmark::GetBenchmarkFilter () == " default" ) {
134- // --benchmark_filter flag not set
132+ const std::string benchmark_filter = benchmark::GetBenchmarkFilter ();
133+ if (benchmark_filter.empty () || benchmark_filter == " default" ||
134+ benchmark_filter == " single" ) {
135+ // --benchmark_filter flag not set, set to default or "single"
135136 benchmark::SetBenchmarkFilter (
136- fleetbench::DynamicRegistrar::Get ()->GetDefaultFilter ());
137+ fleetbench::DynamicRegistrar::Get ()->GetDefaultFilter (
138+ fleetbench::ThreadingMode::kSingleThreaded ));
139+ } else if (benchmark_filter == " multi" ) {
140+ benchmark::SetBenchmarkFilter (
141+ fleetbench::DynamicRegistrar::Get ()->GetDefaultFilter (
142+ fleetbench::ThreadingMode::kMultiThreaded ));
137143 }
138144 fleetbench::DynamicRegistrar::Get ()->Run ();
139145
Original file line number Diff line number Diff line change @@ -36,11 +36,27 @@ void DynamicRegistrar::Run() {
3636 callbacks_.clear ();
3737}
3838
39- void DynamicRegistrar::AddDefaultFilter (std::string filter) {
40- if (!default_filter_.empty ()) {
41- default_filter_.append (" |" );
39+ void DynamicRegistrar::AddDefaultFilter (std::string filter,
40+ ThreadingMode mode) {
41+ if (mode == ThreadingMode::kSingleThreaded || mode == ThreadingMode::kBoth ) {
42+ if (!default_single_threaded_filter_.empty ()) {
43+ default_single_threaded_filter_.push_back (' |' );
44+ }
45+ default_single_threaded_filter_.append (filter);
4246 }
43- default_filter_.append (filter);
47+ if (mode == ThreadingMode::kMultiThreaded || mode == ThreadingMode::kBoth ) {
48+ if (!default_multi_threaded_filter_.empty ()) {
49+ default_multi_threaded_filter_.push_back (' |' );
50+ }
51+ default_multi_threaded_filter_.append (filter);
52+ }
53+ }
54+
55+ std::string DynamicRegistrar::GetDefaultFilter (ThreadingMode mode) const {
56+ if (mode == ThreadingMode::kSingleThreaded ) {
57+ return default_single_threaded_filter_;
58+ }
59+ return default_multi_threaded_filter_;
4460}
4561
4662} // namespace fleetbench
Original file line number Diff line number Diff line change 2121
2222namespace fleetbench {
2323
24+ enum class ThreadingMode {
25+ kSingleThreaded ,
26+ kMultiThreaded ,
27+ kBoth ,
28+ };
29+
2430#define REGISTER_BENCHMARK (n ) benchmark::RegisterBenchmark(#n, n)
2531#define REGISTER_BENCHMARK_TEMPLATE (n, ...) \
2632 benchmark::RegisterBenchmark (#n " <" #__VA_ARGS__ " >" , n<__VA_ARGS__>)
@@ -45,15 +51,17 @@ class DynamicRegistrar {
4551
4652 // Used by fleetbench main() as the default benchmark filter if the
4753 // --benchmark_filter flag is not set. The returned filter is the disjunction
48- // of all filters that were added by calls to AddDefaultFilter.
49- std::string GetDefaultFilter () const { return default_filter_; }
54+ // of all filters that were added by calls to AddDefaultFilter for the given
55+ // `ThreadingMode`.
56+ std::string GetDefaultFilter (ThreadingMode mode) const ;
5057
51- // Adds an additional benchmark filter.
52- void AddDefaultFilter (std::string filter );
58+ void AddDefaultFilter (std::string filter,
59+ ThreadingMode mode = ThreadingMode:: kBoth );
5360
5461 private:
5562 std::vector<std::function<void ()>> callbacks_;
56- std::string default_filter_;
63+ std::string default_single_threaded_filter_;
64+ std::string default_multi_threaded_filter_;
5765};
5866} // namespace fleetbench
5967
Original file line number Diff line number Diff line change @@ -33,5 +33,28 @@ TEST(DynamicRegistrar, CallbackRunsOnlyOnce) {
3333 DynamicRegistrar::Get ()->Run ();
3434}
3535
36+ TEST (DynamicRegistrar, DefaultFilters) {
37+ DynamicRegistrar registrar;
38+ EXPECT_EQ (registrar.GetDefaultFilter (ThreadingMode::kSingleThreaded ), " " );
39+ EXPECT_EQ (registrar.GetDefaultFilter (ThreadingMode::kMultiThreaded ), " " );
40+
41+ registrar.AddDefaultFilter (" filter1" , ThreadingMode::kSingleThreaded );
42+ EXPECT_EQ (registrar.GetDefaultFilter (ThreadingMode::kSingleThreaded ),
43+ " filter1" );
44+ EXPECT_EQ (registrar.GetDefaultFilter (ThreadingMode::kMultiThreaded ), " " );
45+
46+ registrar.AddDefaultFilter (" filter2" , ThreadingMode::kMultiThreaded );
47+ EXPECT_EQ (registrar.GetDefaultFilter (ThreadingMode::kSingleThreaded ),
48+ " filter1" );
49+ EXPECT_EQ (registrar.GetDefaultFilter (ThreadingMode::kMultiThreaded ),
50+ " filter2" );
51+
52+ registrar.AddDefaultFilter (" filter3" , ThreadingMode::kBoth );
53+ EXPECT_EQ (registrar.GetDefaultFilter (ThreadingMode::kSingleThreaded ),
54+ " filter1|filter3" );
55+ EXPECT_EQ (registrar.GetDefaultFilter (ThreadingMode::kMultiThreaded ),
56+ " filter2|filter3" );
57+ }
58+
3659} // namespace
3760} // namespace fleetbench
You can’t perform that action at this time.
0 commit comments