Index: chrome/test/reliability/page_load_test.cc |
=================================================================== |
--- chrome/test/reliability/page_load_test.cc (revision 23003) |
+++ chrome/test/reliability/page_load_test.cc (working copy) |
@@ -42,6 +42,7 @@ |
#include "base/file_version_info.h" |
#include "base/path_service.h" |
#include "base/string_util.h" |
+#include "base/test_file_util.h" |
#include "base/time.h" |
#include "base/time_format.h" |
#include "chrome/browser/net/url_fixer_upper.h" |
@@ -61,6 +62,13 @@ |
#include "chrome/test/reliability/page_load_test.h" |
#include "net/base/net_util.h" |
+#if defined(OS_WIN) |
+#define MAYBE_Reliability Reliability |
+#else // defined(OS_WIN) |
+// TODO(estade): port till we can enable this. |
+#define MAYBE_Reliability DISABLED_Reliability |
+#endif // !defined(OS_WIN) |
+ |
namespace { |
// See comments at the beginning of the file for the definition of switches. |
@@ -79,22 +87,23 @@ |
const wchar_t kNoPageDownSwitch[] = L"nopagedown"; |
const wchar_t kSaveDebugLogSwitch[] = L"savedebuglog"; |
-std::wstring server_url = L"http://urllist.com"; |
-const wchar_t test_page_1[] = L"page1.html"; |
-const wchar_t test_page_2[] = L"page2.html"; |
-const wchar_t crash_url[] = L"about:crash"; |
+const char kDefaultServerUrl[] = "http://urllist.com"; |
+char* server_url = NULL; |
+const char kTestPage1[] = "page1.html"; |
+const char kTestPage2[] = "page2.html"; |
+const char crash_url[] = "about:crash"; |
// These are copied from v8 definitions as we cannot include them. |
const wchar_t kV8LogFileSwitch[] = L"logfile"; |
-const wchar_t kV8LogFileDefaultName[] = L"v8.log"; |
+const char kV8LogFileDefaultName[] = "v8.log"; |
// String name of local chrome dll for looking up file information. |
-std::wstring kChromeDll = L"chrome.dll"; |
+const wchar_t kChromeDll[] = L"chrome.dll"; |
bool append_page_id = false; |
int32 start_page; |
int32 end_page; |
-std::wstring url_file_path; |
+FilePath url_file_path; |
int32 start_index = 1; |
int32 end_index = kint32max; |
int32 iterations = 1; |
@@ -102,13 +111,13 @@ |
bool continuous_load = false; |
bool browser_existing = false; |
bool page_down = true; |
-std::wstring end_url; |
-std::wstring log_file_path; |
-uint32 timeout_ms = INFINITE; |
+GURL end_url; |
+FilePath log_file_path; |
+int timeout_ms = -1; |
bool save_debug_log = false; |
-std::wstring chrome_log_path; |
-std::wstring v8_log_path; |
-std::wstring test_log_path; |
+FilePath chrome_log_path; |
+FilePath v8_log_path; |
+FilePath test_log_path; |
bool stand_alone = false; |
class PageLoadTest : public UITest { |
@@ -139,23 +148,25 @@ |
// Accept URL as string here because the url may also act as a test id |
// and needs to be logged in its original format even if invalid. |
- void NavigateToURLLogResult(const std::wstring& url_string, |
+ void NavigateToURLLogResult(const GURL& url, |
std::ofstream& log_file, |
NavigationMetrics* metrics_output) { |
- GURL url = GURL(url_string); |
NavigationMetrics metrics = {NAVIGATION_ERROR}; |
std::ofstream test_log; |
// Create a test log. |
- test_log_path = L"test_log.log"; |
- test_log.open(test_log_path.c_str()); |
+ test_log_path = FilePath(FILE_PATH_LITERAL("test_log.log")); |
+ test_log.open(test_log_path.value().c_str()); |
+// TODO(estade): port. |
+#if defined(OS_WIN) |
// Check file version info for chrome dll. |
FileVersionInfo* file_info; |
file_info = FileVersionInfo::CreateFileVersionInfo(kChromeDll); |
std::wstring last_change = file_info->last_change(); |
test_log << "Last Change: "; |
test_log << last_change << std::endl; |
+#endif // defined(OS_WIN) |
// Log timestamp for test start. |
base::Time time_now = base::Time::Now(); |
@@ -196,10 +207,13 @@ |
browser->BringToFrontWithTimeout(action_max_timeout_ms(), |
&activation_timeout); |
if (!activation_timeout) { |
+// TODO(estade): port. |
+#if defined(OS_WIN) |
window->SimulateOSKeyPress(VK_NEXT, 0); |
PlatformThread::Sleep(sleep_timeout_ms()); |
window->SimulateOSKeyPress(VK_NEXT, 0); |
PlatformThread::Sleep(sleep_timeout_ms()); |
+#endif // defined(OS_WIN) |
} |
} |
} |
@@ -255,7 +269,7 @@ |
} |
if (log_file.is_open()) { |
- log_file << url_string; |
+ log_file << url.spec(); |
switch (metrics.result) { |
case NAVIGATION_ERROR: |
log_file << " error"; |
@@ -292,9 +306,12 @@ |
if (log_file.is_open() && save_debug_log && !continuous_load) |
SaveDebugLogs(log_file); |
- |
+ |
+// TODO(estade): port. |
+#if defined(OS_WIN) |
// Log revision information for Chrome build under test. |
log_file << " " << "revision=" << last_change; |
+#endif // defined(OS_WIN) |
// Get crash dumps. |
LogOrDeleteNewCrashDumps(log_file, &metrics); |
@@ -312,9 +329,10 @@ |
if (append_page_id) { |
// For usage 2 |
for (int i = start_page; i <= end_page; ++i) { |
- std::wstring test_page_url( |
- StringPrintf(L"%ls/page?id=%d", server_url.c_str(), i)); |
- NavigateToURLLogResult(test_page_url, log_file, NULL); |
+ const char* server = server_url ? server_url : kDefaultServerUrl; |
+ std::string test_page_url( |
+ StringPrintf("%s/page?id=%d", server, i)); |
+ NavigateToURLLogResult(GURL(test_page_url), log_file, NULL); |
} |
} else { |
// Don't run if single process mode. |
@@ -325,7 +343,7 @@ |
return; |
// For usage 1 |
NavigationMetrics metrics; |
- if (timeout_ms == INFINITE) |
+ if (timeout_ms == -1) |
timeout_ms = 2000; |
// Though it would be nice to test the page down code path in usage 1, |
@@ -336,17 +354,13 @@ |
page_down = false; |
FilePath sample_data_dir = GetSampleDataDir(); |
- FilePath test_page_1 = sample_data_dir.AppendASCII("page1.html"); |
- FilePath test_page_2 = sample_data_dir.AppendASCII("page2.html"); |
+ FilePath test_page_1 = sample_data_dir.AppendASCII(kTestPage1); |
+ FilePath test_page_2 = sample_data_dir.AppendASCII(kTestPage2); |
GURL test_url_1 = net::FilePathToFileURL(test_page_1); |
GURL test_url_2 = net::FilePathToFileURL(test_page_2); |
- // Convert back to string so that all calls to navigate are the same. |
- const std::wstring test_url_1_string = ASCIIToWide(test_url_1.spec()); |
- const std::wstring test_url_2_string = ASCIIToWide(test_url_2.spec()); |
- |
- NavigateToURLLogResult(test_url_1_string, log_file, &metrics); |
+ NavigateToURLLogResult(test_url_1, log_file, &metrics); |
// Verify everything is fine |
EXPECT_EQ(NAVIGATION_SUCCESS, metrics.result); |
EXPECT_EQ(0, metrics.crash_dump_count); |
@@ -359,7 +373,7 @@ |
EXPECT_EQ(0, metrics.plugin_crash_count); |
// Go to "about:crash" |
- NavigateToURLLogResult(std::wstring(crash_url), log_file, &metrics); |
+ NavigateToURLLogResult(GURL(crash_url), log_file, &metrics); |
// Found a crash dump |
EXPECT_EQ(1, metrics.crash_dump_count) << kFailedNoCrashService; |
// Browser did not crash, and exited cleanly. |
@@ -370,7 +384,7 @@ |
EXPECT_EQ(1, metrics.renderer_crash_count); |
EXPECT_EQ(0, metrics.plugin_crash_count); |
- NavigateToURLLogResult(test_url_2_string, log_file, &metrics); |
+ NavigateToURLLogResult(test_url_2, log_file, &metrics); |
// The data on previous crash should be cleared and we should get |
// metrics for a successful page load. |
EXPECT_EQ(NAVIGATION_SUCCESS, metrics.result); |
@@ -382,7 +396,6 @@ |
EXPECT_EQ(0, metrics.plugin_crash_count); |
// Verify metrics service does what we need when browser process crashes. |
- HANDLE browser_process; |
LaunchBrowserAndServer(); |
{ |
// TabProxy should be released before Browser is closed. |
@@ -392,8 +405,8 @@ |
} |
} |
// Kill browser process. |
- browser_process = process(); |
- TerminateProcess(browser_process, 0); |
+ base::ProcessHandle browser_process = process(); |
+ base::KillProcess(browser_process, 0, false); |
GetStabilityMetrics(&metrics); |
// This is not a clean shutdown. |
@@ -408,7 +421,7 @@ |
// For usage 3 |
void NavigateThroughURLList(std::ofstream& log_file) { |
- std::ifstream file(url_file_path.c_str()); |
+ std::ifstream file(url_file_path.value().c_str()); |
ASSERT_TRUE(file.is_open()); |
for (int line_index = 1; |
@@ -421,7 +434,7 @@ |
break; |
if (start_index <= line_index) { |
- NavigateToURLLogResult(ASCIIToWide(url_str), log_file, NULL); |
+ NavigateToURLLogResult(GURL(url_str), log_file, NULL); |
} |
} |
@@ -434,6 +447,8 @@ |
UITest::SetUp(); |
browser_existing = true; |
+// TODO(estade): port. |
+#if defined(OS_WIN) |
// Initialize crash_dumps_dir_path_. |
PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dumps_dir_path_); |
// Initialize crash_dumps_. |
@@ -451,21 +466,21 @@ |
} |
FindClose(find_handle); |
} |
+#endif // defined(OS_WIN) |
} |
FilePath ConstructSavedDebugLogPath(const FilePath& debug_log_path, |
int index) { |
- std::wstring suffix(L"_"); |
- suffix.append(IntToWString(index)); |
- return debug_log_path.InsertBeforeExtension(suffix); |
+ std::string suffix("_"); |
+ suffix.append(IntToString(index)); |
+ return debug_log_path.InsertBeforeExtensionASCII(suffix); |
} |
- void SaveDebugLog(const std::wstring& log_path, const std::wstring& log_id, |
+ void SaveDebugLog(const FilePath& log_path, const std::wstring& log_id, |
std::ofstream& log_file, int index) { |
if (!log_path.empty()) { |
- FilePath log_file_path(log_path); |
FilePath saved_log_file_path = |
- ConstructSavedDebugLogPath(log_file_path, index); |
+ ConstructSavedDebugLogPath(log_path, index); |
if (file_util::Move(log_file_path, saved_log_file_path)) { |
log_file << " " << log_id << "=" << saved_log_file_path.value(); |
} |
@@ -486,7 +501,6 @@ |
// otherwise, delete the crash dump file. |
void LogOrDeleteCrashDump(std::ofstream& log_file, |
std::wstring crash_dump_file_name) { |
- |
std::wstring crash_dump_file_path(crash_dumps_dir_path_); |
crash_dump_file_path.append(L"\\"); |
crash_dump_file_path.append(crash_dump_file_name); |
@@ -498,8 +512,8 @@ |
crash_dumps_[crash_dump_file_name] = true; |
log_file << " crash_dump=" << crash_dump_file_path; |
} else { |
- ASSERT_TRUE(DeleteFileW(crash_dump_file_path.c_str())); |
- ASSERT_TRUE(DeleteFileW(crash_text_file_path.c_str())); |
+ ASSERT_TRUE(file_util::DieFileDie(crash_dump_file_path, false)); |
+ ASSERT_TRUE(file_util::DieFileDie(crash_text_file_path, false)); |
} |
} |
@@ -508,6 +522,8 @@ |
// to log_file. |
void LogOrDeleteNewCrashDumps(std::ofstream& log_file, |
NavigationMetrics* metrics) { |
+// TODO(estade): port. |
+#if defined(OS_WIN) |
WIN32_FIND_DATAW find_data; |
HANDLE find_handle; |
int num_dumps = 0; |
@@ -533,6 +549,7 @@ |
if (metrics) |
metrics->crash_dump_count = num_dumps; |
+#endif // defined(OS_WIN) |
} |
// Get a PrefService whose contents correspond to the Local State file |
@@ -600,11 +617,11 @@ |
} // namespace |
-TEST_F(PageLoadTest, Reliability) { |
+TEST_F(PageLoadTest, MAYBE_Reliability) { |
std::ofstream log_file; |
if (!log_file_path.empty()) { |
- log_file.open(log_file_path.c_str()); |
+ log_file.open(log_file_path.value().c_str()); |
} |
for (int k = 0; k < iterations; ++k) { |
@@ -614,11 +631,14 @@ |
NavigateThroughURLList(log_file); |
} |
+// TODO(estade): port. |
+#if defined(OS_WIN) |
if (memory_usage) |
PrintChromeMemoryUsageInfo(); |
+#endif // defined(OS_WIN) |
} |
- if (!end_url.empty()) { |
+ if (!end_url.is_empty()) { |
NavigateToURLLogResult(end_url, log_file, NULL); |
} |
@@ -641,10 +661,12 @@ |
if (parsed_command_line.HasSwitch(kStartPageSwitch)) { |
ASSERT_TRUE(parsed_command_line.HasSwitch(kEndPageSwitch)); |
- start_page = |
- _wtoi(parsed_command_line.GetSwitchValue(kStartPageSwitch).c_str()); |
- end_page = |
- _wtoi(parsed_command_line.GetSwitchValue(kEndPageSwitch).c_str()); |
+ ASSERT_TRUE( |
+ StringToInt(WideToUTF16(parsed_command_line.GetSwitchValue( |
+ kStartPageSwitch)), &start_page)); |
+ ASSERT_TRUE( |
+ StringToInt(WideToUTF16(parsed_command_line.GetSwitchValue( |
+ kEndPageSwitch)), &end_page)); |
ASSERT_TRUE(start_page > 0 && end_page > 0); |
ASSERT_TRUE(start_page < end_page); |
append_page_id = true; |
@@ -652,29 +674,36 @@ |
ASSERT_FALSE(parsed_command_line.HasSwitch(kEndPageSwitch)); |
} |
- if (parsed_command_line.HasSwitch(kSiteSwitch)) |
- server_url.assign(parsed_command_line.GetSwitchValue(kSiteSwitch)); |
+ if (parsed_command_line.HasSwitch(kSiteSwitch)) { |
+ server_url = |
+ strdup(WideToUTF8(parsed_command_line.GetSwitchValue(kSiteSwitch))); |
+ } |
if (parsed_command_line.HasSwitch(kStartIndexSwitch)) { |
- start_index = |
- _wtoi(parsed_command_line.GetSwitchValue(kStartIndexSwitch).c_str()); |
+ ASSERT_TRUE( |
+ StringToInt(WideToUTF16(parsed_command_line.GetSwitchValue( |
+ kStartIndexSwitch)), &start_index)); |
ASSERT_TRUE(start_index > 0); |
} |
if (parsed_command_line.HasSwitch(kEndIndexSwitch)) { |
- end_index = |
- _wtoi(parsed_command_line.GetSwitchValue(kEndIndexSwitch).c_str()); |
+ ASSERT_TRUE( |
+ StringToInt(WideToUTF16(parsed_command_line.GetSwitchValue( |
+ kEndIndexSwitch)), &end_index)); |
ASSERT_TRUE(end_index > 0); |
} |
ASSERT_TRUE(end_index >= start_index); |
- if (parsed_command_line.HasSwitch(kListSwitch)) |
- url_file_path.assign(parsed_command_line.GetSwitchValue(kListSwitch)); |
+ if (parsed_command_line.HasSwitch(kListSwitch)) { |
+ url_file_path = FilePath::FromWStringHack( |
+ parsed_command_line.GetSwitchValue(kListSwitch)); |
+ } |
if (parsed_command_line.HasSwitch(kIterationSwitch)) { |
- iterations = |
- _wtoi(parsed_command_line.GetSwitchValue(kIterationSwitch).c_str()); |
+ ASSERT_TRUE( |
+ StringToInt(WideToUTF16(parsed_command_line.GetSwitchValue( |
+ kIterationSwitch)), &iterations)); |
ASSERT_TRUE(iterations > 0); |
} |
@@ -684,15 +713,20 @@ |
if (parsed_command_line.HasSwitch(kContinuousLoadSwitch)) |
continuous_load = true; |
- if (parsed_command_line.HasSwitch(kEndURLSwitch)) |
- end_url.assign(parsed_command_line.GetSwitchValue(kEndURLSwitch)); |
+ if (parsed_command_line.HasSwitch(kEndURLSwitch)) { |
+ end_url = GURL(WideToUTF8( |
+ parsed_command_line.GetSwitchValue(kEndURLSwitch))); |
+ } |
- if (parsed_command_line.HasSwitch(kLogFileSwitch)) |
- log_file_path.assign(parsed_command_line.GetSwitchValue(kLogFileSwitch)); |
+ if (parsed_command_line.HasSwitch(kLogFileSwitch)) { |
+ log_file_path = |
+ FilePath::FromWStringHack(parsed_command_line.GetSwitchValue(kLogFileSwitch)); |
+ } |
if (parsed_command_line.HasSwitch(kTimeoutSwitch)) { |
- timeout_ms = |
- _wtoi(parsed_command_line.GetSwitchValue(kTimeoutSwitch).c_str()); |
+ ASSERT_TRUE( |
+ StringToInt(WideToUTF16(parsed_command_line.GetSwitchValue( |
+ kTimeoutSwitch)), &timeout_ms)); |
ASSERT_TRUE(timeout_ms > 0); |
} |
@@ -705,15 +739,16 @@ |
// We won't get v8 log unless --no-sandbox is specified. |
if (parsed_command_line.HasSwitch(switches::kNoSandbox)) { |
PathService::Get(base::DIR_CURRENT, &v8_log_path); |
- file_util::AppendToPath(&v8_log_path, kV8LogFileDefaultName); |
+ v8_log_path = v8_log_path.AppendASCII(kV8LogFileDefaultName); |
// The command line switch may override the default v8 log path. |
if (parsed_command_line.HasSwitch(switches::kJavaScriptFlags)) { |
CommandLine v8_command_line( |
parsed_command_line.GetSwitchValue(switches::kJavaScriptFlags)); |
if (v8_command_line.HasSwitch(kV8LogFileSwitch)) { |
- v8_log_path = v8_command_line.GetSwitchValue(kV8LogFileSwitch); |
+ v8_log_path = FilePath::FromWStringHack( |
+ v8_command_line.GetSwitchValue(kV8LogFileSwitch)); |
if (!file_util::AbsolutePath(&v8_log_path)) { |
- v8_log_path.clear(); |
+ v8_log_path = FilePath(); |
} |
} |
} |