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); |