| Index: chrome/test/startup/startup_test.cc
|
| diff --git a/chrome/test/startup/startup_test.cc b/chrome/test/startup/startup_test.cc
|
| index c8cf02ae82c5897523fef93b890835328f8cc702..a07769ddd4d646ff0ad91ae7932d072534da267c 100644
|
| --- a/chrome/test/startup/startup_test.cc
|
| +++ b/chrome/test/startup/startup_test.cc
|
| @@ -2,11 +2,14 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "base/file_path.h"
|
| #include "base/file_util.h"
|
| #include "base/path_service.h"
|
| #include "base/platform_thread.h"
|
| #include "base/string_util.h"
|
| +#include "base/test_file_util.h"
|
| #include "base/time.h"
|
| +#include "chrome/common/chrome_constants.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/test/ui/ui_test.h"
|
| #include "net/base/net_util.h"
|
| @@ -16,18 +19,6 @@ using base::TimeTicks;
|
|
|
| namespace {
|
|
|
| -// Wrapper around CopyFile to retry 10 times if there is an error.
|
| -// For some reasons on buildbot it happens quite often that
|
| -// the test fails because the dll is still in use.
|
| -bool CopyFileWrapper(const std::wstring &src, const std::wstring &dest) {
|
| - for (int i = 0; i < 10; ++i) {
|
| - if (file_util::CopyFile(src, dest))
|
| - return true;
|
| - Sleep(1000);
|
| - }
|
| - return false;
|
| -}
|
| -
|
| class StartupTest : public UITest {
|
| public:
|
| StartupTest() {
|
| @@ -41,24 +32,26 @@ class StartupTest : public UITest {
|
| bool test_cold, bool important) {
|
| const int kNumCycles = 20;
|
|
|
| - // Make a backup of gears.dll so we can overwrite the original, which
|
| - // flushes the disk cache for that file.
|
| - std::wstring chrome_dll, chrome_dll_copy;
|
| - ASSERT_TRUE(PathService::Get(chrome::DIR_APP, &chrome_dll));
|
| - file_util::AppendToPath(&chrome_dll, L"chrome.dll");
|
| - chrome_dll_copy = chrome_dll + L".copy";
|
| - ASSERT_TRUE(CopyFileWrapper(chrome_dll, chrome_dll_copy));
|
| -
|
| - std::wstring gears_dll, gears_dll_copy;
|
| - ASSERT_TRUE(PathService::Get(chrome::FILE_GEARS_PLUGIN, &gears_dll));
|
| - gears_dll_copy = gears_dll + L".copy";
|
| - ASSERT_TRUE(CopyFileWrapper(gears_dll, gears_dll_copy));
|
| -
|
| TimeDelta timings[kNumCycles];
|
| for (int i = 0; i < kNumCycles; ++i) {
|
| if (test_cold) {
|
| - ASSERT_TRUE(CopyFileWrapper(chrome_dll_copy, chrome_dll));
|
| - ASSERT_TRUE(CopyFileWrapper(gears_dll_copy, gears_dll));
|
| + FilePath dir_app;
|
| + ASSERT_TRUE(PathService::Get(chrome::DIR_APP, &dir_app));
|
| +
|
| + FilePath chrome_exe(dir_app.Append(
|
| + FilePath::FromWStringHack(chrome::kBrowserProcessExecutableName)));
|
| + ASSERT_TRUE(file_util::EvictFileFromSystemCache(chrome_exe));
|
| +#if defined(OS_WIN)
|
| + // TODO(port): these files do not exist on other platforms.
|
| + // Decide what to do.
|
| +
|
| + FilePath chrome_dll(dir_app.Append(FILE_PATH_LITERAL("chrome.dll")));
|
| + ASSERT_TRUE(file_util::EvictFileFromSystemCache(chrome_dll));
|
| +
|
| + FilePath gears_dll;
|
| + ASSERT_TRUE(PathService::Get(chrome::FILE_GEARS_PLUGIN, &gears_dll));
|
| + ASSERT_TRUE(file_util::EvictFileFromSystemCache(gears_dll));
|
| +#endif // defined(OS_WIN)
|
| }
|
|
|
| UITest::SetUp();
|
| @@ -76,9 +69,6 @@ class StartupTest : public UITest {
|
| }
|
| }
|
|
|
| - ASSERT_TRUE(file_util::Delete(chrome_dll_copy, false));
|
| - ASSERT_TRUE(file_util::Delete(gears_dll_copy, false));
|
| -
|
| std::wstring times;
|
| for (int i = 0; i < kNumCycles; ++i)
|
| StringAppendF(×, L"%.2f,", timings[i].InMillisecondsF());
|
| @@ -116,12 +106,16 @@ class StartupFileTest : public StartupTest {
|
| pages_ = WideToUTF8(file_url);
|
| }
|
| };
|
| +
|
| } // namespace
|
|
|
| TEST_F(StartupTest, Perf) {
|
| RunStartupTest(L"warm", L"t", false /* not cold */, true /* important */);
|
| }
|
|
|
| +#if defined(OS_WIN)
|
| +// TODO(port): Enable reference tests on other platforms.
|
| +
|
| TEST_F(StartupReferenceTest, Perf) {
|
| RunStartupTest(L"warm", L"t_ref", false /* not cold */,
|
| true /* important */);
|
| @@ -143,3 +137,5 @@ TEST_F(StartupFileTest, PerfColdGears) {
|
| false /* not important */);
|
| }
|
|
|
| +#endif // defined(OS_WIN)
|
| +
|
|
|