| Index: chrome/test/memory_test/memory_test.cc
|
| ===================================================================
|
| --- chrome/test/memory_test/memory_test.cc (revision 18404)
|
| +++ chrome/test/memory_test/memory_test.cc (working copy)
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/command_line.h"
|
| +#include "base/file_path.h"
|
| #include "base/file_util.h"
|
| #include "base/path_service.h"
|
| #include "base/process_util.h"
|
| @@ -17,13 +18,16 @@
|
| #include "chrome/test/automation/window_proxy.h"
|
| #include "chrome/test/chrome_process_util.h"
|
| #include "chrome/test/ui/ui_test.h"
|
| +#if defined(OS_WIN)
|
| #include "chrome/test/perf/mem_usage.h"
|
| +#endif
|
| #include "googleurl/src/gurl.h"
|
| #include "net/base/net_util.h"
|
|
|
| namespace {
|
|
|
| -static const wchar_t kTempDirName[] = L"memory_test_profile";
|
| +static const FilePath::CharType kTempDirName[] =
|
| + FILE_PATH_LITERAL("memory_test_profile");
|
|
|
| class MemoryTest : public UITest {
|
| public:
|
| @@ -41,17 +45,17 @@
|
| launch_arguments_.AppendSwitch(switches::kNoEvents);
|
|
|
| // Get the specified user data dir (optional)
|
| - std::wstring profile_dir =
|
| - CommandLine::ForCurrentProcess()->GetSwitchValue(switches::kUserDataDir);
|
| + FilePath profile_dir = FilePath::FromWStringHack(
|
| + CommandLine::ForCurrentProcess()->GetSwitchValue(switches::kUserDataDir));
|
|
|
| - if (profile_dir.length() == 0) {
|
| + if (profile_dir.empty()) {
|
| // Compute the user-data-dir which contains our test cache.
|
| PathService::Get(base::DIR_EXE, &profile_dir);
|
| - file_util::UpOneDirectory(&profile_dir);
|
| - file_util::UpOneDirectory(&profile_dir);
|
| - file_util::AppendToPath(&profile_dir, L"data");
|
| - file_util::AppendToPath(&profile_dir, L"memory_test");
|
| - file_util::AppendToPath(&profile_dir, L"general_mix");
|
| + profile_dir = profile_dir.DirName();
|
| + profile_dir = profile_dir.DirName();
|
| + profile_dir = profile_dir.AppendASCII("data");
|
| + profile_dir = profile_dir.AppendASCII("memory_test");
|
| + profile_dir = profile_dir.AppendASCII("general_mix");
|
|
|
| if (!SetupTempDirectory(profile_dir)) {
|
| // There isn't really a way to fail gracefully here.
|
| @@ -64,7 +68,7 @@
|
| }
|
|
|
| launch_arguments_.AppendSwitchWithValue(switches::kUserDataDir,
|
| - user_data_dir_);
|
| + user_data_dir_.ToWStringHack());
|
| }
|
|
|
| ~MemoryTest() {
|
| @@ -210,7 +214,9 @@
|
| // Record the initial CommitCharge. This is a system-wide measurement,
|
| // so if other applications are running, they can create variance in this
|
| // test.
|
| +#if defined(OS_WIN)
|
| size_t start_size = GetSystemCommitCharge();
|
| +#endif
|
|
|
| // Cycle through the URLs.
|
| scoped_refptr<BrowserProxy> window(automation()->GetBrowserWindow(0));
|
| @@ -253,9 +259,14 @@
|
| // To make these tests more reliable, slowing them down a bit.
|
| PlatformThread::Sleep(100);
|
| }
|
| +#if defined(OS_WIN)
|
| size_t stop_size = GetSystemCommitCharge();
|
|
|
| PrintResults(test_name, stop_size - start_size);
|
| +#else
|
| + NOTIMPLEMENTED() << "need to map SystemCommitCharge";
|
| + PrintResults(test_name, 0);
|
| +#endif
|
| }
|
|
|
| void PrintResults(const char* test_name, size_t commit_size) {
|
| @@ -277,14 +288,14 @@
|
| ChromeProcessList::const_iterator it;
|
| for (it = chrome_processes.begin(); it != chrome_processes.end(); ++it) {
|
| scoped_ptr<base::ProcessMetrics> process_metrics;
|
| - IO_COUNTERS io_counters;
|
| + IoCounters io_counters;
|
| base::ProcessHandle process_handle;
|
| if (!base::OpenProcessHandle(*it, &process_handle)) {
|
| NOTREACHED();
|
| }
|
| process_metrics.reset(
|
| base::ProcessMetrics::CreateProcessMetrics(process_handle));
|
| - ZeroMemory(&io_counters, sizeof(io_counters));
|
| + bzero(&io_counters, sizeof(io_counters));
|
|
|
| if (process_metrics.get()->GetIOCounters(&io_counters)) {
|
| std::string chrome_name = (*it == browser_process_pid) ? "_b" : "_r";
|
| @@ -319,7 +330,9 @@
|
| printf("\n");
|
|
|
| FilePath data_dir(user_data_dir());
|
| +#if defined(OS_WIN)
|
| int browser_process_pid = ChromeBrowserProcessId(data_dir);
|
| +#endif
|
| ChromeProcessList chrome_processes(GetRunningChromeProcesses(data_dir));
|
|
|
| size_t browser_virtual_size = 0;
|
| @@ -329,6 +342,7 @@
|
| size_t num_chrome_processes = 0;
|
| ChromeProcessList::const_iterator it;
|
| for (it = chrome_processes.begin(); it != chrome_processes.end(); ++it) {
|
| +#if defined(OS_WIN)
|
| size_t peak_virtual_size;
|
| size_t current_virtual_size;
|
| size_t peak_working_set_size;
|
| @@ -343,6 +357,11 @@
|
| working_set_size += current_working_set_size;
|
| num_chrome_processes++;
|
| }
|
| +#else
|
| + // TODO(port)
|
| + NOTIMPLEMENTED()
|
| + << "need to port GetMemoryInfo or map it to the existing primitives";
|
| +#endif
|
| }
|
|
|
| std::string trace_name(test_name);
|
| @@ -371,19 +390,17 @@
|
| // Output:
|
| // On success, modifies user_data_dir_ to be a new profile directory
|
| // and sets cleanup_temp_dir_on_exit_ to true.
|
| - bool SetupTempDirectory(std::wstring src_dir) {
|
| - LOG(INFO) << "Setting up temp directory in " << src_dir.c_str();
|
| + bool SetupTempDirectory(const FilePath &src_dir) {
|
| + LOG(INFO) << "Setting up temp directory in " << src_dir.value();
|
| // We create a copy of the test dir and use it so that each
|
| // run of this test starts with the same data. Running this
|
| // test has the side effect that it will change the profile.
|
| - std::wstring temp_dir;
|
| + FilePath temp_dir;
|
| if (!file_util::CreateNewTempDirectory(kTempDirName, &temp_dir)) {
|
| LOG(ERROR) << "Could not create temp directory:" << kTempDirName;
|
| return false;
|
| }
|
|
|
| - src_dir.append(L"\\*");
|
| -
|
| if (!file_util::CopyDirectory(src_dir, temp_dir, true)) {
|
| LOG(ERROR) << "Could not copy temp directory";
|
| return false;
|
| @@ -396,7 +413,7 @@
|
| }
|
|
|
| bool cleanup_temp_dir_on_exit_;
|
| - std::wstring user_data_dir_;
|
| + FilePath user_data_dir_;
|
| };
|
|
|
| class MemoryReferenceTest : public MemoryTest {
|
| @@ -407,7 +424,13 @@
|
| FilePath dir;
|
| PathService::Get(chrome::DIR_TEST_TOOLS, &dir);
|
| dir = dir.AppendASCII("reference_build");
|
| +#if defined(OS_WIN)
|
| dir = dir.AppendASCII("chrome");
|
| +#elif defined(OS_LINUX)
|
| + dir = dir.AppendASCII("chrome_linux");
|
| +#elif defined(OS_MACOSX)
|
| + dir = dir.AppendASCII("chrome_mac");
|
| +#endif
|
| browser_directory_ = dir;
|
| UITest::SetUp();
|
| }
|
| @@ -418,8 +441,6 @@
|
| }
|
| };
|
|
|
| -} // namespace
|
| -
|
| TEST_F(MemoryTest, SingleTabTest) {
|
| RunTest("1t", 1);
|
| }
|
| @@ -431,3 +452,5 @@
|
| TEST_F(MemoryTest, TwelveTabTest) {
|
| RunTest("12t", 12);
|
| }
|
| +
|
| +} // namespace
|
|
|