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 WorkerNetTestSuite::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 WorkerNetTestSuite::~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 Workervoid 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 Workervoid NetTestSuite::Shutdown() { 60*6777b538SAndroid Build Coastguard Worker TestSuite::Shutdown(); 61*6777b538SAndroid Build Coastguard Worker } 62*6777b538SAndroid Build Coastguard Worker InitializeTestThread()63*6777b538SAndroid Build Coastguard Workervoid 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 Workervoid 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