diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-09 15:25:53 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-09 15:25:53 +0000 |
commit | 19d536f25ffa4e876c7af79b201c7330841b31ea (patch) | |
tree | 2f64619a8812920692bd3c7e69103727021e9d53 /base/multiprocess_test.h | |
parent | 6c4e6631acb0893ba00f035792e80942e2b00bd3 (diff) | |
download | chromium_src-19d536f25ffa4e876c7af79b201c7330841b31ea.zip chromium_src-19d536f25ffa4e876c7af79b201c7330841b31ea.tar.gz chromium_src-19d536f25ffa4e876c7af79b201c7330841b31ea.tar.bz2 |
Cleanup in base. This moves the implementation (and a bunch of header file
dependencies) from the multiprocess test and the test_suite headers to .cc
files. Moves multiprocess_test to the test directory, and all of this stuff to
the existing base_test_support project. I also used the base namespace.
Previously other projects included this functionality just by #include because
it was all inline, so I had to add dependencies on base_test_support in a few
places.
Moves and renames the command line switch this was using to base_switches. Move
the base switch for process type to chrome switches.
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/3026055
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55400 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/multiprocess_test.h')
-rw-r--r-- | base/multiprocess_test.h | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/base/multiprocess_test.h b/base/multiprocess_test.h deleted file mode 100644 index 37d5228..0000000 --- a/base/multiprocess_test.h +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) 2009 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. - -#ifndef BASE_MULTIPROCESS_TEST_H_ -#define BASE_MULTIPROCESS_TEST_H_ -#pragma once - -#include "base/base_switches.h" -#include "base/command_line.h" -#include "base/process_util.h" -#include "base/string_util.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/multiprocess_func_list.h" -#include "testing/platform_test.h" - -#if defined(OS_POSIX) -#include <sys/types.h> -#include <unistd.h> -#endif - -// Command line switch to invoke a child process rather than -// to run the normal test suite. -static const char kRunClientProcess[] = "client"; - -// A MultiProcessTest is a test class which makes it easier to -// write a test which requires code running out of process. -// -// To create a multiprocess test simply follow these steps: -// -// 1) Derive your test from MultiProcessTest. Example: -// -// class MyTest : public MultiProcessTest { -// }; -// -// TEST_F(MyTest, TestCaseName) { -// ... -// } -// -// 2) Create a mainline function for the child processes and include -// testing/multiprocess_func_list.h. -// See the declaration of the MULTIPROCESS_TEST_MAIN macro -// in that file for an example. -// 3) Call SpawnChild("foo"), where "foo" is the name of -// the function you wish to run in the child processes. -// That's it! -// -class MultiProcessTest : public PlatformTest { - protected: - // Run a child process. - // 'procname' is the name of a function which the child will - // execute. It must be exported from this library in order to - // run. - // - // Example signature: - // extern "C" int __declspec(dllexport) FooBar() { - // // do client work here - // } - // - // Returns the handle to the child, or NULL on failure - // - // TODO(darin): re-enable this once we have base/debug_util.h - // ProcessDebugFlags(&cl, DebugUtil::UNKNOWN, false); - base::ProcessHandle SpawnChild(const std::string& procname) { - return SpawnChild(procname, false); - } - - base::ProcessHandle SpawnChild(const std::string& procname, - bool debug_on_start) { -#if defined(OS_WIN) - return SpawnChildImpl(procname, debug_on_start); -#elif defined(OS_POSIX) - base::file_handle_mapping_vector empty_file_list; - return SpawnChildImpl(procname, empty_file_list, debug_on_start); -#endif - } - -#if defined(OS_POSIX) - base::ProcessHandle SpawnChild( - const std::string& procname, - const base::file_handle_mapping_vector& fds_to_map, - bool debug_on_start) { - return SpawnChildImpl(procname, fds_to_map, debug_on_start); - } -#endif - -protected: - CommandLine MakeCmdLine(const std::string& procname, bool debug_on_start) { - CommandLine cl(*CommandLine::ForCurrentProcess()); - cl.AppendSwitchASCII(kRunClientProcess, procname); - if (debug_on_start) - cl.AppendSwitch(switches::kDebugOnStart); - return cl; - } - - private: -#if defined(OS_WIN) - base::ProcessHandle SpawnChildImpl(const std::string& procname, - bool debug_on_start) { - base::ProcessHandle handle = static_cast<base::ProcessHandle>(NULL); - base::LaunchApp(MakeCmdLine(procname, debug_on_start), - false, true, &handle); - return handle; - } - -#elif defined(OS_POSIX) - // TODO(port): with the CommandLine refactoring, this code is very similar - // to the Windows code. Investigate whether this can be made shorter. - base::ProcessHandle SpawnChildImpl( - const std::string& procname, - const base::file_handle_mapping_vector& fds_to_map, - bool debug_on_start) { - base::ProcessHandle handle = base::kNullProcessHandle; - base::LaunchApp(MakeCmdLine(procname, debug_on_start).argv(), - fds_to_map, false, &handle); - return handle; - } -#endif -}; - -#endif // BASE_MULTIPROCESS_TEST_H_ |