| OLD | NEW |
| 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 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 | 445 |
| 446 TestLauncherDelegate::~TestLauncherDelegate() { | 446 TestLauncherDelegate::~TestLauncherDelegate() { |
| 447 } | 447 } |
| 448 | 448 |
| 449 TestLauncher::TestLauncher(TestLauncherDelegate* launcher_delegate, | 449 TestLauncher::TestLauncher(TestLauncherDelegate* launcher_delegate, |
| 450 size_t parallel_jobs) | 450 size_t parallel_jobs) |
| 451 : launcher_delegate_(launcher_delegate), | 451 : launcher_delegate_(launcher_delegate), |
| 452 total_shards_(1), | 452 total_shards_(1), |
| 453 shard_index_(0), | 453 shard_index_(0), |
| 454 cycles_(1), | 454 cycles_(1), |
| 455 test_found_count_(0), |
| 455 test_started_count_(0), | 456 test_started_count_(0), |
| 456 test_finished_count_(0), | 457 test_finished_count_(0), |
| 457 test_success_count_(0), | 458 test_success_count_(0), |
| 458 test_broken_count_(0), | 459 test_broken_count_(0), |
| 459 retry_count_(0), | 460 retry_count_(0), |
| 460 retry_limit_(0), | 461 retry_limit_(0), |
| 461 force_run_broken_tests_(false), | 462 force_run_broken_tests_(false), |
| 462 run_result_(true), | 463 run_result_(true), |
| 463 watchdog_timer_(FROM_HERE, | 464 watchdog_timer_(FROM_HERE, |
| 464 TimeDelta::FromSeconds(kOutputTimeoutSeconds), | 465 TimeDelta::FromSeconds(kOutputTimeoutSeconds), |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 watchdog_timer_.Reset(); | 615 watchdog_timer_.Reset(); |
| 615 | 616 |
| 616 // Do not waste time on timeouts. We include tests with unknown results here | 617 // Do not waste time on timeouts. We include tests with unknown results here |
| 617 // because sometimes (e.g. hang in between unit tests) that's how a timeout | 618 // because sometimes (e.g. hang in between unit tests) that's how a timeout |
| 618 // gets reported. | 619 // gets reported. |
| 619 if (result.status == TestResult::TEST_TIMEOUT || | 620 if (result.status == TestResult::TEST_TIMEOUT || |
| 620 result.status == TestResult::TEST_UNKNOWN) { | 621 result.status == TestResult::TEST_UNKNOWN) { |
| 621 test_broken_count_++; | 622 test_broken_count_++; |
| 622 } | 623 } |
| 623 size_t broken_threshold = | 624 size_t broken_threshold = |
| 624 std::max(static_cast<size_t>(20), test_started_count_ / 10); | 625 std::max(static_cast<size_t>(20), test_found_count_ / 10); |
| 625 if (!force_run_broken_tests_ && test_broken_count_ >= broken_threshold) { | 626 if (!force_run_broken_tests_ && test_broken_count_ >= broken_threshold) { |
| 626 fprintf(stdout, "Too many badly broken tests (%" PRIuS "), exiting now.\n", | 627 fprintf(stdout, "Too many badly broken tests (%" PRIuS "), exiting now.\n", |
| 627 test_broken_count_); | 628 test_broken_count_); |
| 628 fflush(stdout); | 629 fflush(stdout); |
| 629 | 630 |
| 630 #if defined(OS_POSIX) | 631 #if defined(OS_POSIX) |
| 631 KillSpawnedTestProcesses(); | 632 KillSpawnedTestProcesses(); |
| 632 #endif // defined(OS_POSIX) | 633 #endif // defined(OS_POSIX) |
| 633 | 634 |
| 634 results_tracker_.AddGlobalTag("BROKEN_TEST_EARLY_EXIT"); | 635 results_tracker_.AddGlobalTag("BROKEN_TEST_EARLY_EXIT"); |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 // Skip disabled tests unless explicitly requested. | 921 // Skip disabled tests unless explicitly requested. |
| 921 if (!command_line->HasSwitch(kGTestRunDisabledTestsFlag)) | 922 if (!command_line->HasSwitch(kGTestRunDisabledTestsFlag)) |
| 922 continue; | 923 continue; |
| 923 } | 924 } |
| 924 | 925 |
| 925 if (!launcher_delegate_->ShouldRunTest( | 926 if (!launcher_delegate_->ShouldRunTest( |
| 926 tests_[i].test_case_name, tests_[i].test_name)) { | 927 tests_[i].test_case_name, tests_[i].test_name)) { |
| 927 continue; | 928 continue; |
| 928 } | 929 } |
| 929 | 930 |
| 931 // Count tests in the binary, before we apply filter and sharding. |
| 932 test_found_count_++; |
| 933 |
| 930 // Skip the test that doesn't match the filter (if given). | 934 // Skip the test that doesn't match the filter (if given). |
| 931 if (!positive_test_filter_.empty()) { | 935 if (!positive_test_filter_.empty()) { |
| 932 bool found = false; | 936 bool found = false; |
| 933 for (size_t k = 0; k < positive_test_filter_.size(); ++k) { | 937 for (size_t k = 0; k < positive_test_filter_.size(); ++k) { |
| 934 if (MatchPattern(test_name, positive_test_filter_[k])) { | 938 if (MatchPattern(test_name, positive_test_filter_[k])) { |
| 935 found = true; | 939 found = true; |
| 936 break; | 940 break; |
| 937 } | 941 } |
| 938 } | 942 } |
| 939 | 943 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 973 CommandLine::ForCurrentProcess()->HasSwitch(kGTestBreakOnFailure); | 977 CommandLine::ForCurrentProcess()->HasSwitch(kGTestBreakOnFailure); |
| 974 if (cycles_ == 0 || | 978 if (cycles_ == 0 || |
| 975 (stop_on_failure && test_success_count_ != test_finished_count_)) { | 979 (stop_on_failure && test_success_count_ != test_finished_count_)) { |
| 976 MessageLoop::current()->QuitWhenIdle(); | 980 MessageLoop::current()->QuitWhenIdle(); |
| 977 return; | 981 return; |
| 978 } | 982 } |
| 979 | 983 |
| 980 // Special value "-1" means "repeat indefinitely". | 984 // Special value "-1" means "repeat indefinitely". |
| 981 cycles_ = (cycles_ == -1) ? cycles_ : cycles_ - 1; | 985 cycles_ = (cycles_ == -1) ? cycles_ : cycles_ - 1; |
| 982 | 986 |
| 987 test_found_count_ = 0; |
| 983 test_started_count_ = 0; | 988 test_started_count_ = 0; |
| 984 test_finished_count_ = 0; | 989 test_finished_count_ = 0; |
| 985 test_success_count_ = 0; | 990 test_success_count_ = 0; |
| 986 test_broken_count_ = 0; | 991 test_broken_count_ = 0; |
| 987 retry_count_ = 0; | 992 retry_count_ = 0; |
| 988 tests_to_retry_.clear(); | 993 tests_to_retry_.clear(); |
| 989 results_tracker_.OnTestIterationStarting(); | 994 results_tracker_.OnTestIterationStarting(); |
| 990 | 995 |
| 991 ThreadTaskRunnerHandle::Get()->PostTask( | 996 ThreadTaskRunnerHandle::Get()->PostTask( |
| 992 FROM_HERE, Bind(&TestLauncher::RunTests, Unretained(this))); | 997 FROM_HERE, Bind(&TestLauncher::RunTests, Unretained(this))); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1088 } | 1093 } |
| 1089 | 1094 |
| 1090 std::string snippet(full_output.substr(run_pos)); | 1095 std::string snippet(full_output.substr(run_pos)); |
| 1091 if (end_pos != std::string::npos) | 1096 if (end_pos != std::string::npos) |
| 1092 snippet = full_output.substr(run_pos, end_pos - run_pos); | 1097 snippet = full_output.substr(run_pos, end_pos - run_pos); |
| 1093 | 1098 |
| 1094 return snippet; | 1099 return snippet; |
| 1095 } | 1100 } |
| 1096 | 1101 |
| 1097 } // namespace base | 1102 } // namespace base |
| OLD | NEW |