| 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/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/process_util.h" | 9 #include "base/process_util.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| 11 #include "chrome/browser/net/url_fixer_upper.h" | 11 #include "chrome/browser/net/url_fixer_upper.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 #if defined(OS_WIN) | |
| 15 // TODO(port): Enable when chrome_process_filter.h is ported. | |
| 16 #include "chrome/common/chrome_process_filter.h" | |
| 17 #endif // defined(OS_WIN) | |
| 18 #include "chrome/common/chrome_switches.h" | 14 #include "chrome/common/chrome_switches.h" |
| 19 #include "chrome/test/automation/tab_proxy.h" | 15 #include "chrome/test/automation/tab_proxy.h" |
| 20 #include "chrome/test/automation/window_proxy.h" | 16 #include "chrome/test/automation/window_proxy.h" |
| 17 #include "chrome/test/chrome_process_util.h" |
| 21 #include "chrome/test/ui/ui_test.h" | 18 #include "chrome/test/ui/ui_test.h" |
| 22 #include "chrome/test/perf/mem_usage.h" | 19 #include "chrome/test/perf/mem_usage.h" |
| 23 #include "googleurl/src/gurl.h" | 20 #include "googleurl/src/gurl.h" |
| 24 #include "net/base/net_util.h" | 21 #include "net/base/net_util.h" |
| 25 | 22 |
| 26 #ifndef NDEBUG | 23 #ifndef NDEBUG |
| 27 #define TEST_ITERATIONS "2" | 24 #define TEST_ITERATIONS "2" |
| 28 #else | 25 #else |
| 29 #define TEST_ITERATIONS "10" | 26 #define TEST_ITERATIONS "10" |
| 30 #endif | 27 #endif |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 std::string cookie; | 78 std::string cookie; |
| 82 ASSERT_TRUE(tab->GetCookieByName(test_url, "__pc_pages", &cookie)); | 79 ASSERT_TRUE(tab->GetCookieByName(test_url, "__pc_pages", &cookie)); |
| 83 pages->assign(UTF8ToWide(cookie)); | 80 pages->assign(UTF8ToWide(cookie)); |
| 84 ASSERT_FALSE(pages->empty()); | 81 ASSERT_FALSE(pages->empty()); |
| 85 ASSERT_TRUE(tab->GetCookieByName(test_url, "__pc_timings", &cookie)); | 82 ASSERT_TRUE(tab->GetCookieByName(test_url, "__pc_timings", &cookie)); |
| 86 timings->assign(cookie); | 83 timings->assign(cookie); |
| 87 ASSERT_FALSE(timings->empty()); | 84 ASSERT_FALSE(timings->empty()); |
| 88 } | 85 } |
| 89 | 86 |
| 90 #if defined(OS_WIN) | 87 #if defined(OS_WIN) |
| 91 // TODO(port): Code below depends on BrowserProcessFilter and has windowsisms. | 88 // TODO(port): Port chrome_process_util and remove windowsisms. |
| 92 void PrintIOPerfInfo(const char* test_name) { | 89 void PrintIOPerfInfo(const char* test_name) { |
| 93 BrowserProcessFilter chrome_filter(L""); | 90 FilePath data_dir; |
| 94 base::NamedProcessIterator | 91 PathService::Get(chrome::DIR_USER_DATA, &data_dir); |
| 95 chrome_process_itr(chrome::kBrowserProcessExecutableName, | 92 int browser_process_pid = ChromeBrowserProcessId(data_dir); |
| 96 &chrome_filter); | 93 ChromeProcessList chrome_processes(GetRunningChromeProcesses(data_dir)); |
| 97 | 94 |
| 98 const PROCESSENTRY32* chrome_entry; | 95 ChromeProcessList::const_iterator it; |
| 99 while(chrome_entry = chrome_process_itr.NextProcessEntry()) { | 96 for (it = chrome_processes.begin(); it != chrome_processes.end(); ++it) { |
| 100 uint32 pid = chrome_entry->th32ProcessID; | 97 base::ProcessHandle process_handle; |
| 101 HANDLE process_handle = OpenProcess(PROCESS_QUERY_INFORMATION, | 98 if (!base::OpenProcessHandle(*it, &process_handle)) { |
| 102 false, | 99 NOTREACHED(); |
| 103 pid); | 100 } |
| 104 | 101 |
| 105 scoped_ptr<base::ProcessMetrics> process_metrics; | 102 scoped_ptr<base::ProcessMetrics> process_metrics; |
| 106 IO_COUNTERS io_counters; | 103 IO_COUNTERS io_counters; |
| 107 process_metrics.reset( | 104 process_metrics.reset( |
| 108 base::ProcessMetrics::CreateProcessMetrics(process_handle)); | 105 base::ProcessMetrics::CreateProcessMetrics(process_handle)); |
| 109 ZeroMemory(&io_counters, sizeof(io_counters)); | 106 ZeroMemory(&io_counters, sizeof(io_counters)); |
| 110 | 107 |
| 111 if (process_metrics.get()->GetIOCounters(&io_counters)) { | 108 if (process_metrics.get()->GetIOCounters(&io_counters)) { |
| 112 // Print out IO performance. We assume that the values can be | 109 // Print out IO performance. We assume that the values can be |
| 113 // converted to size_t (they're reported as ULONGLONG, 64-bit numbers). | 110 // converted to size_t (they're reported as ULONGLONG, 64-bit numbers). |
| 114 std::string chrome_name = | 111 std::string chrome_name = (*it == browser_process_pid) ? "_b" : "_r"; |
| 115 (pid == chrome_filter.browser_process_id()) ? "_b" : "_r"; | |
| 116 | 112 |
| 117 PrintResult("read_op", chrome_name, | 113 PrintResult("read_op", chrome_name, |
| 118 "r_op" + chrome_name + test_name, | 114 "r_op" + chrome_name + test_name, |
| 119 static_cast<size_t>(io_counters.ReadOperationCount), "", | 115 static_cast<size_t>(io_counters.ReadOperationCount), "", |
| 120 false /* not important */); | 116 false /* not important */); |
| 121 PrintResult("write_op", chrome_name, | 117 PrintResult("write_op", chrome_name, |
| 122 "w_op" + chrome_name + test_name, | 118 "w_op" + chrome_name + test_name, |
| 123 static_cast<size_t>(io_counters.WriteOperationCount), "", | 119 static_cast<size_t>(io_counters.WriteOperationCount), "", |
| 124 false /* not important */); | 120 false /* not important */); |
| 125 PrintResult("other_op", chrome_name, | 121 PrintResult("other_op", chrome_name, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 149 | 145 |
| 150 total = static_cast<size_t>((io_counters.ReadTransferCount + | 146 total = static_cast<size_t>((io_counters.ReadTransferCount + |
| 151 io_counters.WriteTransferCount + | 147 io_counters.WriteTransferCount + |
| 152 io_counters.OtherTransferCount) / 1024); | 148 io_counters.OtherTransferCount) / 1024); |
| 153 PrintResult("total_byte", chrome_name, | 149 PrintResult("total_byte", chrome_name, |
| 154 "IO_b" + chrome_name + test_name, | 150 "IO_b" + chrome_name + test_name, |
| 155 total, "kb", true /* important */); | 151 total, "kb", true /* important */); |
| 156 | 152 |
| 157 | 153 |
| 158 } | 154 } |
| 155 |
| 156 base::CloseProcessHandle(process_handle); |
| 159 } | 157 } |
| 160 } | 158 } |
| 161 | 159 |
| 162 void PrintMemoryUsageInfo(const char* test_name) { | 160 void PrintMemoryUsageInfo(const char* test_name) { |
| 163 BrowserProcessFilter chrome_filter(L""); | 161 FilePath data_dir; |
| 164 base::NamedProcessIterator | 162 PathService::Get(chrome::DIR_USER_DATA, &data_dir); |
| 165 chrome_process_itr(chrome::kBrowserProcessExecutableName, | 163 int browser_process_pid = ChromeBrowserProcessId(data_dir); |
| 166 &chrome_filter); | 164 ChromeProcessList chrome_processes(GetRunningChromeProcesses(data_dir)); |
| 167 | 165 |
| 168 const PROCESSENTRY32* chrome_entry; | 166 ChromeProcessList::const_iterator it; |
| 169 while(chrome_entry = chrome_process_itr.NextProcessEntry()) { | 167 for (it = chrome_processes.begin(); it != chrome_processes.end(); ++it) { |
| 170 uint32 pid = chrome_entry->th32ProcessID; | |
| 171 size_t peak_virtual_size; | 168 size_t peak_virtual_size; |
| 172 size_t current_virtual_size; | 169 size_t current_virtual_size; |
| 173 size_t peak_working_set_size; | 170 size_t peak_working_set_size; |
| 174 size_t current_working_set_size; | 171 size_t current_working_set_size; |
| 175 if (GetMemoryInfo(pid, &peak_virtual_size, ¤t_virtual_size, | 172 if (GetMemoryInfo(*it, &peak_virtual_size, ¤t_virtual_size, |
| 176 &peak_working_set_size, ¤t_working_set_size)) { | 173 &peak_working_set_size, ¤t_working_set_size)) { |
| 177 | 174 |
| 178 std::string chrome_name = | 175 std::string chrome_name = (*it == browser_process_pid) ? "_b" : "_r"; |
| 179 (pid == chrome_filter.browser_process_id()) ? "_b" : "_r"; | |
| 180 | 176 |
| 181 std::string trace_name(test_name); | 177 std::string trace_name(test_name); |
| 182 PrintResult("vm_peak", chrome_name, | 178 PrintResult("vm_peak", chrome_name, |
| 183 "vm_pk" + chrome_name + trace_name, | 179 "vm_pk" + chrome_name + trace_name, |
| 184 peak_virtual_size, "bytes", | 180 peak_virtual_size, "bytes", |
| 185 true /* important */); | 181 true /* important */); |
| 186 PrintResult("vm_final", chrome_name, | 182 PrintResult("vm_final", chrome_name, |
| 187 "vm_f" + chrome_name + trace_name, | 183 "vm_f" + chrome_name + trace_name, |
| 188 current_virtual_size, "bytes", | 184 current_virtual_size, "bytes", |
| 189 false /* not important */); | 185 false /* not important */); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 RunTest("dom", true); | 326 RunTest("dom", true); |
| 331 } | 327 } |
| 332 | 328 |
| 333 TEST_F(PageCyclerTest, BloatHttp) { | 329 TEST_F(PageCyclerTest, BloatHttp) { |
| 334 RunTest("bloat", true); | 330 RunTest("bloat", true); |
| 335 } | 331 } |
| 336 | 332 |
| 337 TEST_F(PageCyclerReferenceTest, BloatHttp) { | 333 TEST_F(PageCyclerReferenceTest, BloatHttp) { |
| 338 RunTest("bloat", true); | 334 RunTest("bloat", true); |
| 339 } | 335 } |
| OLD | NEW |