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

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

Issue 5967003: Refactor UITestBase/ProxyLauncher. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Add POD struct to hold some launcher variables. Created 9 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/environment.h" 5 #include "base/environment.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/string_split.h" 9 #include "base/string_split.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 83
84 // Runs a test which loads |tab_count| tabs on startup, either as command line 84 // Runs a test which loads |tab_count| tabs on startup, either as command line
85 // arguments or, if |restore_session| is true, by using session restore. 85 // arguments or, if |restore_session| is true, by using session restore.
86 // |nth_timed_tab|, if non-zero, will measure time to load the first n+1 tabs. 86 // |nth_timed_tab|, if non-zero, will measure time to load the first n+1 tabs.
87 void RunPerfTestWithManyTabs(const char* graph, const char* trace, 87 void RunPerfTestWithManyTabs(const char* graph, const char* trace,
88 int tab_count, int nth_timed_tab, 88 int tab_count, int nth_timed_tab,
89 bool restore_session); 89 bool restore_session);
90 90
91 void RunStartupTest(const char* graph, const char* trace, 91 void RunStartupTest(const char* graph, const char* trace,
92 TestColdness test_cold, TestImportance test_importance, 92 TestColdness test_cold, TestImportance test_importance,
93 UITest::ProfileType profile_type, 93 ProxyLauncher::ProfileType profile_type,
94 int num_tabs, int nth_timed_tab) { 94 int num_tabs, int nth_timed_tab) {
95 bool important = (test_importance == IMPORTANT); 95 bool important = (test_importance == IMPORTANT);
96 profile_type_ = profile_type; 96 profile_type_ = profile_type;
97 97
98 // Sets the profile data for the run. For now, this is only used for 98 // Sets the profile data for the run. For now, this is only used for
99 // the non-default themes test. 99 // the non-default themes test.
100 if (profile_type != UITest::DEFAULT_THEME) { 100 if (profile_type != ProxyLauncher::DEFAULT_THEME) {
101 set_template_user_data(UITest::ComputeTypicalUserDataSource( 101 set_template_user_data(UITest::ComputeTypicalUserDataSource(
102 profile_type)); 102 profile_type));
103 } 103 }
104 104
105 const int kNumCyclesMax = 20; 105 const int kNumCyclesMax = 20;
106 int numCycles = kNumCyclesMax; 106 int numCycles = kNumCyclesMax;
107 scoped_ptr<base::Environment> env(base::Environment::Create()); 107 scoped_ptr<base::Environment> env(base::Environment::Create());
108 std::string numCyclesEnv; 108 std::string numCyclesEnv;
109 if (env->GetVar(env_vars::kStartupTestsNumCycles, &numCyclesEnv) && 109 if (env->GetVar(env_vars::kStartupTestsNumCycles, &numCyclesEnv) &&
110 base::StringToInt(numCyclesEnv, &numCycles)) { 110 base::StringToInt(numCyclesEnv, &numCycles)) {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 timings[i].first_start_ms = min_start; 180 timings[i].first_start_ms = min_start;
181 timings[i].last_stop_ms = max_stop; 181 timings[i].last_stop_ms = max_stop;
182 timings[i].first_stop_ms = times[0]; 182 timings[i].first_stop_ms = times[0];
183 timings[i].nth_tab_stop_ms = times[nth_timed_tab]; 183 timings[i].nth_tab_stop_ms = times[nth_timed_tab];
184 } else { 184 } else {
185 // Browser might not support initial load times. 185 // Browser might not support initial load times.
186 // Only use end-to-end time for this test. 186 // Only use end-to-end time for this test.
187 num_tabs = 0; 187 num_tabs = 0;
188 } 188 }
189 } 189 }
190 timings[i].end_to_end = end_time - browser_launch_time_; 190 timings[i].end_to_end = end_time - browser_launch_time();
191 UITest::TearDown(); 191 UITest::TearDown();
192 192
193 if (i == 0) { 193 if (i == 0) {
194 // Re-use the profile data after first run so that the noise from 194 // Re-use the profile data after first run so that the noise from
195 // creating databases doesn't impact all the runs. 195 // creating databases doesn't impact all the runs.
196 clear_profile_ = false; 196 clear_profile_ = false;
197 // Clear template_user_data_ so we don't try to copy it over each time 197 // Clear template_user_data_ so we don't try to copy it over each time
198 // through. 198 // through.
199 set_template_user_data(FilePath()); 199 set_template_user_data(FilePath());
200 } 200 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 name = name_base + "-all"; 239 name = name_base + "-all";
240 for (int i = 0; i < numCycles; ++i) 240 for (int i = 0; i < numCycles; ++i)
241 base::StringAppendF(&times, "%.2f,", timings[i].last_stop_ms); 241 base::StringAppendF(&times, "%.2f,", timings[i].last_stop_ms);
242 PrintResultList(graph, "", name.c_str(), times, "ms", important); 242 PrintResultList(graph, "", name.c_str(), times, "ms", important);
243 } 243 }
244 } 244 }
245 } 245 }
246 }; 246 };
247 247
248 TEST_F(StartupTest, PerfWarm) { 248 TEST_F(StartupTest, PerfWarm) {
249 RunStartupTest("warm", "t", WARM, IMPORTANT, UITest::DEFAULT_THEME, 0, 0); 249 RunStartupTest("warm", "t", WARM, IMPORTANT,
250 ProxyLauncher::DEFAULT_THEME, 0, 0);
250 } 251 }
251 252
252 TEST_F(StartupTest, PerfReferenceWarm) { 253 TEST_F(StartupTest, PerfReferenceWarm) {
253 UseReferenceBuild(); 254 UseReferenceBuild();
254 RunStartupTest("warm", "t_ref", WARM, IMPORTANT, UITest::DEFAULT_THEME, 0, 0); 255 RunStartupTest("warm", "t_ref", WARM, IMPORTANT,
256 ProxyLauncher::DEFAULT_THEME, 0, 0);
255 } 257 }
256 258
257 // TODO(mpcomplete): Should we have reference timings for all these? 259 // TODO(mpcomplete): Should we have reference timings for all these?
258 260
259 TEST_F(StartupTest, PerfCold) { 261 TEST_F(StartupTest, PerfCold) {
260 RunStartupTest("cold", "t", COLD, NOT_IMPORTANT, UITest::DEFAULT_THEME, 0, 0); 262 RunStartupTest("cold", "t", COLD, NOT_IMPORTANT,
263 ProxyLauncher::DEFAULT_THEME, 0, 0);
261 } 264 }
262 265
263 void StartupTest::RunPerfTestWithManyTabs(const char* graph, const char* trace, 266 void StartupTest::RunPerfTestWithManyTabs(const char* graph, const char* trace,
264 int tab_count, int nth_timed_tab, 267 int tab_count, int nth_timed_tab,
265 bool restore_session) { 268 bool restore_session) {
266 // Initialize session with |tab_count| tabs. 269 // Initialize session with |tab_count| tabs.
267 for (int i = 0; i < tab_count; ++i) 270 for (int i = 0; i < tab_count; ++i)
268 SetUpWithComplexFileURL(i); 271 SetUpWithComplexFileURL(i);
269 272
270 if (restore_session) { 273 if (restore_session) {
271 // Start the browser with these urls so we can save the session and exit. 274 // Start the browser with these urls so we can save the session and exit.
272 UITest::SetUp(); 275 UITest::SetUp();
273 // Set flags to ensure profile is saved and can be restored. 276 // Set flags to ensure profile is saved and can be restored.
274 #if defined(OS_MACOSX) 277 #if defined(OS_MACOSX)
275 shutdown_type_ = UITestBase::USER_QUIT; 278 shutdown_type_ = ProxyLauncher::USER_QUIT;
276 #endif 279 #endif
277 clear_profile_ = false; 280 clear_profile_ = false;
278 // Quit and set flags to restore session. 281 // Quit and set flags to restore session.
279 UITest::TearDown(); 282 UITest::TearDown();
280 // Clear all arguments for session restore, or the number of open tabs 283 // Clear all arguments for session restore, or the number of open tabs
281 // will grow with each restore. 284 // will grow with each restore.
282 launch_arguments_ = CommandLine(CommandLine::NO_PROGRAM); 285 launch_arguments_ = CommandLine(CommandLine::NO_PROGRAM);
283 // The session will be restored once per cycle for numCycles test cycles, 286 // The session will be restored once per cycle for numCycles test cycles,
284 // and each time, UITest::SetUp will wait for |tab_count| tabs to 287 // and each time, UITest::SetUp will wait for |tab_count| tabs to
285 // finish loading. 288 // finish loading.
286 launch_arguments_.AppendSwitchASCII(switches::kRestoreLastSession, 289 launch_arguments_.AppendSwitchASCII(switches::kRestoreLastSession,
287 base::IntToString(tab_count)); 290 base::IntToString(tab_count));
288 } 291 }
289 RunStartupTest(graph, trace, WARM, NOT_IMPORTANT, UITest::DEFAULT_THEME, 292 RunStartupTest(graph, trace, WARM, NOT_IMPORTANT,
290 tab_count, nth_timed_tab); 293 ProxyLauncher::DEFAULT_THEME, tab_count, nth_timed_tab);
291 } 294 }
292 295
293 TEST_F(StartupTest, PerfFewTabs) { 296 TEST_F(StartupTest, PerfFewTabs) {
294 RunPerfTestWithManyTabs("few_tabs", "cmdline", 5, 2, false); 297 RunPerfTestWithManyTabs("few_tabs", "cmdline", 5, 2, false);
295 } 298 }
296 299
297 TEST_F(StartupTest, PerfFewTabsReference) { 300 TEST_F(StartupTest, PerfFewTabsReference) {
298 UseReferenceBuild(); 301 UseReferenceBuild();
299 RunPerfTestWithManyTabs("few_tabs", "cmdline-ref", 5, 2, false); 302 RunPerfTestWithManyTabs("few_tabs", "cmdline-ref", 5, 2, false);
300 } 303 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 346
344 TEST_F(StartupTest, PerfRestoreSeveralTabsReference) { 347 TEST_F(StartupTest, PerfRestoreSeveralTabsReference) {
345 UseReferenceBuild(); 348 UseReferenceBuild();
346 RunPerfTestWithManyTabs("several_tabs", "restore-ref", 10, 4, true); 349 RunPerfTestWithManyTabs("several_tabs", "restore-ref", 10, 4, true);
347 } 350 }
348 351
349 TEST_F(StartupTest, PerfExtensionEmpty) { 352 TEST_F(StartupTest, PerfExtensionEmpty) {
350 SetUpWithFileURL(); 353 SetUpWithFileURL();
351 SetUpWithExtensionsProfile("empty"); 354 SetUpWithExtensionsProfile("empty");
352 RunStartupTest("warm", "extension_empty", WARM, NOT_IMPORTANT, 355 RunStartupTest("warm", "extension_empty", WARM, NOT_IMPORTANT,
353 UITest::DEFAULT_THEME, 1, 0); 356 ProxyLauncher::DEFAULT_THEME, 1, 0);
354 } 357 }
355 358
356 TEST_F(StartupTest, PerfExtensionContentScript1) { 359 TEST_F(StartupTest, PerfExtensionContentScript1) {
357 SetUpWithFileURL(); 360 SetUpWithFileURL();
358 SetUpWithExtensionsProfile("content_scripts1"); 361 SetUpWithExtensionsProfile("content_scripts1");
359 RunStartupTest("warm", "extension_content_scripts1", WARM, NOT_IMPORTANT, 362 RunStartupTest("warm", "extension_content_scripts1", WARM, NOT_IMPORTANT,
360 UITest::DEFAULT_THEME, 1, 0); 363 ProxyLauncher::DEFAULT_THEME, 1, 0);
361 } 364 }
362 365
363 TEST_F(StartupTest, MAYBE_PerfExtensionContentScript50) { 366 TEST_F(StartupTest, MAYBE_PerfExtensionContentScript50) {
364 SetUpWithFileURL(); 367 SetUpWithFileURL();
365 SetUpWithExtensionsProfile("content_scripts50"); 368 SetUpWithExtensionsProfile("content_scripts50");
366 RunStartupTest("warm", "extension_content_scripts50", WARM, NOT_IMPORTANT, 369 RunStartupTest("warm", "extension_content_scripts50", WARM, NOT_IMPORTANT,
367 UITest::DEFAULT_THEME, 1, 0); 370 ProxyLauncher::DEFAULT_THEME, 1, 0);
368 } 371 }
369 372
370 #if defined(OS_WIN) 373 #if defined(OS_WIN)
371 // TODO(port): Enable gears tests on linux/mac once gears is working. 374 // TODO(port): Enable gears tests on linux/mac once gears is working.
372 TEST_F(StartupTest, PerfGears) { 375 TEST_F(StartupTest, PerfGears) {
373 SetUpWithFileURL(); 376 SetUpWithFileURL();
374 RunStartupTest("warm", "gears", WARM, NOT_IMPORTANT, 377 RunStartupTest("warm", "gears", WARM, NOT_IMPORTANT,
375 UITest::DEFAULT_THEME, 1, 0); 378 ProxyLauncher::DEFAULT_THEME, 1, 0);
376 } 379 }
377 380
378 TEST_F(StartupTest, PerfColdGears) { 381 TEST_F(StartupTest, PerfColdGears) {
379 SetUpWithFileURL(); 382 SetUpWithFileURL();
380 RunStartupTest("cold", "gears", COLD, NOT_IMPORTANT, 383 RunStartupTest("cold", "gears", COLD, NOT_IMPORTANT,
381 UITest::DEFAULT_THEME, 1, 0); 384 ProxyLauncher::DEFAULT_THEME, 1, 0);
382 } 385 }
383 #endif 386 #endif
384 387
385 TEST_F(StartupTest, PerfComplexTheme) { 388 TEST_F(StartupTest, PerfComplexTheme) {
386 RunStartupTest("warm", "t-theme", WARM, NOT_IMPORTANT, 389 RunStartupTest("warm", "t-theme", WARM, NOT_IMPORTANT,
387 UITest::COMPLEX_THEME, 0, 0); 390 ProxyLauncher::COMPLEX_THEME, 0, 0);
388 } 391 }
389 392
390 #if defined(OS_LINUX) 393 #if defined(OS_LINUX)
391 TEST_F(StartupTest, PerfGtkTheme) { 394 TEST_F(StartupTest, PerfGtkTheme) {
392 RunStartupTest("warm", "gtk-theme", WARM, NOT_IMPORTANT, 395 RunStartupTest("warm", "gtk-theme", WARM, NOT_IMPORTANT,
393 UITest::NATIVE_THEME, 0, 0); 396 ProxyLauncher::NATIVE_THEME, 0, 0);
394 } 397 }
395 398
396 TEST_F(StartupTest, PrefNativeFrame) { 399 TEST_F(StartupTest, PrefNativeFrame) {
397 RunStartupTest("warm", "custom-frame", WARM, NOT_IMPORTANT, 400 RunStartupTest("warm", "custom-frame", WARM, NOT_IMPORTANT,
398 UITest::CUSTOM_FRAME, 0, 0); 401 ProxyLauncher::CUSTOM_FRAME, 0, 0);
399 } 402 }
400 403
401 TEST_F(StartupTest, PerfNativeFrameGtkTheme) { 404 TEST_F(StartupTest, PerfNativeFrameGtkTheme) {
402 RunStartupTest("warm", "custom-frame-gtk-theme", WARM, NOT_IMPORTANT, 405 RunStartupTest("warm", "custom-frame-gtk-theme", WARM, NOT_IMPORTANT,
403 UITest::CUSTOM_FRAME_NATIVE_THEME, 0, 0); 406 ProxyLauncher::CUSTOM_FRAME_NATIVE_THEME, 0, 0);
404 } 407 }
405 #endif 408 #endif
406 409
407 } // namespace 410 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698