Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: chrome/browser/chrome_browser_main_unittest.cc

Issue 8676028: Move shutdown code to avoid crash in WarmConnectionFieldTrial_WarmestSocket (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + re-enable tests Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/chromeos/chrome_browser_main_chromeos.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "chrome/browser/chrome_browser_main.h" 10 #include "chrome/browser/chrome_browser_main.h"
11 #include "chrome/browser/chrome_content_browser_client.h" 11 #include "chrome/browser/chrome_content_browser_client.h"
12 #include "chrome/common/chrome_switches.h" 12 #include "chrome/common/chrome_switches.h"
13 #include "chrome/test/base/testing_pref_service.h" 13 #include "chrome/test/base/testing_pref_service.h"
14 #include "content/public/browser/content_browser_client.h" 14 #include "content/public/browser/content_browser_client.h"
15 #include "content/public/common/main_function_params.h" 15 #include "content/public/common/main_function_params.h"
16 #include "net/socket/client_socket_pool_base.h" 16 #include "net/socket/client_socket_pool_base.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 class BrowserMainTest : public testing::Test { 19 class BrowserMainTest : public testing::Test {
20 public: 20 public:
21 BrowserMainTest() : command_line_(CommandLine::NO_PROGRAM) {} 21 BrowserMainTest() : command_line_(CommandLine::NO_PROGRAM) {}
22 22
23 protected: 23 protected:
24 TestingPrefService pref_service_; 24 TestingPrefService pref_service_;
25 CommandLine command_line_; 25 CommandLine command_line_;
26 }; 26 };
27 27
28 // http://crbug.com/105326 28 TEST_F(BrowserMainTest, WarmConnectionFieldTrial_WarmestSocket) {
29 // Crashes unit_tests on "Linux Clang (ChromeOS dbg)".
30 #if defined(OS_CHROMEOS)
31 #define MAYBE_WarmConnectionFieldTrial_WarmestSocket \
32 DISABLED_WarmConnectionFieldTrial_WarmestSocket
33 #else
34 #define MAYBE_WarmConnectionFieldTrial_WarmestSocket \
35 WarmConnectionFieldTrial_WarmestSocket
36 #endif
37
38 TEST_F(BrowserMainTest, MAYBE_WarmConnectionFieldTrial_WarmestSocket) {
39 command_line_.AppendSwitchASCII(switches::kSocketReusePolicy, "0"); 29 command_line_.AppendSwitchASCII(switches::kSocketReusePolicy, "0");
40 30
41 scoped_ptr<content::MainFunctionParams> params( 31 scoped_ptr<content::MainFunctionParams> params(
42 new content::MainFunctionParams(command_line_)); 32 new content::MainFunctionParams(command_line_));
43 scoped_ptr<content::BrowserMainParts> bw( 33 scoped_ptr<content::BrowserMainParts> bw(
44 content::GetContentClient()->browser()->CreateBrowserMainParts(*params)); 34 content::GetContentClient()->browser()->CreateBrowserMainParts(*params));
45 ChromeBrowserMainParts* cbw = static_cast<ChromeBrowserMainParts*>(bw.get()); 35 ChromeBrowserMainParts* cbw = static_cast<ChromeBrowserMainParts*>(bw.get());
46 EXPECT_TRUE(cbw); 36 EXPECT_TRUE(cbw);
47 if (cbw) { 37 if (cbw) {
48 cbw->WarmConnectionFieldTrial(); 38 cbw->WarmConnectionFieldTrial();
49 EXPECT_EQ(0, net::GetSocketReusePolicy()); 39 EXPECT_EQ(0, net::GetSocketReusePolicy());
50 } 40 }
51 } 41 }
52 42
53 // http://crbug.com/105326 43 TEST_F(BrowserMainTest, WarmConnectionFieldTrial_Random) {
54 // Crashes unit_tests on "Linux Clang (ChromeOS dbg)".
55 #if defined(OS_CHROMEOS)
56 #define MAYBE_WarmConnectionFieldTrial_Random \
57 DISABLED_WarmConnectionFieldTrial_Random
58 #else
59 #define MAYBE_WarmConnectionFieldTrial_Random \
60 WarmConnectionFieldTrial_Random
61 #endif
62
63 TEST_F(BrowserMainTest, MAYBE_WarmConnectionFieldTrial_Random) {
64 scoped_ptr<content::MainFunctionParams> params( 44 scoped_ptr<content::MainFunctionParams> params(
65 new content::MainFunctionParams(command_line_)); 45 new content::MainFunctionParams(command_line_));
66 scoped_ptr<content::BrowserMainParts> bw( 46 scoped_ptr<content::BrowserMainParts> bw(
67 content::GetContentClient()->browser()->CreateBrowserMainParts(*params)); 47 content::GetContentClient()->browser()->CreateBrowserMainParts(*params));
68 ChromeBrowserMainParts* cbw = static_cast<ChromeBrowserMainParts*>(bw.get()); 48 ChromeBrowserMainParts* cbw = static_cast<ChromeBrowserMainParts*>(bw.get());
69 EXPECT_TRUE(cbw); 49 EXPECT_TRUE(cbw);
70 if (cbw) { 50 if (cbw) {
71 const int kNumRuns = 1000; 51 const int kNumRuns = 1000;
72 for (int i = 0; i < kNumRuns; i++) { 52 for (int i = 0; i < kNumRuns; i++) {
73 cbw->WarmConnectionFieldTrial(); 53 cbw->WarmConnectionFieldTrial();
74 int val = net::GetSocketReusePolicy(); 54 int val = net::GetSocketReusePolicy();
75 EXPECT_LE(val, 2); 55 EXPECT_LE(val, 2);
76 EXPECT_GE(val, 0); 56 EXPECT_GE(val, 0);
77 } 57 }
78 } 58 }
79 } 59 }
80 60
81 // http://crbug.com/105326 61 TEST_F(BrowserMainTest, WarmConnectionFieldTrial_Invalid) {
82 // Crashes unit_tests on "Linux Clang (ChromeOS dbg)".
83 #if defined(OS_CHROMEOS)
84 #define MAYBE_WarmConnectionFieldTrial_Invalid \
85 DISABLED_WarmConnectionFieldTrial_Invalid
86 #else
87 #define MAYBE_WarmConnectionFieldTrial_Invalid \
88 WarmConnectionFieldTrial_Invalid
89 #endif
90
91 TEST_F(BrowserMainTest, MAYBE_WarmConnectionFieldTrial_Invalid) {
92 command_line_.AppendSwitchASCII(switches::kSocketReusePolicy, "100"); 62 command_line_.AppendSwitchASCII(switches::kSocketReusePolicy, "100");
93 63
94 scoped_ptr<content::MainFunctionParams> params( 64 scoped_ptr<content::MainFunctionParams> params(
95 new content::MainFunctionParams(command_line_)); 65 new content::MainFunctionParams(command_line_));
96 // This test ends up launching a new process, and that doesn't initialize the 66 // This test ends up launching a new process, and that doesn't initialize the
97 // ContentClient interfaces. 67 // ContentClient interfaces.
98 scoped_ptr<content::BrowserMainParts> bw; 68 scoped_ptr<content::BrowserMainParts> bw;
99 if (content::GetContentClient()) { 69 if (content::GetContentClient()) {
100 bw.reset(content::GetContentClient()->browser()->CreateBrowserMainParts( 70 bw.reset(content::GetContentClient()->browser()->CreateBrowserMainParts(
101 *params)); 71 *params));
102 } else { 72 } else {
103 chrome::ChromeContentBrowserClient ccbc; 73 chrome::ChromeContentBrowserClient ccbc;
104 bw.reset(ccbc.CreateBrowserMainParts(*params)); 74 bw.reset(ccbc.CreateBrowserMainParts(*params));
105 } 75 }
106 ChromeBrowserMainParts* cbw = static_cast<ChromeBrowserMainParts*>(bw.get()); 76 ChromeBrowserMainParts* cbw = static_cast<ChromeBrowserMainParts*>(bw.get());
107 EXPECT_TRUE(cbw); 77 EXPECT_TRUE(cbw);
108 if (cbw) { 78 if (cbw) {
109 #if defined(NDEBUG) && defined(DCHECK_ALWAYS_ON) 79 #if defined(NDEBUG) && defined(DCHECK_ALWAYS_ON)
110 EXPECT_DEATH(cbw->WarmConnectionFieldTrial(), 80 EXPECT_DEATH(cbw->WarmConnectionFieldTrial(),
111 "Not a valid socket reuse policy group"); 81 "Not a valid socket reuse policy group");
112 #else 82 #else
113 EXPECT_DEBUG_DEATH(cbw->WarmConnectionFieldTrial(), 83 EXPECT_DEBUG_DEATH(cbw->WarmConnectionFieldTrial(),
114 "Not a valid socket reuse policy group"); 84 "Not a valid socket reuse policy group");
115 #endif 85 #endif
116 } 86 }
117 } 87 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/chrome_browser_main_chromeos.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698