xref: /aosp_15_r20/external/cronet/net/test/net_test_suite.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 "net/test/net_test_suite.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "base/check_op.h"
8*6777b538SAndroid Build Coastguard Worker #include "net/base/network_change_notifier.h"
9*6777b538SAndroid Build Coastguard Worker #include "net/http/http_stream_factory.h"
10*6777b538SAndroid Build Coastguard Worker #include "net/quic/platform/impl/quic_test_flags_utils.h"
11*6777b538SAndroid Build Coastguard Worker #include "net/spdy/spdy_session.h"
12*6777b538SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
13*6777b538SAndroid Build Coastguard Worker 
14*6777b538SAndroid Build Coastguard Worker namespace {
15*6777b538SAndroid Build Coastguard Worker class NetUnitTestEventListener : public testing::EmptyTestEventListener {
16*6777b538SAndroid Build Coastguard Worker  public:
17*6777b538SAndroid Build Coastguard Worker   NetUnitTestEventListener() = default;
18*6777b538SAndroid Build Coastguard Worker   NetUnitTestEventListener(const NetUnitTestEventListener&) = delete;
19*6777b538SAndroid Build Coastguard Worker   NetUnitTestEventListener& operator=(const NetUnitTestEventListener&) = delete;
20*6777b538SAndroid Build Coastguard Worker   ~NetUnitTestEventListener() override = default;
21*6777b538SAndroid Build Coastguard Worker 
OnTestStart(const testing::TestInfo & test_info)22*6777b538SAndroid Build Coastguard Worker   void OnTestStart(const testing::TestInfo& test_info) override {
23*6777b538SAndroid Build Coastguard Worker     QuicFlagChecker checker;
24*6777b538SAndroid Build Coastguard Worker     DCHECK(!quic_flags_saver_);
25*6777b538SAndroid Build Coastguard Worker     quic_flags_saver_ = std::make_unique<QuicFlagSaverImpl>();
26*6777b538SAndroid Build Coastguard Worker   }
27*6777b538SAndroid Build Coastguard Worker 
OnTestEnd(const testing::TestInfo & test_info)28*6777b538SAndroid Build Coastguard Worker   void OnTestEnd(const testing::TestInfo& test_info) override {
29*6777b538SAndroid Build Coastguard Worker     quic_flags_saver_.reset();
30*6777b538SAndroid Build Coastguard Worker   }
31*6777b538SAndroid Build Coastguard Worker 
32*6777b538SAndroid Build Coastguard Worker  private:
33*6777b538SAndroid Build Coastguard Worker   std::unique_ptr<QuicFlagSaverImpl> quic_flags_saver_;
34*6777b538SAndroid Build Coastguard Worker };
35*6777b538SAndroid Build Coastguard Worker 
36*6777b538SAndroid Build Coastguard Worker NetTestSuite* g_current_net_test_suite = nullptr;
37*6777b538SAndroid Build Coastguard Worker }  // namespace
38*6777b538SAndroid Build Coastguard Worker 
NetTestSuite(int argc,char ** argv)39*6777b538SAndroid Build Coastguard Worker NetTestSuite::NetTestSuite(int argc, char** argv)
40*6777b538SAndroid Build Coastguard Worker     : TestSuite(argc, argv) {
41*6777b538SAndroid Build Coastguard Worker   DCHECK(!g_current_net_test_suite);
42*6777b538SAndroid Build Coastguard Worker   g_current_net_test_suite = this;
43*6777b538SAndroid Build Coastguard Worker }
44*6777b538SAndroid Build Coastguard Worker 
~NetTestSuite()45*6777b538SAndroid Build Coastguard Worker NetTestSuite::~NetTestSuite() {
46*6777b538SAndroid Build Coastguard Worker   DCHECK_EQ(g_current_net_test_suite, this);
47*6777b538SAndroid Build Coastguard Worker   g_current_net_test_suite = nullptr;
48*6777b538SAndroid Build Coastguard Worker }
49*6777b538SAndroid Build Coastguard Worker 
Initialize()50*6777b538SAndroid Build Coastguard Worker void NetTestSuite::Initialize() {
51*6777b538SAndroid Build Coastguard Worker   TestSuite::Initialize();
52*6777b538SAndroid Build Coastguard Worker   InitializeTestThread();
53*6777b538SAndroid Build Coastguard Worker 
54*6777b538SAndroid Build Coastguard Worker   testing::TestEventListeners& listeners =
55*6777b538SAndroid Build Coastguard Worker       testing::UnitTest::GetInstance()->listeners();
56*6777b538SAndroid Build Coastguard Worker   listeners.Append(new NetUnitTestEventListener());
57*6777b538SAndroid Build Coastguard Worker }
58*6777b538SAndroid Build Coastguard Worker 
Shutdown()59*6777b538SAndroid Build Coastguard Worker void NetTestSuite::Shutdown() {
60*6777b538SAndroid Build Coastguard Worker   TestSuite::Shutdown();
61*6777b538SAndroid Build Coastguard Worker }
62*6777b538SAndroid Build Coastguard Worker 
InitializeTestThread()63*6777b538SAndroid Build Coastguard Worker void NetTestSuite::InitializeTestThread() {
64*6777b538SAndroid Build Coastguard Worker   network_change_notifier_ = net::NetworkChangeNotifier::CreateMockIfNeeded();
65*6777b538SAndroid Build Coastguard Worker 
66*6777b538SAndroid Build Coastguard Worker   InitializeTestThreadNoNetworkChangeNotifier();
67*6777b538SAndroid Build Coastguard Worker }
68*6777b538SAndroid Build Coastguard Worker 
InitializeTestThreadNoNetworkChangeNotifier()69*6777b538SAndroid Build Coastguard Worker void NetTestSuite::InitializeTestThreadNoNetworkChangeNotifier() {
70*6777b538SAndroid Build Coastguard Worker   host_resolver_proc_ =
71*6777b538SAndroid Build Coastguard Worker       base::MakeRefCounted<net::RuleBasedHostResolverProc>(nullptr);
72*6777b538SAndroid Build Coastguard Worker   scoped_host_resolver_proc_.Init(host_resolver_proc_.get());
73*6777b538SAndroid Build Coastguard Worker   // In case any attempts are made to resolve host names, force them all to
74*6777b538SAndroid Build Coastguard Worker   // be mapped to localhost.  This prevents DNS queries from being sent in
75*6777b538SAndroid Build Coastguard Worker   // the process of running these unit tests.
76*6777b538SAndroid Build Coastguard Worker   host_resolver_proc_->AddRule("*", "127.0.0.1");
77*6777b538SAndroid Build Coastguard Worker }
78