| 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..78307f756b0dcac8aa7df30bd3652a76e1ea5f50 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 lines up with various //net security features, like Certificate
|
| + // Transparency or HPKP, in that they require the build time be less than 70
|
| + // days old. Moreover, operating on the assumption that tests are run against
|
| + // recently compiled builds, this also serves as a sanity check for the
|
| + // system clock, which 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).magnitude() <= kMaxAge)
|
| + 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);
|
|
|
|
|