Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3377)

Unified Diff: base/test/parallel_test_launcher.cc

Issue 23757033: GTTF: Support running browser tests in parallel (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/test/parallel_test_launcher.cc
diff --git a/base/test/parallel_test_launcher.cc b/base/test/parallel_test_launcher.cc
index cbcac9a0019c093914c9d716748eb962d8d1e84f..7fc5f652531c7ec04faf7f64e8e111d5abeb2f05 100644
--- a/base/test/parallel_test_launcher.cc
+++ b/base/test/parallel_test_launcher.cc
@@ -45,9 +45,10 @@ const int kOutputTimeoutSeconds = 15;
void RunCallback(
const ParallelTestLauncher::LaunchChildGTestProcessCallback& callback,
int exit_code,
+ const TimeDelta& elapsed_time,
bool was_timeout,
const std::string& output) {
- callback.Run(exit_code, was_timeout, output);
+ callback.Run(exit_code, elapsed_time, was_timeout, output);
}
void DoLaunchChildTestProcess(
@@ -55,6 +56,8 @@ void DoLaunchChildTestProcess(
base::TimeDelta timeout,
scoped_refptr<MessageLoopProxy> message_loop_proxy,
const ParallelTestLauncher::LaunchChildGTestProcessCallback& callback) {
+ TimeTicks start_time = TimeTicks::Now();
+
// Redirect child process output to a file.
base::FilePath output_file;
CHECK(file_util::CreateTemporaryFile(&output_file));
@@ -116,6 +119,7 @@ void DoLaunchChildTestProcess(
Bind(&RunCallback,
callback,
exit_code,
+ TimeTicks::Now() - start_time,
was_timeout,
output_file_contents));
}
@@ -147,6 +151,43 @@ void ParallelTestLauncher::LaunchChildGTestProcess(
const LaunchChildGTestProcessCallback& callback) {
DCHECK(thread_checker_.CalledOnValidThread());
+ LaunchSequencedChildGTestProcess(
+ worker_pool_owner_->pool()->GetSequenceToken(),
+ command_line,
+ wrapper,
+ timeout,
+ callback);
+}
+
+void ParallelTestLauncher::LaunchNamedSequencedChildGTestProcess(
+ const std::string& token_name,
+ const CommandLine& command_line,
+ const std::string& wrapper,
+ base::TimeDelta timeout,
+ const LaunchChildGTestProcessCallback& callback) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
+ LaunchSequencedChildGTestProcess(
+ worker_pool_owner_->pool()->GetNamedSequenceToken(token_name),
+ command_line,
+ wrapper,
+ timeout,
+ callback);
+}
+
+void ParallelTestLauncher::ResetOutputWatchdog() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ timer_.Reset();
+}
+
+void ParallelTestLauncher::LaunchSequencedChildGTestProcess(
+ SequencedWorkerPool::SequenceToken sequence_token,
+ const CommandLine& command_line,
+ const std::string& wrapper,
+ base::TimeDelta timeout,
+ const LaunchChildGTestProcessCallback& callback) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
// Record the exact command line used to launch the child.
CommandLine new_command_line(
PrepareCommandLineForGTest(command_line, wrapper));
@@ -154,7 +195,8 @@ void ParallelTestLauncher::LaunchChildGTestProcess(
running_processes_map_.insert(
std::make_pair(launch_sequence_number_, new_command_line));
- worker_pool_owner_->pool()->PostWorkerTask(
+ worker_pool_owner_->pool()->PostSequencedWorkerTask(
+ sequence_token,
FROM_HERE,
Bind(&DoLaunchChildTestProcess,
new_command_line,
@@ -166,20 +208,16 @@ void ParallelTestLauncher::LaunchChildGTestProcess(
callback)));
}
-void ParallelTestLauncher::ResetOutputWatchdog() {
- DCHECK(thread_checker_.CalledOnValidThread());
- timer_.Reset();
-}
-
void ParallelTestLauncher::OnLaunchTestProcessFinished(
size_t sequence_number,
const LaunchChildGTestProcessCallback& callback,
int exit_code,
+ const TimeDelta& elapsed_time,
bool was_timeout,
const std::string& output) {
DCHECK(thread_checker_.CalledOnValidThread());
running_processes_map_.erase(sequence_number);
- callback.Run(exit_code, was_timeout, output);
+ callback.Run(exit_code, elapsed_time, was_timeout, output);
}
void ParallelTestLauncher::OnOutputTimeout() {

Powered by Google App Engine
This is Rietveld 408576698