Home | History | Annotate | Download | only in test
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      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/message_loop/message_loop.h"
      8 #include "net/base/network_change_notifier.h"
      9 #include "net/http/http_stream_factory.h"
     10 #include "net/spdy/spdy_session.h"
     11 #include "testing/gtest/include/gtest/gtest.h"
     12 
     13 #if defined(USE_NSS) || defined(OS_IOS)
     14 #include "net/ocsp/nss_ocsp.h"
     15 #endif
     16 
     17 class StaticReset : public ::testing::EmptyTestEventListener {
     18   virtual void OnTestStart(const ::testing::TestInfo& test_info) OVERRIDE {
     19     net::HttpStreamFactory::ResetStaticSettingsToInit();
     20   }
     21 };
     22 
     23 NetTestSuite::NetTestSuite(int argc, char** argv)
     24     : TestSuite(argc, argv) {
     25 }
     26 
     27 NetTestSuite::NetTestSuite(int argc, char** argv,
     28                            bool create_at_exit_manager)
     29     : TestSuite(argc, argv, create_at_exit_manager) {
     30 }
     31 
     32 NetTestSuite::~NetTestSuite() {}
     33 
     34 void NetTestSuite::Initialize() {
     35   TestSuite::Initialize();
     36   ::testing::UnitTest::GetInstance()->listeners().Append(new StaticReset());
     37   InitializeTestThread();
     38 }
     39 
     40 void NetTestSuite::Shutdown() {
     41 #if defined(USE_NSS) || defined(OS_IOS)
     42   net::ShutdownNSSHttpIO();
     43 #endif
     44 
     45   // We want to destroy this here before the TestSuite continues to tear down
     46   // the environment.
     47   message_loop_.reset();
     48 
     49   TestSuite::Shutdown();
     50 }
     51 
     52 void NetTestSuite::InitializeTestThread() {
     53   network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock());
     54 
     55   InitializeTestThreadNoNetworkChangeNotifier();
     56 }
     57 
     58 void NetTestSuite::InitializeTestThreadNoNetworkChangeNotifier() {
     59   host_resolver_proc_ = new net::RuleBasedHostResolverProc(NULL);
     60   scoped_host_resolver_proc_.Init(host_resolver_proc_.get());
     61   // In case any attempts are made to resolve host names, force them all to
     62   // be mapped to localhost.  This prevents DNS queries from being sent in
     63   // the process of running these unit tests.
     64   host_resolver_proc_->AddRule("*", "127.0.0.1");
     65 
     66   message_loop_.reset(new base::MessageLoopForIO());
     67 }
     68