diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-09 18:53:13 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-09 18:53:13 +0000 |
commit | 9749550b77e75523ed3bbedfb52b34536799e280 (patch) | |
tree | dba56656d68ef252bc8d43a0ac821e856d9de194 | |
parent | c1db769fcfe01c337c207f0f178d49ccc6c417d3 (diff) | |
download | chromium_src-9749550b77e75523ed3bbedfb52b34536799e280.zip chromium_src-9749550b77e75523ed3bbedfb52b34536799e280.tar.gz chromium_src-9749550b77e75523ed3bbedfb52b34536799e280.tar.bz2 |
GTTF: Initialize TestTimeouts in out-of-process test runner.
This is needed to make command-line changes take effect.
Also, added checks to prevent a similar mistake from happening in the future. Actually, the checks detected such misuse in process_util_unittests, and this CL fixes it.
BUG=85287
Review URL: http://codereview.chromium.org/7044048
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88561 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | base/process_util_unittest.cc | 11 | ||||
-rw-r--r-- | base/test/test_timeouts.h | 27 | ||||
-rw-r--r-- | chrome/test/out_of_proc_test_runner.cc | 1 |
3 files changed, 28 insertions, 11 deletions
diff --git a/base/process_util_unittest.cc b/base/process_util_unittest.cc index 02d02ac..06b7537 100644 --- a/base/process_util_unittest.cc +++ b/base/process_util_unittest.cc @@ -59,9 +59,6 @@ const int kExpectedKilledExitCode = 1; const int kExpectedStillRunningExitCode = 0; #endif -// The longest we'll wait for a process, in milliseconds. -const int kMaxWaitTimeMs = TestTimeouts::action_max_timeout_ms(); - // Sleeps until file filename is created. void WaitToDie(const char* filename) { FILE *fp; @@ -94,7 +91,7 @@ base::TerminationStatus WaitForChildTermination(base::ProcessHandle handle, base::PlatformThread::Sleep(kIntervalMs); waited += kIntervalMs; } while (status == base::TERMINATION_STATUS_STILL_RUNNING && - waited < kMaxWaitTimeMs); + waited < TestTimeouts::action_max_timeout_ms()); return status; } @@ -116,7 +113,8 @@ MULTIPROCESS_TEST_MAIN(SimpleChildProcess) { TEST_F(ProcessUtilTest, SpawnChild) { base::ProcessHandle handle = this->SpawnChild("SimpleChildProcess", false); ASSERT_NE(base::kNullProcessHandle, handle); - EXPECT_TRUE(base::WaitForSingleProcess(handle, kMaxWaitTimeMs)); + EXPECT_TRUE(base::WaitForSingleProcess( + handle, TestTimeouts::action_max_timeout_ms())); base::CloseProcessHandle(handle); } @@ -130,7 +128,8 @@ TEST_F(ProcessUtilTest, KillSlowChild) { base::ProcessHandle handle = this->SpawnChild("SlowChildProcess", false); ASSERT_NE(base::kNullProcessHandle, handle); SignalChildren(kSignalFileSlow); - EXPECT_TRUE(base::WaitForSingleProcess(handle, kMaxWaitTimeMs)); + EXPECT_TRUE(base::WaitForSingleProcess( + handle, TestTimeouts::action_max_timeout_ms())); base::CloseProcessHandle(handle); remove(kSignalFileSlow); } diff --git a/base/test/test_timeouts.h b/base/test/test_timeouts.h index 67b81b0..9ae2b04 100644 --- a/base/test/test_timeouts.h +++ b/base/test/test_timeouts.h @@ -6,6 +6,7 @@ #define BASE_TEST_TEST_TIMEOUTS_H_ #include "base/basictypes.h" +#include "base/logging.h" // Returns common timeouts to use in tests. Makes it possible to adjust // the timeouts for different environments (like Valgrind). @@ -16,28 +17,44 @@ class TestTimeouts { static void Initialize(); // Timeout for actions that are expected to finish "almost instantly". - static int tiny_timeout_ms() { return tiny_timeout_ms_; } + static int tiny_timeout_ms() { + DCHECK(initialized_); + return tiny_timeout_ms_; + } // Timeout to wait for something to happen. If you are not sure // which timeout to use, this is the one you want. - static int action_timeout_ms() { return action_timeout_ms_; } + static int action_timeout_ms() { + DCHECK(initialized_); + return action_timeout_ms_; + } // Timeout longer than the above, but still suitable to use // multiple times in a single test. Use if the timeout above // is not sufficient. - static int action_max_timeout_ms() { return action_max_timeout_ms_; } + static int action_max_timeout_ms() { + DCHECK(initialized_); + return action_max_timeout_ms_; + } // Timeout for a large test that may take a few minutes to run. - static int large_test_timeout_ms() { return large_test_timeout_ms_; } + static int large_test_timeout_ms() { + DCHECK(initialized_); + return large_test_timeout_ms_; + } // Timeout for a huge test (like running a layout test inside the browser). // Do not use unless absolutely necessary - try to make the test smaller. // Do not use multiple times in a single test. - static int huge_test_timeout_ms() { return huge_test_timeout_ms_; } + static int huge_test_timeout_ms() { + DCHECK(initialized_); + return huge_test_timeout_ms_; + } // Timeout to wait for a live operation to complete. Used by tests that access // external services. static int live_operation_timeout_ms() { + DCHECK(initialized_); return live_operation_timeout_ms_; } diff --git a/chrome/test/out_of_proc_test_runner.cc b/chrome/test/out_of_proc_test_runner.cc index aef8883..fad9635 100644 --- a/chrome/test/out_of_proc_test_runner.cc +++ b/chrome/test/out_of_proc_test_runner.cc @@ -623,6 +623,7 @@ int main(int argc, char** argv) { "process mode).\n"); testing::InitGoogleTest(&argc, argv); + TestTimeouts::Initialize(); // Make sure the entire browser code is loaded into memory. Reading it // from disk may be slow on a busy bot, and can easily exceed the default |