Index: testing/multiprocess_func_list.cc |
diff --git a/testing/multiprocess_func_list.cc b/testing/multiprocess_func_list.cc |
index 1e19704830f37ba9778aeffd48dcb30d3ada4527..3155e84e0d89e109269f2c8cc0b2050d1bce8e01 100644 |
--- a/testing/multiprocess_func_list.cc |
+++ b/testing/multiprocess_func_list.cc |
@@ -12,29 +12,43 @@ namespace multi_process_function_list { |
namespace { |
-typedef std::map<std::string, ChildFunctionPtr> MultiProcessTestMap; |
+struct ProcessFunctions { |
+ ProcessFunctions() : main(NULL), setup(NULL) {} |
+ ProcessFunctions(TestMainFunctionPtr main, SetupFunctionPtr setup) |
+ : main(main), |
+ setup(setup) { |
+ } |
+ TestMainFunctionPtr main; |
+ SetupFunctionPtr setup; |
+}; |
+ |
+typedef std::map<std::string, ProcessFunctions> MultiProcessTestMap; |
// Retrieve a reference to the global 'func name' -> func ptr map. |
-MultiProcessTestMap &GetMultiprocessFuncMap() { |
+MultiProcessTestMap& GetMultiprocessFuncMap() { |
static MultiProcessTestMap test_name_to_func_ptr_map; |
return test_name_to_func_ptr_map; |
} |
} // namespace |
-AppendMultiProcessTest::AppendMultiProcessTest(std::string test_name, |
- ChildFunctionPtr func_ptr) { |
- GetMultiprocessFuncMap()[test_name] = func_ptr; |
+AppendMultiProcessTest::AppendMultiProcessTest( |
+ std::string test_name, |
+ TestMainFunctionPtr main_func_ptr, |
+ SetupFunctionPtr setup_func_ptr) { |
+ GetMultiprocessFuncMap()[test_name] = |
+ ProcessFunctions(main_func_ptr, setup_func_ptr); |
} |
int InvokeChildProcessTest(std::string test_name) { |
- MultiProcessTestMap &func_lookup_table = GetMultiprocessFuncMap(); |
+ MultiProcessTestMap& func_lookup_table = GetMultiprocessFuncMap(); |
MultiProcessTestMap::iterator it = func_lookup_table.find(test_name); |
if (it != func_lookup_table.end()) { |
- ChildFunctionPtr func = it->second; |
- if (func) { |
- return (*func)(); |
- } |
+ const ProcessFunctions& process_functions = it->second; |
+ if (process_functions.setup) |
+ (*process_functions.setup)(); |
+ if (process_functions.main) |
+ return (*process_functions.main)(); |
} |
return -1; |