From 187816e5793ad177f6f70fe6270baf1475d74149 Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 9 Aug 2016 13:06:21 -0700 Subject: [PATCH] Fix binderAddInts benchmark Bug: 30765667 Restores the fork() that was missed in a refactor causing the benchmark to no longer measure binder's IPC performance. Change-Id: Id79ab082f1d20e1d058f80bd43018c9737b8250b --- tests/binder/benchmarks/binderAddInts.cpp | 35 +++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/tests/binder/benchmarks/binderAddInts.cpp b/tests/binder/benchmarks/binderAddInts.cpp index d0b2910b..7ac53601 100644 --- a/tests/binder/benchmarks/binderAddInts.cpp +++ b/tests/binder/benchmarks/binderAddInts.cpp @@ -79,7 +79,7 @@ class AddIntsService : public BBinder // File scope function prototypes static bool server(void); -static void BM_client(benchmark::State& state); +static void BM_addInts(benchmark::State& state); static void bindCPU(unsigned int cpu); static ostream &operator<<(ostream &stream, const String16& str); static ostream &operator<<(ostream &stream, const cpu_set_t& set); @@ -103,9 +103,8 @@ static bool server(void) return true; } -static void BM_client(benchmark::State& state) +static void BM_addInts(benchmark::State& state) { - server(); int rv; sp sm = defaultServiceManager(); @@ -162,7 +161,7 @@ static void BM_client(benchmark::State& state) state.ResumeTiming(); } } -BENCHMARK(BM_client); +BENCHMARK(BM_addInts); AddIntsService::AddIntsService(int cpu): cpu_(cpu) { @@ -305,6 +304,30 @@ int main(int argc, char *argv[]) } } - ::benchmark::RunSpecifiedBenchmarks(); -} + fflush(stdout); + switch (pid_t pid = fork()) { + case 0: // Child + ::benchmark::RunSpecifiedBenchmarks(); + return 0; + + default: // Parent + if (!server()) { break; } + + // Wait for all children to end + do { + int stat; + rv = wait(&stat); + if ((rv == -1) && (errno == ECHILD)) { break; } + if (rv == -1) { + cerr << "wait failed, rv: " << rv << " errno: " + << errno << endl; + perror(NULL); + exit(8); + } + } while (1); + return 0; + case -1: // Error + exit(9); + } +} -- 2.11.0