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

Side by Side Diff: test/launcher/test_launcher.cc

Issue 2045303002: Update to Chromium //base at Chromium commit 3e81715e6d3a4324362635aea46ce1f1a163cca1. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/domokit/base@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
« no previous file with comments | « test/launcher/test_launcher.h ('k') | test/launcher/test_results_tracker.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/test/launcher/test_launcher.h" 5 #include "base/test/launcher/test_launcher.h"
6 6
7 #if defined(OS_POSIX) 7 #if defined(OS_POSIX)
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #endif 9 #endif
10 10
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 : launcher_delegate_(launcher_delegate), 449 : launcher_delegate_(launcher_delegate),
450 total_shards_(1), 450 total_shards_(1),
451 shard_index_(0), 451 shard_index_(0),
452 cycles_(1), 452 cycles_(1),
453 test_started_count_(0), 453 test_started_count_(0),
454 test_finished_count_(0), 454 test_finished_count_(0),
455 test_success_count_(0), 455 test_success_count_(0),
456 test_broken_count_(0), 456 test_broken_count_(0),
457 retry_count_(0), 457 retry_count_(0),
458 retry_limit_(0), 458 retry_limit_(0),
459 force_run_broken_tests_(false),
459 run_result_(true), 460 run_result_(true),
460 watchdog_timer_(FROM_HERE, 461 watchdog_timer_(FROM_HERE,
461 TimeDelta::FromSeconds(kOutputTimeoutSeconds), 462 TimeDelta::FromSeconds(kOutputTimeoutSeconds),
462 this, 463 this,
463 &TestLauncher::OnOutputTimeout), 464 &TestLauncher::OnOutputTimeout),
464 parallel_jobs_(parallel_jobs) { 465 parallel_jobs_(parallel_jobs) {}
465 }
466 466
467 TestLauncher::~TestLauncher() { 467 TestLauncher::~TestLauncher() {
468 if (worker_pool_owner_) 468 if (worker_pool_owner_)
469 worker_pool_owner_->pool()->Shutdown(); 469 worker_pool_owner_->pool()->Shutdown();
470 } 470 }
471 471
472 bool TestLauncher::Run() { 472 bool TestLauncher::Run() {
473 if (!Init()) 473 if (!Init())
474 return false; 474 return false;
475 475
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 612
613 // Do not waste time on timeouts. We include tests with unknown results here 613 // Do not waste time on timeouts. We include tests with unknown results here
614 // because sometimes (e.g. hang in between unit tests) that's how a timeout 614 // because sometimes (e.g. hang in between unit tests) that's how a timeout
615 // gets reported. 615 // gets reported.
616 if (result.status == TestResult::TEST_TIMEOUT || 616 if (result.status == TestResult::TEST_TIMEOUT ||
617 result.status == TestResult::TEST_UNKNOWN) { 617 result.status == TestResult::TEST_UNKNOWN) {
618 test_broken_count_++; 618 test_broken_count_++;
619 } 619 }
620 size_t broken_threshold = 620 size_t broken_threshold =
621 std::max(static_cast<size_t>(20), test_started_count_ / 10); 621 std::max(static_cast<size_t>(20), test_started_count_ / 10);
622 if (test_broken_count_ >= broken_threshold) { 622 if (!force_run_broken_tests_ && test_broken_count_ >= broken_threshold) {
623 fprintf(stdout, "Too many badly broken tests (%" PRIuS "), exiting now.\n", 623 fprintf(stdout, "Too many badly broken tests (%" PRIuS "), exiting now.\n",
624 test_broken_count_); 624 test_broken_count_);
625 fflush(stdout); 625 fflush(stdout);
626 626
627 #if defined(OS_POSIX) 627 #if defined(OS_POSIX)
628 KillSpawnedTestProcesses(); 628 KillSpawnedTestProcesses();
629 #endif // defined(OS_POSIX) 629 #endif // defined(OS_POSIX)
630 630
631 results_tracker_.AddGlobalTag("BROKEN_TEST_EARLY_EXIT"); 631 results_tracker_.AddGlobalTag("BROKEN_TEST_EARLY_EXIT");
632 results_tracker_.AddGlobalTag(kUnreliableResultsTag); 632 results_tracker_.AddGlobalTag(kUnreliableResultsTag);
633 MaybeSaveSummaryAsJSON(); 633 MaybeSaveSummaryAsJSON();
634 634
635 exit(1); 635 exit(1);
636 } 636 }
637 637
638 if (test_finished_count_ != test_started_count_) 638 if (test_finished_count_ != test_started_count_)
639 return; 639 return;
640 640
641 if (tests_to_retry_.empty() || retry_count_ >= retry_limit_) { 641 if (tests_to_retry_.empty() || retry_count_ >= retry_limit_) {
642 OnTestIterationFinished(); 642 OnTestIterationFinished();
643 return; 643 return;
644 } 644 }
645 645
646 if (tests_to_retry_.size() >= broken_threshold) { 646 if (!force_run_broken_tests_ && tests_to_retry_.size() >= broken_threshold) {
647 fprintf(stdout, 647 fprintf(stdout,
648 "Too many failing tests (%" PRIuS "), skipping retries.\n", 648 "Too many failing tests (%" PRIuS "), skipping retries.\n",
649 tests_to_retry_.size()); 649 tests_to_retry_.size());
650 fflush(stdout); 650 fflush(stdout);
651 651
652 results_tracker_.AddGlobalTag("BROKEN_TEST_SKIPPED_RETRIES"); 652 results_tracker_.AddGlobalTag("BROKEN_TEST_SKIPPED_RETRIES");
653 results_tracker_.AddGlobalTag(kUnreliableResultsTag); 653 results_tracker_.AddGlobalTag(kUnreliableResultsTag);
654 654
655 OnTestIterationFinished(); 655 OnTestIterationFinished();
656 return; 656 return;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 return false; 748 return false;
749 } 749 }
750 750
751 retry_limit_ = retry_limit; 751 retry_limit_ = retry_limit;
752 } else if (!command_line->HasSwitch(kGTestFilterFlag) || BotModeEnabled()) { 752 } else if (!command_line->HasSwitch(kGTestFilterFlag) || BotModeEnabled()) {
753 // Retry failures 3 times by default if we are running all of the tests or 753 // Retry failures 3 times by default if we are running all of the tests or
754 // in bot mode. 754 // in bot mode.
755 retry_limit_ = 3; 755 retry_limit_ = 3;
756 } 756 }
757 757
758 if (command_line->HasSwitch(switches::kTestLauncherForceRunBrokenTests))
759 force_run_broken_tests_ = true;
760
758 if (command_line->HasSwitch(switches::kTestLauncherJobs)) { 761 if (command_line->HasSwitch(switches::kTestLauncherJobs)) {
759 int jobs = -1; 762 int jobs = -1;
760 if (!StringToInt(command_line->GetSwitchValueASCII( 763 if (!StringToInt(command_line->GetSwitchValueASCII(
761 switches::kTestLauncherJobs), &jobs) || 764 switches::kTestLauncherJobs), &jobs) ||
762 jobs < 0) { 765 jobs < 0) {
763 LOG(ERROR) << "Invalid value for " << switches::kTestLauncherJobs; 766 LOG(ERROR) << "Invalid value for " << switches::kTestLauncherJobs;
764 return false; 767 return false;
765 } 768 }
766 769
767 parallel_jobs_ = jobs; 770 parallel_jobs_ = jobs;
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 } 1082 }
1080 1083
1081 std::string snippet(full_output.substr(run_pos)); 1084 std::string snippet(full_output.substr(run_pos));
1082 if (end_pos != std::string::npos) 1085 if (end_pos != std::string::npos)
1083 snippet = full_output.substr(run_pos, end_pos - run_pos); 1086 snippet = full_output.substr(run_pos, end_pos - run_pos);
1084 1087
1085 return snippet; 1088 return snippet;
1086 } 1089 }
1087 1090
1088 } // namespace base 1091 } // namespace base
OLDNEW
« no previous file with comments | « test/launcher/test_launcher.h ('k') | test/launcher/test_results_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698