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