diff options
author | jeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-29 20:46:04 +0000 |
---|---|---|
committer | jeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-29 20:46:04 +0000 |
commit | 307f536386aad3abf7c0978b892ffac059eb0be5 (patch) | |
tree | 9e59dd49ecdd90a63e007c37bdd27cc045549138 /testing/multiprocess_func_list.cc | |
parent | fcbaeacfce08303236709e2603e64fc40bdba435 (diff) | |
download | chromium_src-307f536386aad3abf7c0978b892ffac059eb0be5.zip chromium_src-307f536386aad3abf7c0978b892ffac059eb0be5.tar.gz chromium_src-307f536386aad3abf7c0978b892ffac059eb0be5.tar.bz2 |
1) Add a new MULTIPROCESS_TEST_MAIN macro to store child process names
in a lookup table.
Previously we were using different mechanisms on each platform to look up
child process names at runtime. This broke on OS X where we strip the symbol
table on release executables.
2) Enable process_util_unittest on OS X.
Review URL: http://codereview.chromium.org/8864
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4165 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'testing/multiprocess_func_list.cc')
-rw-r--r-- | testing/multiprocess_func_list.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/testing/multiprocess_func_list.cc b/testing/multiprocess_func_list.cc new file mode 100644 index 0000000..236edbf --- /dev/null +++ b/testing/multiprocess_func_list.cc @@ -0,0 +1,43 @@ +// Copyright (c) 2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "multiprocess_func_list.h" + +#include <map> + +// Helper functions to maintain mapping of "test name"->test func. +// The information is accessed via a global map. +namespace multi_process_function_list { + +namespace { + +typedef std::map<std::string, ChildFunctionPtr> MultiProcessTestMap; + +// Retrieve a reference to the global 'func name' -> func ptr map. +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; +} + +int InvokeChildProcessTest(std::string test_name) { + 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)(); + } + } + + return -1; +} + +} // namespace multi_process_function_list |