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

Side by Side Diff: chrome/test/startup/startup_test.cc

Issue 216019: Add a handful of startup tests that run with different types of install extensions. (Closed)
Patch Set: fixed test data Created 11 years, 3 months 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
« no previous file with comments | « chrome/test/data/extensions/profiles/toolstrips50/Default/Preferences ('k') | no next file » | 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "base/file_util.h" 5 #include "base/file_util.h"
6 #include "base/path_service.h" 6 #include "base/path_service.h"
7 #include "base/platform_thread.h" 7 #include "base/platform_thread.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/test_file_util.h" 9 #include "base/test_file_util.h"
10 #include "base/time.h" 10 #include "base/time.h"
11 #include "chrome/common/chrome_constants.h" 11 #include "chrome/common/chrome_constants.h"
12 #include "chrome/common/chrome_paths.h" 12 #include "chrome/common/chrome_paths.h"
13 #include "chrome/test/ui/ui_test.h" 13 #include "chrome/test/ui/ui_test.h"
14 #include "net/base/net_util.h" 14 #include "net/base/net_util.h"
15 15
16 using base::TimeDelta; 16 using base::TimeDelta;
17 using base::TimeTicks; 17 using base::TimeTicks;
18 18
19 namespace { 19 namespace {
20 20
21 class StartupTest : public UITest { 21 class StartupTest : public UITest {
22 public: 22 public:
23 StartupTest() { 23 StartupTest() {
24 show_window_ = true; 24 show_window_ = true;
25 pages_ = "about:blank"; 25 pages_ = "about:blank";
26 } 26 }
27 void SetUp() {} 27 void SetUp() {}
28 void TearDown() {} 28 void TearDown() {}
29 29
30 // Load a file on startup rather than about:blank. This tests a longer
31 // startup path, including resource loading and the loading of gears.dll.
32 void SetUpWithFileURL() {
33 FilePath file_url;
34 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &file_url));
35 file_url = file_url.AppendASCII("empty.html");
36 ASSERT_TRUE(file_util::PathExists(file_url));
37 launch_arguments_.AppendLooseValue(file_url.ToWStringHack());
38
39 pages_ = WideToUTF8(file_url.ToWStringHack());
40 }
41
42 // Use the given profile in the test data extensions/profiles dir. This tests
43 // startup with extensions installed.
44 void SetUpWithExtensionsProfile(const char* profile) {
45 FilePath data_dir;
46 PathService::Get(chrome::DIR_TEST_DATA, &data_dir);
47 data_dir = data_dir.AppendASCII("extensions").AppendASCII("profiles").
48 AppendASCII(profile);
49 set_template_user_data(data_dir.ToWStringHack());
50 }
51
30 void RunStartupTest(const char* graph, const char* trace, 52 void RunStartupTest(const char* graph, const char* trace,
31 bool test_cold, bool important, int profile_type) { 53 bool test_cold, bool important, int profile_type) {
32 profile_type_ = profile_type; 54 profile_type_ = profile_type;
33 55
34 // Sets the profile data for the run. For now, this is only used for 56 // Sets the profile data for the run. For now, this is only used for
35 // the non-default themes test. 57 // the non-default themes test.
36 if (profile_type != UITest::DEFAULT_THEME) { 58 if (profile_type != UITest::DEFAULT_THEME) {
37 set_template_user_data(UITest::ComputeTypicalUserDataSource( 59 set_template_user_data(UITest::ComputeTypicalUserDataSource(
38 profile_type).ToWStringHack()); 60 profile_type).ToWStringHack());
39 } 61 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 timings[i] = end_time - browser_launch_time_; 100 timings[i] = end_time - browser_launch_time_;
79 // TODO(beng): Can't shut down so quickly. Figure out why, and fix. If we 101 // TODO(beng): Can't shut down so quickly. Figure out why, and fix. If we
80 // do, we crash. 102 // do, we crash.
81 PlatformThread::Sleep(50); 103 PlatformThread::Sleep(50);
82 UITest::TearDown(); 104 UITest::TearDown();
83 105
84 if (i == 0) { 106 if (i == 0) {
85 // Re-use the profile data after first run so that the noise from 107 // Re-use the profile data after first run so that the noise from
86 // creating databases doesn't impact all the runs. 108 // creating databases doesn't impact all the runs.
87 clear_profile_ = false; 109 clear_profile_ = false;
88 // Destroy template_user_data_ for complex/gtk themes so we don't try 110 // Clear template_user_data_ so we don't try to copy it over each time
89 // to rewrite each time through. 111 // through.
90 if (profile_type != UITest::DEFAULT_THEME) 112 set_template_user_data(L"");
91 set_template_user_data(L"");
92 } 113 }
93 } 114 }
94 115
95 std::string times; 116 std::string times;
96 for (int i = 0; i < numCycles; ++i) 117 for (int i = 0; i < numCycles; ++i)
97 StringAppendF(&times, "%.2f,", timings[i].InMillisecondsF()); 118 StringAppendF(&times, "%.2f,", timings[i].InMillisecondsF());
98 PrintResultList(graph, "", trace, times, "ms", important); 119 PrintResultList(graph, "", trace, times, "ms", important);
99 } 120 }
100 121
101 protected: 122 protected:
(...skipping 12 matching lines...) Expand all
114 dir = dir.AppendASCII("chrome"); 135 dir = dir.AppendASCII("chrome");
115 #elif defined(OS_LINUX) 136 #elif defined(OS_LINUX)
116 dir = dir.AppendASCII("chrome_linux"); 137 dir = dir.AppendASCII("chrome_linux");
117 #elif defined(OS_MACOSX) 138 #elif defined(OS_MACOSX)
118 dir = dir.AppendASCII("chrome_mac"); 139 dir = dir.AppendASCII("chrome_mac");
119 #endif 140 #endif
120 browser_directory_ = dir; 141 browser_directory_ = dir;
121 } 142 }
122 }; 143 };
123 144
124 class StartupFileTest : public StartupTest {
125 public:
126 // Load a file on startup rather than about:blank. This tests a longer
127 // startup path, including resource loading and the loading of gears.dll.
128 void SetUp() {
129 FilePath file_url;
130 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &file_url));
131 file_url = file_url.AppendASCII("empty.html");
132 ASSERT_TRUE(file_util::PathExists(file_url));
133 launch_arguments_.AppendLooseValue(file_url.ToWStringHack());
134
135 pages_ = WideToUTF8(file_url.ToWStringHack());
136 }
137 };
138
139 TEST_F(StartupTest, Perf) { 145 TEST_F(StartupTest, Perf) {
140 RunStartupTest("warm", "t", false /* not cold */, true /* important */, 146 RunStartupTest("warm", "t", false /* not cold */, true /* important */,
141 UITest::DEFAULT_THEME); 147 UITest::DEFAULT_THEME);
142 } 148 }
143 149
144 // TODO(port): We need a mac reference build checked in for this. 150 // TODO(port): We need a mac reference build checked in for this.
145 TEST_F(StartupReferenceTest, Perf) { 151 TEST_F(StartupReferenceTest, Perf) {
146 RunStartupTest("warm", "t_ref", false /* not cold */, 152 RunStartupTest("warm", "t_ref", false /* not cold */,
147 true /* important */, UITest::DEFAULT_THEME); 153 true /* important */, UITest::DEFAULT_THEME);
148 } 154 }
149 155
150 // TODO(mpcomplete): Should we have reference timings for all these? 156 // TODO(mpcomplete): Should we have reference timings for all these?
151 157
152 TEST_F(StartupTest, PerfCold) { 158 TEST_F(StartupTest, PerfCold) {
153 RunStartupTest("cold", "t", true /* cold */, false /* not important */, 159 RunStartupTest("cold", "t", true /* cold */, false /* not important */,
154 UITest::DEFAULT_THEME); 160 UITest::DEFAULT_THEME);
155 } 161 }
156 162
163 TEST_F(StartupTest, PerfExtensionEmpty) {
164 SetUpWithFileURL();
165 SetUpWithExtensionsProfile("empty");
166 RunStartupTest("warm", "t", false /* cold */, false /* not important */,
167 UITest::DEFAULT_THEME);
168 }
169
170 TEST_F(StartupTest, PerfExtensionToolstrips1) {
171 SetUpWithFileURL();
172 SetUpWithExtensionsProfile("toolstrips1");
173 RunStartupTest("warm", "extension_toolstrip1",
174 false /* cold */, false /* not important */,
175 UITest::DEFAULT_THEME);
176 }
177
178 TEST_F(StartupTest, PerfExtensionToolstrips50) {
179 SetUpWithFileURL();
180 SetUpWithExtensionsProfile("toolstrips50");
181 RunStartupTest("warm", "extension_toolstrip50",
182 false /* cold */, false /* not important */,
183 UITest::DEFAULT_THEME);
184 }
185
186 TEST_F(StartupTest, PerfExtensionContentScript1) {
187 SetUpWithFileURL();
188 SetUpWithExtensionsProfile("content_scripts1");
189 RunStartupTest("warm", "extension_content_scripts1",
190 false /* cold */, false /* not important */,
191 UITest::DEFAULT_THEME);
192 }
193
194 TEST_F(StartupTest, PerfExtensionContentScript50) {
195 SetUpWithFileURL();
196 SetUpWithExtensionsProfile("content_scripts50");
197 RunStartupTest("warm", "extension_content_scripts50",
198 false /* cold */, false /* not important */,
199 UITest::DEFAULT_THEME);
200 }
201
202
157 #if defined(OS_WIN) 203 #if defined(OS_WIN)
158 // TODO(port): Enable gears tests on linux/mac once gears is working. 204 // TODO(port): Enable gears tests on linux/mac once gears is working.
159 TEST_F(StartupFileTest, PerfGears) { 205 TEST_F(StartupTest, PerfGears) {
206 SetUpWithFileURL();
160 RunStartupTest("warm", "gears", false /* not cold */, 207 RunStartupTest("warm", "gears", false /* not cold */,
161 false /* not important */, UITest::DEFAULT_THEME); 208 false /* not important */, UITest::DEFAULT_THEME);
162 } 209 }
163 210
164 TEST_F(StartupFileTest, PerfColdGears) { 211 TEST_F(StartupTest, PerfColdGears) {
212 SetUpWithFileURL();
165 RunStartupTest("cold", "gears", true /* cold */, 213 RunStartupTest("cold", "gears", true /* cold */,
166 false /* not important */, UITest::DEFAULT_THEME); 214 false /* not important */, UITest::DEFAULT_THEME);
167 } 215 }
168 #endif 216 #endif
169 217
170 TEST_F(StartupTest, PerfColdComplexTheme) { 218 TEST_F(StartupTest, PerfColdComplexTheme) {
171 RunStartupTest("warm", "t-theme", false /* warm */, 219 RunStartupTest("warm", "t-theme", false /* warm */,
172 false /* not important */, UITest::COMPLEX_THEME); 220 false /* not important */, UITest::COMPLEX_THEME);
173 } 221 }
174 222
175 #if defined(OS_LINUX) 223 #if defined(OS_LINUX)
176 TEST_F(StartupTest, PerfColdGtkTheme) { 224 TEST_F(StartupTest, PerfColdGtkTheme) {
177 RunStartupTest("warm", "gtk-theme", false /* warm */, 225 RunStartupTest("warm", "gtk-theme", false /* warm */,
178 false /* not important */, UITest::NATIVE_THEME); 226 false /* not important */, UITest::NATIVE_THEME);
179 } 227 }
180 228
181 TEST_F(StartupTest, PrefColdNativeFrame) { 229 TEST_F(StartupTest, PrefColdNativeFrame) {
182 RunStartupTest("warm", "custom-frame", false /* warm */, 230 RunStartupTest("warm", "custom-frame", false /* warm */,
183 false /* not important */, UITest::CUSTOM_FRAME); 231 false /* not important */, UITest::CUSTOM_FRAME);
184 } 232 }
185 233
186 TEST_F(StartupTest, PerfColdNativeFrameGtkTheme) { 234 TEST_F(StartupTest, PerfColdNativeFrameGtkTheme) {
187 RunStartupTest("warm", "custom-frame-gtk-theme", false /* warm */, 235 RunStartupTest("warm", "custom-frame-gtk-theme", false /* warm */,
188 false /* not important */, UITest::CUSTOM_FRAME_NATIVE_THEME); 236 false /* not important */, UITest::CUSTOM_FRAME_NATIVE_THEME);
189 } 237 }
190 #endif 238 #endif
191 239
192 } // namespace 240 } // namespace
OLDNEW
« no previous file with comments | « chrome/test/data/extensions/profiles/toolstrips50/Default/Preferences ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698