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 38c177824337f6d1d7a7750a6b9aac17bcbb9bc6..9b9bec9a6140e8e5d62c77df0210ed29db4e8d54 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 5dd9751cea1526c3bf94f6504f6b0e6f8c3a2803..ceeb4955d54b2f619d4010ab7a27bd34cda8bc4e 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 8196472b8f905c2afab0a63aeee99bca9626507d..819e0b04bdf9b8e7ffe3d762cebca000814f7b2d 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 = {}