A/B testing rootSets should provide commit times as well as revisions
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 May 2015 21:22:21 +0000 (21:22 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 May 2015 21:22:21 +0000 (21:22 +0000)
https://bugs.webkit.org/show_bug.cgi?id=145207

Reviewed by Andreas Kling.

Some continuous build systems need the commit time as well as the revision number / hash so provide one
in the root sets but maintain the backwards compatibility with buildbots that use revision number directly.

* public/include/build-requests-fetcher.php:
(BuildRequestsFetcher::fetch_roots_for_set): Made the revision info an associative array that contains
the revision number as well as the commit time.
* tools/sync-with-buildbot.py:
(schedule_request): Removed "replacement" which was a superfluous copy of "roots". Use "revision" values
when the JSON configuration refers to "root". This is necessary in buildbot instances that require WebKit
revision to be specified on its own field instead of it being a JSON that contains "revision" and "time".

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@184658 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Websites/perf.webkit.org/ChangeLog
Websites/perf.webkit.org/public/include/build-requests-fetcher.php
Websites/perf.webkit.org/tools/sync-with-buildbot.py

index 38c1778..9b9bec9 100644 (file)
@@ -1,3 +1,21 @@
+2015-05-20  Ryosuke Niwa  <rniwa@webkit.org>
+
+        A/B testing rootSets should provide commit times as well as revisions
+        https://bugs.webkit.org/show_bug.cgi?id=145207
+
+        Reviewed by Andreas Kling.
+
+        Some continuous build systems need the commit time as well as the revision number / hash so provide one
+        in the root sets but maintain the backwards compatibility with buildbots that use revision number directly.
+
+        * public/include/build-requests-fetcher.php:
+        (BuildRequestsFetcher::fetch_roots_for_set): Made the revision info an associative array that contains
+        the revision number as well as the commit time.
+        * tools/sync-with-buildbot.py:
+        (schedule_request): Removed "replacement" which was a superfluous copy of "roots". Use "revision" values
+        when the JSON configuration refers to "root". This is necessary in buildbot instances that require WebKit
+        revision to be specified on its own field instead of it being a JSON that contains "revision" and "time".
+
 2015-05-19  Ryosuke Niwa  <rniwa@webkit.org>
 
         Build fix. Don't fall into an infinite loop when value (renamed from bytes) is zero.
index 5dd9751..ceeb495 100644 (file)
@@ -93,10 +93,11 @@ class BuildRequestsFetcher {
         foreach ($root_rows as $row) {
             $repository = $row['repository_id'];
             $revision = $row['commit_revision'];
+            $commit_time = $row['commit_time'];
             $root_id = $root_set_id . '-' . $repository;
             array_push($root_ids, $root_id);
             array_push($this->roots, array('id' => $root_id, 'repository' => $repository, 'revision' => $revision));
-            $roots[$resolve_ids ? $row['repository_name'] : $row['repository_id']] = $revision;
+            $roots[$resolve_ids ? $row['repository_name'] : $row['repository_id']] = array('revision' => $revision, 'time' => $commit_time);
         }
         array_push($this->root_sets, array('id' => $root_set_id, 'roots' => $root_ids));
 
index 8196472..819e0b0 100755 (executable)
@@ -134,14 +134,13 @@ def find_stale_request_updates(configurations, open_requests, requests_on_buildb
 
 def schedule_request(config, request, root_sets):
     roots = root_sets.get(request['rootSet'], {})
-    replacements = roots.copy()
 
     payload = {}
     for property_name, property_value in config['arguments'].iteritems():
         if not isinstance(property_value, dict):
             payload[property_name] = property_value
         elif 'root' in property_value:
-            payload[property_name] = replacements[property_value['root']]
+            payload[property_name] = roots[property_value['root']]['revision']
         elif 'rootsExcluding' in property_value:
             excluded_roots = property_value['rootsExcluding']
             filtered_roots = {}