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

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

Issue 23536051: GTTF: Remove unused reliability tests code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 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/reliability/automated_ui_tests.h ('k') | chrome/test/reliability/page_load_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/reliability/automated_ui_tests.cc
diff --git a/chrome/test/reliability/automated_ui_tests.cc b/chrome/test/reliability/automated_ui_tests.cc
deleted file mode 100644
index 5348e608a3a1ce7c802ac96e0f35801362ab30c6..0000000000000000000000000000000000000000
--- a/chrome/test/reliability/automated_ui_tests.cc
+++ /dev/null
@@ -1,765 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <fstream>
-#include <string>
-#include <vector>
-
-#include "base/command_line.h"
-#include "base/environment.h"
-#include "base/file_util.h"
-#include "base/file_version_info.h"
-#include "base/files/file_enumerator.h"
-#include "base/files/file_path.h"
-#include "base/i18n/time_formatting.h"
-#include "base/logging.h"
-#include "base/path_service.h"
-#include "base/rand_util.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/threading/platform_thread.h"
-#include "base/time/time.h"
-#include "chrome/app/chrome_command_ids.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/character_encoding.h"
-#include "chrome/browser/ui/view_ids.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_version_info.h"
-#include "chrome/common/env_vars.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/test/automation/automation_proxy.h"
-#include "chrome/test/automation/browser_proxy.h"
-#include "chrome/test/automation/tab_proxy.h"
-#include "chrome/test/automation/window_proxy.h"
-#include "chrome/test/reliability/automated_ui_tests.h"
-#include "chrome/test/ui/ui_test.h"
-#include "ui/events/keycodes/keyboard_codes.h"
-#include "url/gurl.h"
-
-#if defined(TOOLKIT_VIEWS)
-#include "ui/views/view.h"
-#endif
-
-namespace {
-
-const char kReproSwitch[] = "key";
-
-const char kReproRepeatSwitch[] = "num-reproductions";
-
-const char kInputFilePathSwitch[] = "input";
-
-const char kOutputFilePathSwitch[] = "output";
-
-const char kDebugModeSwitch[] = "debug";
-
-const char kWaitSwitch[] = "wait-after-action";
-
-const char kTestLogFilePathSwitch[] = "testlog";
-
-const base::FilePath::CharType* const kDefaultInputFilePath =
-FILE_PATH_LITERAL("automated_ui_tests.txt");
-
-const base::FilePath::CharType* const kDefaultOutputFilePath =
-FILE_PATH_LITERAL("automated_ui_tests_error_report.txt");
-
-const base::FilePath::CharType* const kDefaultTestLogFilePath =
-FILE_PATH_LITERAL("automated_ui_tests_log.txt");
-
-const int kDebuggingTimeoutMsec = 5000;
-
-// How many commands to run when testing a dialog box.
-const int kTestDialogActionsToRun = 7;
-
-// String name of local chrome dll for looking up file information.
-const wchar_t kChromeDll[] = L"chrome.dll";
-
-void SilentRuntimeReportHandler(const std::string& str) {
-}
-
-base::FilePath GetInputFilePath() {
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess();
- if (parsed_command_line.HasSwitch(kInputFilePathSwitch)) {
- return parsed_command_line.GetSwitchValuePath(kInputFilePathSwitch);
- } else {
- return base::FilePath(kDefaultInputFilePath);
- }
-}
-
-base::FilePath GetOutputFilePath() {
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess();
- if (parsed_command_line.HasSwitch(kOutputFilePathSwitch)) {
- return parsed_command_line.GetSwitchValuePath(kOutputFilePathSwitch);
- } else {
- return base::FilePath(kDefaultOutputFilePath);
- }
-}
-
-base::FilePath GetTestLogFilePath() {
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess();
- if (parsed_command_line.HasSwitch(kTestLogFilePathSwitch)) {
- return parsed_command_line.GetSwitchValuePath(kTestLogFilePathSwitch);
- } else {
- return base::FilePath(kDefaultTestLogFilePath);
- }
-}
-
-std::string GetChromeRevision() {
- // Get Chrome version
- std::string last_change;
-#if defined(OS_WIN)
- // Check file version info for chrome dll.
- scoped_ptr<FileVersionInfo> file_info;
- file_info.reset(
- FileVersionInfo::CreateFileVersionInfo(base::FilePath(kChromeDll)));
- last_change = WideToASCII(file_info->last_change());
-#elif defined(OS_POSIX)
- chrome::VersionInfo version_info;
- last_change = version_info.LastChange();
-#endif // !defined(OS_WIN)
- return last_change;
-}
-
-void InitTestLog(base::Time start_time) {
- base::FilePath path = GetTestLogFilePath();
- std::ofstream test_log_file;
- if (!path.empty())
- test_log_file.open(path.value().c_str(), std::ios::out);
-
- const std::string time =
- UTF16ToASCII(base::TimeFormatFriendlyDateAndTime(start_time));
-
- test_log_file << "Last Change: " << GetChromeRevision() << std::endl;
- test_log_file << "Test Start: " << time << std::endl;
- test_log_file.close();
-}
-
-void AppendToTestLog(const std::string& append_string) {
- base::FilePath path = GetTestLogFilePath();
- std::ofstream test_log_file;
- if (!path.empty()) {
- test_log_file.open(path.value().c_str(),
- std::ios::out | std::ios_base::app);
- }
-
- test_log_file << append_string << std::endl;
- test_log_file.close();
-}
-
-double CalculateTestDuration(base::Time start_time) {
- base::Time time_now = base::Time::Now();
- return time_now.ToDoubleT() - start_time.ToDoubleT();
-}
-
-} // namespace
-
-// This subset of commands is used to test dialog boxes, which aren't likely
-// to respond to most other commands.
-const std::string kTestDialogPossibleActions[] = {
- // See FuzzyTestDialog for details on why Enter and SpaceBar must appear first
- // in this list.
- "PressEnterKey",
- "PressSpaceBar",
- "PressTabKey",
- "DownArrow"
-};
-
-// The list of dialogs that can be shown.
-const std::string kDialogs[] = {
- "About",
- "Options",
- "TaskManager",
- "JavaScriptConsole",
- "ClearBrowsingData",
- "ImportSettings",
- "EditSearchEngines",
- "ViewPasswords"
-};
-
-AutomatedUITest::AutomatedUITest()
- : test_start_time_(base::Time::NowFromSystemTime()),
- total_crashes_(0),
- debug_logging_enabled_(false),
- post_action_delay_(0) {
- show_window_ = true;
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess();
- if (parsed_command_line.HasSwitch(kDebugModeSwitch))
- debug_logging_enabled_ = true;
- if (parsed_command_line.HasSwitch(kWaitSwitch)) {
- std::string str = parsed_command_line.GetSwitchValueASCII(kWaitSwitch);
- if (str.empty()) {
- post_action_delay_ = 1;
- } else {
- base::StringToInt(str, &post_action_delay_);
- }
- }
- scoped_ptr<base::Environment> env(base::Environment::Create());
- if (env->HasVar(env_vars::kHeadless))
- logging::SetLogReportHandler(SilentRuntimeReportHandler);
-}
-
-AutomatedUITest::~AutomatedUITest() {}
-
-void AutomatedUITest::RunReproduction() {
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess();
-
- InitTestLog(test_start_time_);
- xml_writer_.StartWriting();
- xml_writer_.StartElement("Report");
- std::string action_string =
- parsed_command_line.GetSwitchValueASCII(kReproSwitch);
-
- int64 num_reproductions = 1;
- if (parsed_command_line.HasSwitch(kReproRepeatSwitch)) {
- base::StringToInt64(
- parsed_command_line.GetSwitchValueASCII(kReproRepeatSwitch),
- &num_reproductions);
- }
- std::vector<std::string> actions;
- base::SplitString(action_string, ',', &actions);
- bool did_crash = false;
- bool command_complete = false;
-
- for (int64 i = 0; i < num_reproductions && !did_crash; ++i) {
- bool did_teardown = false;
- xml_writer_.StartElement("Executed");
- for (size_t j = 0; j < actions.size(); ++j) {
- DoAction(actions[j]);
- if (DidCrash(true)) {
- did_crash = true;
- if (j >= (actions.size() - 1))
- command_complete = true;
- break;
- }
- if (LowerCaseEqualsASCII(actions[j], "teardown"))
- did_teardown = true;
- }
-
- // Force proper teardown after each run, if it didn't already happen. But
- // don't teardown after crashes.
- if (!did_teardown && !did_crash)
- DoAction("TearDown");
-
- xml_writer_.EndElement(); // End "Executed" element.
- }
-
- if (did_crash) {
- base::FilePath crash_dump = GetMostRecentCrashDump();
- base::FilePath::StringType result =
- FILE_PATH_LITERAL("*** Crash dump produced. ")
- FILE_PATH_LITERAL("See result file for more details. Dump = ");
- result.append(crash_dump.value());
- result.append(FILE_PATH_LITERAL(" ***\n"));
- printf("%s", result.c_str());
- LogCrashResult(crash_dump, command_complete);
- EXPECT_TRUE(false) << "Crash detected.";
- } else {
- printf("*** No crashes. See result file for more details. ***\n");
- LogSuccessResult();
- }
-
- AppendToTestLog(base::StringPrintf("total_duration_seconds=%f",
- CalculateTestDuration(test_start_time_)));
- WriteReportToFile();
-}
-
-
-void AutomatedUITest::RunAutomatedUITest() {
- InitTestLog(test_start_time_);
-
- ASSERT_TRUE(InitXMLReader()) << "Error initializing XMLReader";
- xml_writer_.StartWriting();
- xml_writer_.StartElement("Report");
-
- while (init_reader_.Read()) {
- init_reader_.SkipToElement();
- std::string node_name = init_reader_.NodeName();
- if (LowerCaseEqualsASCII(node_name, "command")) {
- bool no_errors = true;
- xml_writer_.StartElement("Executed");
- std::string command_number;
- if (init_reader_.NodeAttribute("number", &command_number)) {
- xml_writer_.AddAttribute("command_number", command_number);
- }
- xml_writer_.StopIndenting();
-
- // Starts the browser, logging it as an action.
- DoAction("SetUp");
-
- // Record the depth of the root of the command subtree, then advance to
- // the first element in preparation for parsing.
- int start_depth = init_reader_.Depth();
- ASSERT_TRUE(init_reader_.Read()) << "Malformed XML file.";
- init_reader_.SkipToElement();
-
- // Check for a crash right after startup.
- if (DidCrash(true)) {
- LogCrashResult(GetMostRecentCrashDump(), false);
- // Try and start up again.
- CloseBrowserAndServer();
- LaunchBrowserAndServer();
- set_active_browser(automation()->GetBrowserWindow(0).get());
- if (DidCrash(true)) {
- no_errors = false;
- // We crashed again, so skip to the end of the this command.
- while (init_reader_.Depth() != start_depth) {
- ASSERT_TRUE(init_reader_.Read()) << "Malformed XML file.";
- }
- } else {
- // We didn't crash, so end the old element, logging a crash for that.
- // Then start a new element to log this command.
- xml_writer_.StartIndenting();
- xml_writer_.EndElement();
- xml_writer_.StartElement("Executed");
- xml_writer_.AddAttribute("command_number", command_number);
- xml_writer_.StopIndenting();
- xml_writer_.StartElement("SetUp");
- xml_writer_.EndElement();
- }
- }
- // Parse the command, performing the specified actions and checking
- // for a crash after each one.
- while (init_reader_.Depth() != start_depth) {
- node_name = init_reader_.NodeName();
-
- DoAction(node_name);
-
- // Advance to the next element
- ASSERT_TRUE(init_reader_.Read()) << "Malformed XML file.";
- init_reader_.SkipToElement();
- if (DidCrash(true)) {
- no_errors = false;
- // This was the last action if we've returned to the initial depth
- // of the command subtree.
- bool wasLastAction = init_reader_.Depth() == start_depth;
- LogCrashResult(GetMostRecentCrashDump(), wasLastAction);
- // Skip to the beginning of the next command.
- while (init_reader_.Depth() != start_depth) {
- ASSERT_TRUE(init_reader_.Read()) << "Malformed XML file.";
- }
- }
- }
-
- if (no_errors) {
- // If there were no previous crashes, log our tear down and check for
- // a crash, log success for the entire command if this doesn't crash.
- DoAction("TearDown");
- if (DidCrash(true))
- LogCrashResult(GetMostRecentCrashDump(), true);
- else
- LogSuccessResult();
- } else {
- // If there was a previous crash, just tear down without logging, so
- // that we know what the last command was before we crashed.
- CloseBrowserAndServer();
- }
-
- xml_writer_.StartIndenting();
- xml_writer_.EndElement(); // End "Executed" element.
- }
- }
-
- AppendToTestLog(base::StringPrintf("total_duration_seconds=%f",
- CalculateTestDuration(test_start_time_)));
-
- // The test is finished so write our report.
- WriteReportToFile();
-}
-
-bool AutomatedUITest::DoAction(const std::string& action) {
- bool did_complete_action = false;
- xml_writer_.StartElement(action);
- if (debug_logging_enabled_)
- AppendToOutputFile(action);
-
- if (LowerCaseEqualsASCII(action, "about")) {
- did_complete_action = OpenAboutDialog();
- } else if (LowerCaseEqualsASCII(action, "back")) {
- did_complete_action = BackButton();
- } else if (LowerCaseEqualsASCII(action, "changeencoding")) {
- did_complete_action = ChangeEncoding();
- } else if (LowerCaseEqualsASCII(action, "closetab")) {
- did_complete_action = CloseActiveTab();
- } else if (LowerCaseEqualsASCII(action, "clearbrowsingdata")) {
- did_complete_action = OpenClearBrowsingDataDialog();
- } else if (LowerCaseEqualsASCII(action, "crash")) {
- did_complete_action = ForceCrash();
- } else if (LowerCaseEqualsASCII(action, "dialog")) {
- did_complete_action = ExerciseDialog();
- } else if (LowerCaseEqualsASCII(action, "downloads")) {
- did_complete_action = ShowDownloads();
- } else if (LowerCaseEqualsASCII(action, "duplicatetab")) {
- did_complete_action = DuplicateTab();
- } else if (LowerCaseEqualsASCII(action, "editsearchengines")) {
- did_complete_action = OpenEditSearchEnginesDialog();
- } else if (LowerCaseEqualsASCII(action, "findinpage")) {
- did_complete_action = FindInPage();
- } else if (LowerCaseEqualsASCII(action, "forward")) {
- did_complete_action = ForwardButton();
- } else if (LowerCaseEqualsASCII(action, "goofftherecord")) {
- did_complete_action = GoOffTheRecord();
- } else if (LowerCaseEqualsASCII(action, "history")) {
- did_complete_action = ShowHistory();
- } else if (LowerCaseEqualsASCII(action, "home")) {
- did_complete_action = Home();
- } else if (LowerCaseEqualsASCII(action, "importsettings")) {
- did_complete_action = OpenImportSettingsDialog();
- } else if (LowerCaseEqualsASCII(action, "javascriptconsole")) {
- did_complete_action = JavaScriptConsole();
- } else if (LowerCaseEqualsASCII(action, "navigate")) {
- std::string url = content::kAboutBlankURL;
- if (init_reader_.NodeAttribute("url", &url)) {
- xml_writer_.AddAttribute("url", url);
- }
- GURL test_url(url);
- did_complete_action = Navigate(test_url);
- } else if (LowerCaseEqualsASCII(action, "newtab")) {
- did_complete_action = NewTab();
- } else if (LowerCaseEqualsASCII(action, "openwindow")) {
- did_complete_action = OpenAndActivateNewBrowserWindow(NULL);
- } else if (LowerCaseEqualsASCII(action, "options")) {
- did_complete_action = Options();
- } else if (LowerCaseEqualsASCII(action, "reload")) {
- did_complete_action = ReloadPage();
- } else if (LowerCaseEqualsASCII(action, "restoretab")) {
- did_complete_action = RestoreTab();
- } else if (LowerCaseEqualsASCII(action, "selectnexttab")) {
- did_complete_action = SelectNextTab();
- } else if (LowerCaseEqualsASCII(action, "selectprevtab")) {
- did_complete_action = SelectPreviousTab();
- } else if (LowerCaseEqualsASCII(action, "setup")) {
- AutomatedUITestBase::SetUp();
- did_complete_action = true;
- } else if (LowerCaseEqualsASCII(action, "sleep")) {
- // This is for debugging, it probably shouldn't be used real tests.
- base::PlatformThread::Sleep(
- base::TimeDelta::FromMilliseconds(kDebuggingTimeoutMsec));
- did_complete_action = true;
- } else if (LowerCaseEqualsASCII(action, "star")) {
- did_complete_action = StarPage();
- } else if (LowerCaseEqualsASCII(action, "taskmanager")) {
- did_complete_action = OpenTaskManagerDialog();
- } else if (LowerCaseEqualsASCII(action, "teardown")) {
- CloseBrowserAndServer();
- did_complete_action = true;
- } else if (LowerCaseEqualsASCII(action, "testaboutchrome")) {
- did_complete_action = TestAboutChrome();
- } else if (LowerCaseEqualsASCII(action, "testclearbrowsingdata")) {
- did_complete_action = TestClearBrowsingData();
- } else if (LowerCaseEqualsASCII(action, "testeditsearchengines")) {
- did_complete_action = TestEditSearchEngines();
- } else if (LowerCaseEqualsASCII(action, "testimportsettings")) {
- did_complete_action = TestImportSettings();
- } else if (LowerCaseEqualsASCII(action, "testoptions")) {
- did_complete_action = TestOptions();
- } else if (LowerCaseEqualsASCII(action, "testtaskmanager")) {
- did_complete_action = TestTaskManager();
- } else if (LowerCaseEqualsASCII(action, "testviewpasswords")) {
- did_complete_action = TestViewPasswords();
- } else if (LowerCaseEqualsASCII(action, "viewpasswords")) {
- did_complete_action = OpenViewPasswordsDialog();
- } else if (LowerCaseEqualsASCII(action, "viewsource")) {
- did_complete_action = ViewSource();
- } else if (LowerCaseEqualsASCII(action, "zoomplus")) {
- did_complete_action = ZoomPlus();
- } else if (LowerCaseEqualsASCII(action, "zoomminus")) {
- did_complete_action = ZoomMinus();
- } else {
- NOTREACHED() << "Unknown command passed into DoAction: "
- << action.c_str();
- }
-
- EXPECT_TRUE(did_complete_action) << action;
-
- if (!did_complete_action)
- xml_writer_.AddAttribute("failed_to_complete", "yes");
- xml_writer_.EndElement();
-
- if (post_action_delay_) {
- base::PlatformThread::Sleep(
- base::TimeDelta::FromSeconds(post_action_delay_));
- }
-
- return did_complete_action;
-}
-
-bool AutomatedUITest::ChangeEncoding() {
- // Get the encoding list that is used to populate the UI (encoding menu)
- std::string cur_locale = g_browser_process->GetApplicationLocale();
- const std::vector<CharacterEncoding::EncodingInfo>* encodings =
- CharacterEncoding::GetCurrentDisplayEncodings(
- cur_locale, "ISO-8859-1,windows-1252", std::string());
- DCHECK(encodings);
- DCHECK(!encodings->empty());
- unsigned len = static_cast<unsigned>(encodings->size());
-
- // The vector will contain mostly IDC values for encoding commands plus a few
- // menu separators (0 values). If we hit a separator we just retry.
- int index = base::RandInt(0, len);
- while ((*encodings)[index].encoding_id == 0) {
- index = base::RandInt(0, len);
- }
-
- return RunCommandAsync((*encodings)[index].encoding_id);
-}
-
-bool AutomatedUITest::JavaScriptConsole() {
- return RunCommandAsync(IDC_DEV_TOOLS);
-}
-
-bool AutomatedUITest::OpenAboutDialog() {
- return RunCommandAsync(IDC_ABOUT);
-}
-
-bool AutomatedUITest::OpenClearBrowsingDataDialog() {
- return RunCommandAsync(IDC_CLEAR_BROWSING_DATA);
-}
-
-bool AutomatedUITest::OpenEditSearchEnginesDialog() {
- return RunCommandAsync(IDC_EDIT_SEARCH_ENGINES);
-}
-
-bool AutomatedUITest::OpenImportSettingsDialog() {
- return RunCommandAsync(IDC_IMPORT_SETTINGS);
-}
-
-bool AutomatedUITest::OpenTaskManagerDialog() {
- return RunCommandAsync(IDC_TASK_MANAGER);
-}
-
-bool AutomatedUITest::OpenViewPasswordsDialog() {
- return RunCommandAsync(IDC_VIEW_PASSWORDS);
-}
-
-bool AutomatedUITest::Options() {
- return RunCommandAsync(IDC_OPTIONS);
-}
-
-bool AutomatedUITest::StarPage() {
- return RunCommandAsync(IDC_BOOKMARK_PAGE);
-}
-
-bool AutomatedUITest::ViewSource() {
- return RunCommandAsync(IDC_VIEW_SOURCE);
-}
-
-bool AutomatedUITest::ZoomMinus() {
- return RunCommandAsync(IDC_ZOOM_MINUS);
-}
-
-bool AutomatedUITest::ZoomPlus() {
- return RunCommandAsync(IDC_ZOOM_PLUS);
-}
-
-bool AutomatedUITest::TestAboutChrome() {
- DoAction("About");
- return FuzzyTestDialog(kTestDialogActionsToRun);
-}
-
-bool AutomatedUITest::TestClearBrowsingData() {
- DoAction("ClearBrowsingData");
- return FuzzyTestDialog(kTestDialogActionsToRun);
-}
-
-bool AutomatedUITest::TestEditSearchEngines() {
- DoAction("EditSearchEngines");
- return FuzzyTestDialog(kTestDialogActionsToRun);
-}
-
-bool AutomatedUITest::TestImportSettings() {
- DoAction("ImportSettings");
- return FuzzyTestDialog(kTestDialogActionsToRun);
-}
-
-bool AutomatedUITest::TestTaskManager() {
- DoAction("TaskManager");
- return FuzzyTestDialog(kTestDialogActionsToRun);
-}
-
-bool AutomatedUITest::TestOptions() {
- DoAction("Options");
- return FuzzyTestDialog(kTestDialogActionsToRun);
-}
-
-bool AutomatedUITest::TestViewPasswords() {
- DoAction("ViewPasswords");
- return FuzzyTestDialog(kTestDialogActionsToRun);
-}
-
-bool AutomatedUITest::ExerciseDialog() {
- int index = base::RandInt(0, arraysize(kDialogs) - 1);
- return DoAction(kDialogs[index]) && FuzzyTestDialog(kTestDialogActionsToRun);
-}
-
-bool AutomatedUITest::FuzzyTestDialog(int num_actions) {
- bool return_value = true;
-
- for (int i = 0; i < num_actions; i++) {
- // We want to make sure the first action performed on the dialog is not
- // Space or Enter because focus is likely on the Close button. Both Space
- // and Enter would close the dialog without performing more actions. We
- // rely on the fact that those two actions are first in the array and set
- // the lower bound to 2 if i == 0 to skip those two actions.
- int action_index = base::RandInt(i == 0 ? 2 : 0,
- arraysize(kTestDialogPossibleActions)
- - 1);
- return_value = return_value &&
- DoAction(kTestDialogPossibleActions[action_index]);
- if (DidCrash(false))
- break;
- }
- return DoAction("PressEscapeKey") && return_value;
-}
-
-bool AutomatedUITest::ForceCrash() {
- scoped_refptr<TabProxy> tab(GetActiveTab());
- GURL test_url(content::kChromeUICrashURL);
- AutomationMsg_NavigationResponseValues result = tab->NavigateToURL(test_url);
- if (result != AUTOMATION_MSG_NAVIGATION_SUCCESS) {
- AddErrorAttribute("navigation_failed");
- return false;
- }
- return true;
-}
-
-bool AutomatedUITest::InitXMLReader() {
- base::FilePath input_path = GetInputFilePath();
-
- if (!base::ReadFileToString(input_path, &xml_init_file_))
- return false;
- return init_reader_.Load(xml_init_file_);
-}
-
-bool AutomatedUITest::WriteReportToFile() {
- base::FilePath path = GetOutputFilePath();
- std::ofstream error_file;
- if (!path.empty())
- error_file.open(path.value().c_str(), std::ios::out);
-
- // Closes all open elements and free the writer. This is required
- // in order to retrieve the contents of the buffer.
- xml_writer_.StopWriting();
- error_file << xml_writer_.GetWrittenString();
- error_file.close();
- return true;
-}
-
-void AutomatedUITest::AppendToOutputFile(const std::string& append_string) {
- base::FilePath path = GetOutputFilePath();
- std::ofstream error_file;
- if (!path.empty())
- error_file.open(path.value().c_str(), std::ios::out | std::ios_base::app);
-
- error_file << append_string << " ";
- error_file.close();
-}
-
-void AutomatedUITest::LogCrashResult(const base::FilePath& crash_dump,
- bool command_completed) {
- xml_writer_.StartElement("result");
- xml_writer_.AddAttribute("test_log_path",
- GetTestLogFilePath().MaybeAsASCII());
- xml_writer_.AddAttribute("revision", GetChromeRevision());
- xml_writer_.StartElement("crash");
-#if defined(OS_WIN)
- xml_writer_.AddAttribute("crash_dump", WideToASCII(crash_dump.value()));
-#else
- xml_writer_.AddAttribute("crash_dump", crash_dump.value());
-#endif
- if (command_completed)
- xml_writer_.AddAttribute("command_completed", "yes");
- else
- xml_writer_.AddAttribute("command_completed", "no");
- xml_writer_.EndElement();
- xml_writer_.EndElement();
-}
-
-void AutomatedUITest::LogSuccessResult() {
- xml_writer_.StartElement("result");
- xml_writer_.AddAttribute("test_log_path",
- GetTestLogFilePath().MaybeAsASCII());
- xml_writer_.AddAttribute("revision", GetChromeRevision());
- xml_writer_.StartElement("success");
- xml_writer_.EndElement();
- xml_writer_.EndElement();
-}
-
-void AutomatedUITest::AddInfoAttribute(const std::string& info) {
- xml_writer_.AddAttribute("info", info);
-}
-
-void AutomatedUITest::AddWarningAttribute(const std::string& warning) {
- xml_writer_.AddAttribute("warning", warning);
-}
-
-void AutomatedUITest::AddErrorAttribute(const std::string& error) {
- xml_writer_.AddAttribute("error", error);
-}
-
-void AutomatedUITest::LogErrorMessage(const std::string& error) {
- AddErrorAttribute(error);
-}
-
-void AutomatedUITest::LogWarningMessage(const std::string& warning) {
- AddWarningAttribute(warning);
-}
-
-void AutomatedUITest::LogInfoMessage(const std::string& info) {
- AddWarningAttribute(info);
-}
-
-base::FilePath AutomatedUITest::GetMostRecentCrashDump() {
- base::FilePath crash_dump_path;
- base::FilePath most_recent_file_name;
- PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dump_path);
- base::Time most_recent_file_time;
-
- bool first_file = true;
-
- base::FileEnumerator enumerator(crash_dump_path,
- false, // not recursive
- base::FileEnumerator::FILES);
- for (base::FilePath path = enumerator.Next(); !path.value().empty();
- path = enumerator.Next()) {
- base::PlatformFileInfo file_info;
- file_util::GetFileInfo(path, &file_info);
- if (first_file) {
- most_recent_file_time = file_info.last_modified;
- most_recent_file_name = path.BaseName();
- first_file = false;
- } else if (file_info.last_modified >= most_recent_file_time) {
- most_recent_file_time = file_info.last_modified;
- most_recent_file_name = path.BaseName();
- }
- }
- if (most_recent_file_name.empty()) {
- return base::FilePath();
- } else {
- crash_dump_path = crash_dump_path.Append(most_recent_file_name);
- return crash_dump_path;
- }
-}
-
-bool AutomatedUITest::DidCrash(bool update_total_crashes) {
- int actual_crashes = GetCrashCount();
-
- // If there are more crash dumps than the total dumps which we have recorded
- // then this is a new crash.
- if (actual_crashes > total_crashes_) {
- if (update_total_crashes)
- total_crashes_ = actual_crashes;
- return true;
- } else {
- return false;
- }
-}
-
-TEST_F(AutomatedUITest, TheOneAndOnlyTest) {
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess();
- if (parsed_command_line.HasSwitch(kReproSwitch))
- RunReproduction();
- else
- RunAutomatedUITest();
-}
« no previous file with comments | « chrome/test/reliability/automated_ui_tests.h ('k') | chrome/test/reliability/page_load_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698