Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Unified Diff: chrome/test/reliability/page_load_test.cc

Issue 164352: Reliability test porting: stringy stuff.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: more comments Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/perf/mem_usage.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
}
}
}
« no previous file with comments | « chrome/test/perf/mem_usage.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698