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

Side by Side Diff: chrome/test/page_cycler/page_cycler_test.cc

Issue 1089006: Re-enable the DB perf tests and lower the number of iterations per... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 9 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
« no previous file with comments | « no previous file | 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-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/eintr_wrapper.h" 7 #include "base/eintr_wrapper.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 11 matching lines...) Expand all
22 #include "net/base/net_util.h" 22 #include "net/base/net_util.h"
23 23
24 #if defined(OS_MACOSX) 24 #if defined(OS_MACOSX)
25 #include <errno.h> 25 #include <errno.h>
26 #include <fcntl.h> 26 #include <fcntl.h>
27 #include <string.h> 27 #include <string.h>
28 #include <sys/resource.h> 28 #include <sys/resource.h>
29 #endif 29 #endif
30 30
31 #ifndef NDEBUG 31 #ifndef NDEBUG
32 #define TEST_ITERATIONS "2" 32 #define TEST_ITERATIONS 2
33 #define DATABASE_TEST_ITERATIONS 2
33 #else 34 #else
34 #define TEST_ITERATIONS "10" 35 #define TEST_ITERATIONS 10
36 // For some unknown reason, the DB perf tests are much much slower on the
37 // Vista perf bot, so we have to cut down the number of iterations to 5
38 // to make sure each test finishes in less than 10 minutes.
39 #define DATABASE_TEST_ITERATIONS 5
darin (slow to review) 2010/03/22 06:56:49 won't this increase variance? or is the variance
darin (slow to review) 2010/03/22 22:21:01 It would be good to at least file a bug about the
35 #endif 40 #endif
36 41
37 // URL at which data files may be found for HTTP tests. The document root of 42 // URL at which data files may be found for HTTP tests. The document root of
38 // this URL's server should point to data/page_cycler/. 43 // this URL's server should point to data/page_cycler/.
39 static const char kBaseUrl[] = "http://localhost:8000/"; 44 static const char kBaseUrl[] = "http://localhost:8000/";
40 45
41 namespace { 46 namespace {
42 47
43 #if defined(OS_MACOSX) 48 #if defined(OS_MACOSX)
44 // TODO(tvl/stuart): remove all this fd limit setting on the Mac when/if we 49 // TODO(tvl/stuart): remove all this fd limit setting on the Mac when/if we
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 test_path = test_path.Append(FILE_PATH_LITERAL("data")); 190 test_path = test_path.Append(FILE_PATH_LITERAL("data"));
186 test_path = test_path.Append(FILE_PATH_LITERAL("page_cycler")); 191 test_path = test_path.Append(FILE_PATH_LITERAL("page_cycler"));
187 test_path = test_path.AppendASCII(name); 192 test_path = test_path.AppendASCII(name);
188 return test_path; 193 return test_path;
189 } 194 }
190 195
191 virtual bool HasErrors(const std::string /*timings*/) { 196 virtual bool HasErrors(const std::string /*timings*/) {
192 return false; 197 return false;
193 } 198 }
194 199
200 virtual int GetTestIterations() {
201 return TEST_ITERATIONS;
202 }
203
195 // For HTTP tests, the name must be safe for use in a URL without escaping. 204 // For HTTP tests, the name must be safe for use in a URL without escaping.
196 void RunPageCycler(const char* name, std::wstring* pages, 205 void RunPageCycler(const char* name, std::wstring* pages,
197 std::string* timings, bool use_http) { 206 std::string* timings, bool use_http) {
198 FilePath test_path = GetDataPath(name); 207 FilePath test_path = GetDataPath(name);
199 ASSERT_TRUE(file_util::DirectoryExists(test_path)) 208 ASSERT_TRUE(file_util::DirectoryExists(test_path))
200 << "Missing test directory " << test_path.value(); 209 << "Missing test directory " << test_path.value();
201 210
202 #if defined(OS_MACOSX) 211 #if defined(OS_MACOSX)
203 PopulateUBC(test_path); 212 PopulateUBC(test_path);
204 #endif 213 #endif
205 214
206 GURL test_url; 215 GURL test_url;
207 if (use_http) { 216 if (use_http) {
208 test_url = GURL(std::string(kBaseUrl) + name + "/start.html"); 217 test_url = GURL(std::string(kBaseUrl) + name + "/start.html");
209 } else { 218 } else {
210 test_path = test_path.Append(FILE_PATH_LITERAL("start.html")); 219 test_path = test_path.Append(FILE_PATH_LITERAL("start.html"));
211 test_url = net::FilePathToFileURL(test_path); 220 test_url = net::FilePathToFileURL(test_path);
212 } 221 }
213 222
214 // run N iterations 223 // run N iterations
215 GURL::Replacements replacements; 224 GURL::Replacements replacements;
216 const char query_string[] = "iterations=" TEST_ITERATIONS "&auto=1"; 225 const std::string query_string =
226 "iterations=" + IntToString(GetTestIterations()) + "&auto=1";
217 replacements.SetQuery( 227 replacements.SetQuery(
218 query_string, 228 query_string.c_str(),
219 url_parse::Component(0, arraysize(query_string) - 1)); 229 url_parse::Component(0, query_string.length()));
220 test_url = test_url.ReplaceComponents(replacements); 230 test_url = test_url.ReplaceComponents(replacements);
221 231
222 scoped_refptr<TabProxy> tab(GetActiveTab()); 232 scoped_refptr<TabProxy> tab(GetActiveTab());
223 ASSERT_TRUE(tab.get()); 233 ASSERT_TRUE(tab.get());
224 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(test_url)); 234 ASSERT_EQ(AUTOMATION_MSG_NAVIGATION_SUCCESS, tab->NavigateToURL(test_url));
225 235
226 // Wait for the test to finish. 236 // Wait for the test to finish.
227 ASSERT_TRUE(WaitUntilCookieValue(tab.get(), test_url, "__pc_done", 237 ASSERT_TRUE(WaitUntilCookieValue(tab.get(), test_url, "__pc_done",
228 3000, UITest::test_timeout_ms(), "1")); 238 3000, UITest::test_timeout_ms(), "1"));
229 239
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 print_times_only_ = true; 395 print_times_only_ = true;
386 } 396 }
387 397
388 virtual FilePath GetDataPath(const char* name) { 398 virtual FilePath GetDataPath(const char* name) {
389 return GetDatabaseDataPath(name); 399 return GetDatabaseDataPath(name);
390 } 400 }
391 401
392 virtual bool HasErrors(const std::string timings) { 402 virtual bool HasErrors(const std::string timings) {
393 return HasDatabaseErrors(timings); 403 return HasDatabaseErrors(timings);
394 } 404 }
405
406 virtual int GetTestIterations() {
407 return DATABASE_TEST_ITERATIONS;
408 }
395 }; 409 };
396 410
397 class PageCyclerDatabaseReferenceTest : public PageCyclerReferenceTest { 411 class PageCyclerDatabaseReferenceTest : public PageCyclerReferenceTest {
398 public: 412 public:
399 PageCyclerDatabaseReferenceTest() { 413 PageCyclerDatabaseReferenceTest() {
400 print_times_only_ = true; 414 print_times_only_ = true;
401 } 415 }
402 416
403 virtual FilePath GetDataPath(const char* name) { 417 virtual FilePath GetDataPath(const char* name) {
404 return GetDatabaseDataPath(name); 418 return GetDatabaseDataPath(name);
405 } 419 }
406 420
407 virtual bool HasErrors(const std::string timings) { 421 virtual bool HasErrors(const std::string timings) {
408 return HasDatabaseErrors(timings); 422 return HasDatabaseErrors(timings);
409 } 423 }
424
425 virtual int GetTestIterations() {
426 return DATABASE_TEST_ITERATIONS;
427 }
410 }; 428 };
411 429
412 // This macro simplifies setting up regular and reference build tests. 430 // This macro simplifies setting up regular and reference build tests.
413 #define PAGE_CYCLER_TESTS(test, name, use_http) \ 431 #define PAGE_CYCLER_TESTS(test, name, use_http) \
414 TEST_F(PageCyclerTest, name) { \ 432 TEST_F(PageCyclerTest, name) { \
415 RunTest("times", test, use_http); \ 433 RunTest("times", test, use_http); \
416 } \ 434 } \
417 TEST_F(PageCyclerReferenceTest, name) { \ 435 TEST_F(PageCyclerReferenceTest, name) { \
418 RunTest("times", test, use_http); \ 436 RunTest("times", test, use_http); \
419 } 437 }
420 438
421 // This macro simplifies setting up regular and reference build tests 439 // This macro simplifies setting up regular and reference build tests
422 // for HTML5 database tests. 440 // for HTML5 database tests.
423 // TODO(dumi): re-enable the DB perf tests once we figure out why
424 // they're so slow on the release perf bots
425 #define PAGE_CYCLER_DATABASE_TESTS(test, name) \ 441 #define PAGE_CYCLER_DATABASE_TESTS(test, name) \
426 TEST_F(PageCyclerDatabaseTest, DISABLED_Database##name##File) { \ 442 TEST_F(PageCyclerDatabaseTest, Database##name##File) { \
427 RunTest(test, test, false); \ 443 RunTest(test, test, false); \
428 } \ 444 } \
429 TEST_F(PageCyclerDatabaseReferenceTest, DISABLED_Database##name##File) { \ 445 TEST_F(PageCyclerDatabaseReferenceTest, Database##name##File) { \
430 RunTest(test, test, false); \ 446 RunTest(test, test, false); \
431 } 447 }
432 448
433 // These are shorthand for File vs. Http tests. 449 // These are shorthand for File vs. Http tests.
434 #define PAGE_CYCLER_FILE_TESTS(test, name) \ 450 #define PAGE_CYCLER_FILE_TESTS(test, name) \
435 PAGE_CYCLER_TESTS(test, name, false) 451 PAGE_CYCLER_TESTS(test, name, false)
436 #define PAGE_CYCLER_HTTP_TESTS(test, name) \ 452 #define PAGE_CYCLER_HTTP_TESTS(test, name) \
437 PAGE_CYCLER_TESTS(test, name, true) 453 PAGE_CYCLER_TESTS(test, name, true)
438 454
439 // This macro lets us define tests with 1 and 10 extensions with 1 content 455 // This macro lets us define tests with 1 and 10 extensions with 1 content
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 PAGE_CYCLER_DATABASE_TESTS("insert-transactions", 490 PAGE_CYCLER_DATABASE_TESTS("insert-transactions",
475 InsertTransactions); 491 InsertTransactions);
476 PAGE_CYCLER_DATABASE_TESTS("update-transactions", 492 PAGE_CYCLER_DATABASE_TESTS("update-transactions",
477 UpdateTransactions); 493 UpdateTransactions);
478 PAGE_CYCLER_DATABASE_TESTS("delete-transactions", 494 PAGE_CYCLER_DATABASE_TESTS("delete-transactions",
479 DeleteTransactions); 495 DeleteTransactions);
480 PAGE_CYCLER_DATABASE_TESTS("pseudo-random-transactions", 496 PAGE_CYCLER_DATABASE_TESTS("pseudo-random-transactions",
481 PseudoRandomTransactions); 497 PseudoRandomTransactions);
482 498
483 } // namespace 499 } // namespace
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698