xref: /aosp_15_r20/external/cronet/net/test/run_all_unittests.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include <iostream>
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "base/build_time.h"
8*6777b538SAndroid Build Coastguard Worker #include "base/functional/bind.h"
9*6777b538SAndroid Build Coastguard Worker #include "base/test/launcher/unit_test_launcher.h"
10*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h"
11*6777b538SAndroid Build Coastguard Worker #include "net/socket/transport_client_socket_pool.h"
12*6777b538SAndroid Build Coastguard Worker #include "net/test/net_test_suite.h"
13*6777b538SAndroid Build Coastguard Worker #include "url/buildflags.h"
14*6777b538SAndroid Build Coastguard Worker 
15*6777b538SAndroid Build Coastguard Worker namespace {
16*6777b538SAndroid Build Coastguard Worker 
VerifyBuildIsTimely()17*6777b538SAndroid Build Coastguard Worker bool VerifyBuildIsTimely() {
18*6777b538SAndroid Build Coastguard Worker   // This lines up with various //net security features, like Certificate
19*6777b538SAndroid Build Coastguard Worker   // Transparency or HPKP, in that they require the build time be less than 70
20*6777b538SAndroid Build Coastguard Worker   // days old. Moreover, operating on the assumption that tests are run against
21*6777b538SAndroid Build Coastguard Worker   // recently compiled builds, this also serves as a sanity check for the
22*6777b538SAndroid Build Coastguard Worker   // system clock, which should be close to the build date.
23*6777b538SAndroid Build Coastguard Worker   base::TimeDelta kMaxAge = base::Days(70);
24*6777b538SAndroid Build Coastguard Worker 
25*6777b538SAndroid Build Coastguard Worker   base::Time build_time = base::GetBuildTime();
26*6777b538SAndroid Build Coastguard Worker   base::Time now = base::Time::Now();
27*6777b538SAndroid Build Coastguard Worker 
28*6777b538SAndroid Build Coastguard Worker   if ((now - build_time).magnitude() <= kMaxAge)
29*6777b538SAndroid Build Coastguard Worker     return true;
30*6777b538SAndroid Build Coastguard Worker 
31*6777b538SAndroid Build Coastguard Worker   std::cerr
32*6777b538SAndroid Build Coastguard Worker       << "ERROR: This build is more than " << kMaxAge.InDays()
33*6777b538SAndroid Build Coastguard Worker       << " days out of date.\n"
34*6777b538SAndroid Build Coastguard Worker          "This could indicate a problem with the device's clock, or the build "
35*6777b538SAndroid Build Coastguard Worker          "is simply too old.\n"
36*6777b538SAndroid Build Coastguard Worker          "See crbug.com/666821 for why this is a problem\n"
37*6777b538SAndroid Build Coastguard Worker       << "    base::Time::Now() --> " << now << " (" << now.ToInternalValue()
38*6777b538SAndroid Build Coastguard Worker       << ")\n"
39*6777b538SAndroid Build Coastguard Worker       << "    base::GetBuildTime() --> " << build_time << " ("
40*6777b538SAndroid Build Coastguard Worker       << build_time.ToInternalValue() << ")\n";
41*6777b538SAndroid Build Coastguard Worker 
42*6777b538SAndroid Build Coastguard Worker   return false;
43*6777b538SAndroid Build Coastguard Worker }
44*6777b538SAndroid Build Coastguard Worker 
45*6777b538SAndroid Build Coastguard Worker }  // namespace
46*6777b538SAndroid Build Coastguard Worker 
main(int argc,char ** argv)47*6777b538SAndroid Build Coastguard Worker int main(int argc, char** argv) {
48*6777b538SAndroid Build Coastguard Worker   if (!VerifyBuildIsTimely())
49*6777b538SAndroid Build Coastguard Worker     return 1;
50*6777b538SAndroid Build Coastguard Worker 
51*6777b538SAndroid Build Coastguard Worker   NetTestSuite test_suite(argc, argv);
52*6777b538SAndroid Build Coastguard Worker   net::TransportClientSocketPool::set_connect_backup_jobs_enabled(false);
53*6777b538SAndroid Build Coastguard Worker 
54*6777b538SAndroid Build Coastguard Worker   return base::LaunchUnitTests(
55*6777b538SAndroid Build Coastguard Worker       argc, argv,
56*6777b538SAndroid Build Coastguard Worker       base::BindOnce(&NetTestSuite::Run, base::Unretained(&test_suite)));
57*6777b538SAndroid Build Coastguard Worker }
58