OLD | NEW |
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_path.h" | 5 #include "base/file_path.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/platform_thread.h" | 8 #include "base/platform_thread.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/test_file_util.h" | 10 #include "base/test_file_util.h" |
11 #include "base/time.h" | 11 #include "base/time.h" |
12 #include "chrome/common/chrome_constants.h" | 12 #include "chrome/common/chrome_constants.h" |
13 #include "chrome/common/chrome_paths.h" | 13 #include "chrome/common/chrome_paths.h" |
14 #include "chrome/test/ui/ui_test.h" | 14 #include "chrome/test/ui/ui_test.h" |
15 #include "net/base/net_util.h" | 15 #include "net/base/net_util.h" |
16 | 16 |
17 using base::TimeDelta; | 17 using base::TimeDelta; |
18 using base::TimeTicks; | 18 using base::TimeTicks; |
19 | 19 |
20 namespace { | 20 namespace { |
21 | 21 |
| 22 // Wrapper around EvictFileFromSystemCache to retry 10 times in case of error. |
| 23 // Apparently needed for Windows buildbots (to workaround an error when |
| 24 // file is in use). |
| 25 // TODO(phajdan.jr): Move to test_file_util if we need it in more places. |
| 26 bool EvictFileFromSystemCacheWrapper(const FilePath& path) { |
| 27 for (int i = 0; i < 10; i++) { |
| 28 if (file_util::EvictFileFromSystemCache(path)) |
| 29 return true; |
| 30 PlatformThread::Sleep(1000); |
| 31 } |
| 32 return false; |
| 33 } |
| 34 |
22 class StartupTest : public UITest { | 35 class StartupTest : public UITest { |
23 public: | 36 public: |
24 StartupTest() { | 37 StartupTest() { |
25 show_window_ = true; | 38 show_window_ = true; |
26 pages_ = "about:blank"; | 39 pages_ = "about:blank"; |
27 } | 40 } |
28 void SetUp() {} | 41 void SetUp() {} |
29 void TearDown() {} | 42 void TearDown() {} |
30 | 43 |
31 void RunStartupTest(const wchar_t* graph, const wchar_t* trace, | 44 void RunStartupTest(const wchar_t* graph, const wchar_t* trace, |
32 bool test_cold, bool important) { | 45 bool test_cold, bool important) { |
33 const int kNumCycles = 20; | 46 const int kNumCycles = 20; |
34 | 47 |
35 TimeDelta timings[kNumCycles]; | 48 TimeDelta timings[kNumCycles]; |
36 for (int i = 0; i < kNumCycles; ++i) { | 49 for (int i = 0; i < kNumCycles; ++i) { |
37 if (test_cold) { | 50 if (test_cold) { |
38 FilePath dir_app; | 51 FilePath dir_app; |
39 ASSERT_TRUE(PathService::Get(chrome::DIR_APP, &dir_app)); | 52 ASSERT_TRUE(PathService::Get(chrome::DIR_APP, &dir_app)); |
40 | 53 |
41 FilePath chrome_exe(dir_app.Append( | 54 FilePath chrome_exe(dir_app.Append( |
42 FilePath::FromWStringHack(chrome::kBrowserProcessExecutableName))); | 55 FilePath::FromWStringHack(chrome::kBrowserProcessExecutableName))); |
43 ASSERT_TRUE(file_util::EvictFileFromSystemCache(chrome_exe)); | 56 ASSERT_TRUE(EvictFileFromSystemCacheWrapper(chrome_exe)); |
44 #if defined(OS_WIN) | 57 #if defined(OS_WIN) |
45 // TODO(port): these files do not exist on other platforms. | 58 // TODO(port): these files do not exist on other platforms. |
46 // Decide what to do. | 59 // Decide what to do. |
47 | 60 |
48 FilePath chrome_dll(dir_app.Append(FILE_PATH_LITERAL("chrome.dll"))); | 61 FilePath chrome_dll(dir_app.Append(FILE_PATH_LITERAL("chrome.dll"))); |
49 ASSERT_TRUE(file_util::EvictFileFromSystemCache(chrome_dll)); | 62 ASSERT_TRUE(EvictFileFromSystemCacheWrapper(chrome_dll)); |
50 | 63 |
51 FilePath gears_dll; | 64 FilePath gears_dll; |
52 ASSERT_TRUE(PathService::Get(chrome::FILE_GEARS_PLUGIN, &gears_dll)); | 65 ASSERT_TRUE(PathService::Get(chrome::FILE_GEARS_PLUGIN, &gears_dll)); |
53 ASSERT_TRUE(file_util::EvictFileFromSystemCache(gears_dll)); | 66 ASSERT_TRUE(EvictFileFromSystemCacheWrapper(gears_dll)); |
54 #endif // defined(OS_WIN) | 67 #endif // defined(OS_WIN) |
55 } | 68 } |
56 | 69 |
57 UITest::SetUp(); | 70 UITest::SetUp(); |
58 TimeTicks end_time = TimeTicks::Now(); | 71 TimeTicks end_time = TimeTicks::Now(); |
59 timings[i] = end_time - browser_launch_time_; | 72 timings[i] = end_time - browser_launch_time_; |
60 // TODO(beng): Can't shut down so quickly. Figure out why, and fix. If we | 73 // TODO(beng): Can't shut down so quickly. Figure out why, and fix. If we |
61 // do, we crash. | 74 // do, we crash. |
62 PlatformThread::Sleep(50); | 75 PlatformThread::Sleep(50); |
63 UITest::TearDown(); | 76 UITest::TearDown(); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 false /* not important */); | 145 false /* not important */); |
133 } | 146 } |
134 | 147 |
135 TEST_F(StartupFileTest, PerfColdGears) { | 148 TEST_F(StartupFileTest, PerfColdGears) { |
136 RunStartupTest(L"cold", L"gears", true /* cold */, | 149 RunStartupTest(L"cold", L"gears", true /* cold */, |
137 false /* not important */); | 150 false /* not important */); |
138 } | 151 } |
139 | 152 |
140 #endif // defined(OS_WIN) | 153 #endif // defined(OS_WIN) |
141 | 154 |
OLD | NEW |