Chromium Code Reviews| Index: Tools/Scripts/webkitpy/layout_tests/controllers/manager.py |
| diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py b/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py |
| index 87cbe17aab78d8e30a7bb83e97d36014c8aab680..ff81eccebad78acb858c950e06994470d7dd5df9 100644 |
| --- a/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py |
| +++ b/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py |
| @@ -41,7 +41,9 @@ import random |
| import sys |
| import time |
| +from webkitpy.common.checkout.scm.detection import SCMDetector |
|
Dirk Pranke
2014/06/17 17:58:58
I think this import is unneeded.
patro
2014/07/15 10:36:56
Done.
|
| from webkitpy.common.net.file_uploader import FileUploader |
| +from webkitpy.common.system.filesystem import FileSystem |
|
Dirk Pranke
2014/06/17 17:58:58
this should be unneeded as well.
patro
2014/07/15 10:36:56
Done.
|
| from webkitpy.layout_tests.controllers.layout_test_finder import LayoutTestFinder |
| from webkitpy.layout_tests.controllers.layout_test_runner import LayoutTestRunner |
| from webkitpy.layout_tests.controllers.test_result_writer import TestResultWriter |
| @@ -77,6 +79,11 @@ class Manager(object): |
| self._options = options |
| self._printer = printer |
| self._expectations = None |
| + # Actions related to archiving of the results. |
| + self._is_scm_initialized = False |
| + self._scm = None |
|
Dirk Pranke
2014/06/17 17:58:58
These scm fields don't seem to be used?
patro
2014/07/15 10:36:57
Done.
|
| + self.ARCHIVED_PATH = None |
| + self.REVISION_INFO = '' |
| self.HTTP_SUBDIR = 'http' + port.TEST_PATH_SEPARATOR |
| self.PERF_SUBDIR = 'perf' |
| @@ -151,6 +158,23 @@ class Manager(object): |
| def needs_servers(self, test_names): |
| return any(self._test_requires_lock(test_name) for test_name in test_names) |
| + def _rename_results_folder_if_required(self): |
| + try: |
| + timestamp = time.strftime("%d-%m-%Y-%H-%M-%S", time.gmtime(self._filesystem.mtime(self._filesystem.join(self._results_directory, "results.html")))) |
| + archived_name = ''.join((self._filesystem.basename(self._results_directory), "_", timestamp)) |
| + archived_path = self._filesystem.join(self._filesystem.dirname(self._results_directory), archived_name) |
| + self._filesystem.move(self._results_directory, archived_path) |
| + return archived_path |
|
Dirk Pranke
2014/06/17 17:58:58
I don't know that we should assume we can write ou
patro
2014/07/15 10:36:57
If the archived results are enabled by default the
|
| + except OSError, e: |
| + # It might be possible that results.html was not generated in previous run, because the test |
| + # run was interrupted even before testing started. In those cases, don't archive the folder. |
| + # Simply override the current folder contents with new results. |
| + import errno |
| + if e.errno == errno.EEXIST: |
| + print "Found no result.html in the folder, ignoring this result and overwritten the folder..." |
| + _log.info("Found no result.html in the folder, ignoring this result and overwritten the folder...") |
| + return None |
| + |
| def _set_up_run(self, test_names): |
| self._printer.write_update("Checking build ...") |
| if self._options.build: |
| @@ -176,6 +200,13 @@ class Manager(object): |
| if self._options.clobber_old_results: |
| self._clobber_old_results() |
| + # FIXME:: Here the condition has to be (archive_prev_results) and (total_archived_results < MAX_ARCHIVE_RESULTS) |
| + if self._options.enable_versioned_results and self._filesystem.exists(self._results_directory): |
| + # Get revision info for storing in archived dir. |
| + self.REVISION_INFO = '' |
| + # Rename the existing results folder for archiving. |
| + self.ARCHIVED_PATH = self._rename_results_folder_if_required() |
| + |
| # Create the output directory if it doesn't already exist. |
| self._port.host.filesystem.maybe_make_directory(self._results_directory) |
| @@ -249,7 +280,7 @@ class Manager(object): |
| self._look_for_new_crash_logs(retry_results, start_time) |
| _log.debug("summarizing results") |
| - summarized_full_results = test_run_results.summarize_results(self._port, self._expectations, initial_results, retry_results, enabled_pixel_tests_in_retry) |
| + summarized_full_results = test_run_results.summarize_results(self._port, self._expectations, initial_results, retry_results, enabled_pixel_tests_in_retry, False, self.ARCHIVED_PATH) |
|
Dirk Pranke
2014/06/17 17:58:57
see comment in test_run_results.
patro
2014/07/15 10:36:57
Done.
|
| summarized_failing_results = test_run_results.summarize_results(self._port, self._expectations, initial_results, retry_results, enabled_pixel_tests_in_retry, only_include_failing=True) |
| exit_code = summarized_failing_results['num_regressions'] |