Chromium Code Reviews| Index: net/test/run_all_unittests.cc |
| diff --git a/net/test/run_all_unittests.cc b/net/test/run_all_unittests.cc |
| index 604888e07f2ee39b6701cd9aed0b72586bbd9668..075ab376bdddda4c93893c4b4fdd756941fa2c4e 100644 |
| --- a/net/test/run_all_unittests.cc |
| +++ b/net/test/run_all_unittests.cc |
| @@ -2,6 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include "base/build_time.h" |
| #include "base/metrics/statistics_recorder.h" |
| #include "base/test/launcher/unit_test_launcher.h" |
| #include "build/build_config.h" |
| @@ -23,6 +24,38 @@ |
| using net::internal::ClientSocketPoolBaseHelper; |
| +namespace { |
| + |
| +bool VerifyBuildIsTimely() { |
| + // This (currently) lines up with the policy used by CTPolicyEnforcer, which |
| + // requires the build be less than 70 days old. Moreover, operating on the |
| + // assumption that tests are run on recently compiled builds, this also |
| + // serves as a sanity check for the system clock (it should be close to the |
| + // build date). |
| + base::TimeDelta kMaxAge = base::TimeDelta::FromDays(70); |
| + |
| + base::Time build_time = base::GetBuildTime(); |
| + base::Time now = base::Time::Now(); |
| + |
| + if ((now - build_time) <= kMaxAge) |
|
jbudorick
2016/11/22 15:59:53
This only works if now is >70 days ahead of build
eroman
2016/11/22 22:49:46
Good point! Fixed.
(Should probably apply somethi
eroman
2016/11/22 22:56:03
Also oddly, the opposite seems to be the case on t
eroman
2016/11/22 22:59:16
Actually Ryan pointed out I am an idiot. Current t
|
| + return true; |
| + |
| + std::cerr |
| + << "ERROR: This build is more than " << kMaxAge.InDays() |
| + << " days out of date.\n" |
| + "This could indicate a problem with the device's clock, or the build " |
| + "is simply too old.\n" |
| + "See crbug.com/666821 for why this is a problem\n" |
| + << " base::Time::Now() --> " << now << " (" << now.ToInternalValue() |
| + << ")\n" |
| + << " base::GetBuildTime() --> " << build_time << " (" |
| + << build_time.ToInternalValue() << ")\n"; |
| + |
| + return false; |
| +} |
| + |
| +} // namespace |
| + |
| int main(int argc, char** argv) { |
| // Record histograms, so we can get histograms data in tests. |
| base::StatisticsRecorder::Initialize(); |
| @@ -42,6 +75,9 @@ int main(int argc, char** argv) { |
| arraysize(kNetTestRegisteredMethods)); |
| #endif |
| + if (!VerifyBuildIsTimely()) |
| + return 1; |
| + |
| NetTestSuite test_suite(argc, argv); |
| ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled(false); |