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

Unified Diff: Tools/Scripts/webkitpy/layout_tests/controllers/manager.py

Issue 339623002: Added support for versioning of layout test results of run-webkit-tests runs (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 6 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
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']

Powered by Google App Engine
This is Rietveld 408576698