⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 119463 in webkit


Ignore:
Timestamp:
Jun 4, 2012, 11:38:30 PM (14 years ago)
Author:
commit-queue@webkit.org
Message:

Make a builder group support+expect multiple loads.
https://bugs.webkit.org/show_bug.cgi?id=88260

Change BuilderGroup to allow expecting multiple
loads. This allows merging results for a given set
of builders into one group.

Add a test that verifies that the group count
increments correctly based on successful and failed
list loads.

Patch by Chase Phillips <cmp@google.com> on 2012-06-04
Reviewed by Ojan Vafai.

  • TestResultServer/static-dashboards/builders.js:

(BuilderGroup):
(BuilderGroup.prototype.setbuilder):
(BuilderGroup.prototype.append):
(BuilderGroup.prototype.loaded):
(requestBuilderList.xhr.onload):
(requestBuilderList.xhr.onerror):
(onErrorLoadingBuilderList):
(loadBuildersList):

  • TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:

(test):

  • TestResultServer/static-dashboards/run-unittests.html:
Location:
trunk/Tools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r119457 r119463  
     12012-06-04  Chase Phillips  <cmp@google.com>
     2
     3        Make a builder group support+expect multiple loads.
     4        https://bugs.webkit.org/show_bug.cgi?id=88260
     5
     6        Change BuilderGroup to allow expecting multiple
     7        loads.  This allows merging results for a given set
     8        of builders into one group.
     9
     10        Add a test that verifies that the group count
     11        increments correctly based on successful and failed
     12        list loads.
     13
     14        Reviewed by Ojan Vafai.
     15
     16        * TestResultServer/static-dashboards/builders.js:
     17        (BuilderGroup):
     18        (BuilderGroup.prototype.setbuilder):
     19        (BuilderGroup.prototype.append):
     20        (BuilderGroup.prototype.loaded):
     21        (requestBuilderList.xhr.onload):
     22        (requestBuilderList.xhr.onerror):
     23        (onErrorLoadingBuilderList):
     24        (loadBuildersList):
     25        * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
     26        (test):
     27        * TestResultServer/static-dashboards/run-unittests.html:
     28
    1292012-06-04  Ryosuke Niwa  <rniwa@webkit.org>
    230
  • trunk/Tools/TestResultServer/static-dashboards/builders.js

    r116029 r119463  
    4747
    4848CHROMIUM_BUILDER_MASTER = new BuilderMaster('Chromium', 'http://build.chromium.org/p/chromium/');
     49CHROMIUM_WIN_BUILDER_MASTER = new BuilderMaster('ChromiumWin', 'http://build.chromium.org/p/chromium.win/');
     50CHROMIUM_MAC_BUILDER_MASTER = new BuilderMaster('ChromiumMac', 'http://build.chromium.org/p/chromium.mac/');
     51CHROMIUM_LINUX_BUILDER_MASTER = new BuilderMaster('ChromiumLinux', 'http://build.chromium.org/p/chromium.linux/');
    4952CHROMIUMOS_BUILDER_MASTER = new BuilderMaster('ChromiumChromiumOS', 'http://build.chromium.org/p/chromium.chromiumos/');
    5053CHROMIUM_GPU_BUILDER_MASTER = new BuilderMaster('ChromiumGPU', 'http://build.chromium.org/p/chromium.gpu/');
     
    6265};
    6366
    64 function BuilderGroup(isToTWebKit, builders)
     67function BuilderGroup(isToTWebKit)
    6568{
    6669    this.isToTWebKit = isToTWebKit;
     
    6871    // path used in the builder's URL)
    6972    this.builders = {};
     73    this.groups = 0;
     74    this.expectedGroups = 0;
     75}
     76
     77BuilderGroup.prototype.setbuilder = function(builder, flags) {
     78    this.builders[builder] = builder.replace(/[ .()]/g, '_');
     79    // FIXME: Remove this at some point, we don't actually use DEFAULT_BUILDER
     80    //        in any meaningful way anymore.  We always just default to the
     81    //        first builder in alphabetical order.
     82    if (flags & BuilderGroup.DEFAULT_BUILDER)
     83        this.defaultBuilder = builder;
     84};
     85
     86BuilderGroup.prototype.append = function(builders) {
    7087    builders.forEach(function(builderAndFlags) {
    7188        var builder = builderAndFlags[0];
    7289        var flags = builderAndFlags[1];
    73 
    74         this.builders[builder] = builder.replace(/[ .()]/g, '_');
    75         if (flags & BuilderGroup.DEFAULT_BUILDER)
    76             this.defaultBuilder = builder;
     90        this.setbuilder(builder, flags);
    7791    }, this);
     92    this.groups += 1;
     93};
     94
     95BuilderGroup.prototype.loaded = function() {
     96    return this.groups >= this.expectedGroups;
    7897}
    7998
     
    99118}
    100119
    101 function requestBuilderList(builderGroups, builderFilter, master, groupName, groupEnum)
    102 {
     120function requestBuilderList(builderGroups, builderFilter, master, groupName, groupEnum, builderGroup)
     121{
     122    if (!(groupName in builderGroups))
     123        builderGroups[groupName] = builderGroup;
     124
    103125    var onLoad = partial(onBuilderListLoad, builderGroups, builderFilter, master, groupName, groupEnum);
    104126    var xhr = new XMLHttpRequest();
     
    109131            onLoad(JSON.parse(xhr.response));
    110132        else
    111             onErrorLoadingBuilderList(url);
     133            onErrorLoadingBuilderList(url, builderGroups, groupName);
    112134    };
    113     xhr.onerror = function() { onErrorLoadingBuilderList(url); };
     135    xhr.onerror = function() { onErrorLoadingBuilderList(url, builderGroups, groupName); };
    114136    xhr.send();
     137    builderGroups[groupName].expectedGroups += 1;
    115138}
    116139
     
    180203    var builders = generateBuildersFromBuilderList(Object.keys(json), builderFilter);
    181204    associateBuildersWithMaster(builders, master);
    182     builderGroups[groupName] = new BuilderGroup(groupEnum, builders);
    183     g_handleBuildersListLoaded();
    184 }
    185 
    186 function onErrorLoadingBuilderList(url)
    187 {
    188     alert('Could not load list of builders from ' + url + '. Try reloading.');
    189 }
    190 
    191 function loadBuildersList(group, testType) {
     205    builderGroups[groupName].append(builders);
     206    if (builderGroups[groupName].loaded())
     207        g_handleBuildersListLoaded();
     208}
     209
     210function onErrorLoadingBuilderList(url, builderGroups, groupName)
     211{
     212    builderGroups[groupName].groups += 1;
     213    console.log('Could not load list of builders from ' + url + '. Try reloading.');
     214}
     215
     216function loadBuildersList(groupName, testType) {
    192217    if (testType == 'gpu_tests') {
    193         switch(group) {
     218        switch(groupName) {
    194219        case '@DEPS - chromium.org':
    195             requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumDepsGpuTestRunner, CHROMIUM_GPU_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT);
     220            var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
     221            requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumDepsGpuTestRunner, CHROMIUM_GPU_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup);
    196222            break;
    197223
    198224        case '@DEPS FYI - chromium.org':
    199             requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumDepsFyiGpuTestRunner, CHROMIUM_GPU_FYI_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT);
     225            var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
     226            requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumDepsFyiGpuTestRunner, CHROMIUM_GPU_FYI_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup);
    200227            break;
    201228
    202229        case '@ToT - chromium.org':
    203             requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumTipOfTreeGpuTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, group, BuilderGroup.TOT_WEBKIT);
     230            var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
     231            requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, isChromiumTipOfTreeGpuTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builderGroup);
    204232            break;
    205233        }
    206234    } else if (testType == 'layout-tests') {
    207         switch(group) {
     235        switch(groupName) {
    208236        case '@ToT - chromium.org':
    209             requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitTipOfTreeTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, group, BuilderGroup.TOT_WEBKIT);
     237            var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
     238            requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitTipOfTreeTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builderGroup);
    210239            break;
    211240
    212241        case '@ToT - webkit.org':
    213             requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isWebkitTestRunner, WEBKIT_BUILDER_MASTER, group, BuilderGroup.TOT_WEBKIT);
     242            var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
     243            requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isWebkitTestRunner, WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builderGroup);
    214244            break;
    215245
    216246        case '@DEPS - chromium.org':
    217             requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitDepsTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT);
     247            var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
     248            requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitDepsTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup);
    218249            break;
    219250        }
    220251    } else {
    221         switch(group) {
     252        switch(groupName) {
    222253        case '@DEPS - chromium.org':
    223             requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT);
     254            var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
     255            requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup);
     256            requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_WIN_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup);
     257            requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_MAC_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup);
     258            requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsGTestRunner, CHROMIUM_LINUX_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup);
    224259            break;
    225260
    226261        case '@DEPS CrOS - chromium.org':
    227             requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsCrosGTestRunner, CHROMIUMOS_BUILDER_MASTER, group, BuilderGroup.DEPS_WEBKIT);
     262            var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
     263            requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumDepsCrosGTestRunner, CHROMIUMOS_BUILDER_MASTER, groupName, BuilderGroup.DEPS_WEBKIT, builderGroup);
    228264            break;
    229265
    230266        case '@ToT - chromium.org':
    231             requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumTipOfTreeGTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, group, BuilderGroup.TOT_WEBKIT);
     267            var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
     268            requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, isChromiumTipOfTreeGTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builderGroup);
    232269            break;
    233270        }
  • trunk/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js

    r119314 r119463  
    631631    var dummyMaster = new BuilderMaster('dummy.org', 'http://build.dummy.org');
    632632    var testBuilderGroups = {
    633         '@ToT - dummy.org': null,
    634         '@DEPS - dummy.org': null,
     633        '@ToT - dummy.org': new BuilderGroup(BuilderGroup.TOT_WEBKIT),
     634        '@DEPS - dummy.org': new BuilderGroup(BuilderGroup.DEPS_WEBKIT),
    635635    }
     636    testBuilderGroups['@ToT - dummy.org'].expectedGroups = 1;
     637    testBuilderGroups['@DEPS - dummy.org'].expectedGroups = 1;
     638
    636639    var testJSONData = "{ \"Dummy Builder 1\": null, \"Dummy Builder 2\": null }";
    637 
    638640    onBuilderListLoad(testBuilderGroups,  function() { return true; }, dummyMaster, '@ToT - dummy.org', BuilderGroup.TOT_WEBKIT, JSON.parse(testJSONData));
    639641    equal(testBuilderGroups['@ToT - dummy.org'].isToTWebKit, true);
    640 
    641642    onBuilderListLoad(testBuilderGroups,  function() { return true; }, dummyMaster, '@DEPS - dummy.org', BuilderGroup.DEPS_WEBKIT, JSON.parse(testJSONData));
    642643    equal(testBuilderGroups['@DEPS - dummy.org'].isToTWebKit, false);
     644});
     645
     646test('builderGroupExpectedGroups', 4, function() {
     647    var dummyMaster = new BuilderMaster('dummy.org', 'http://build.dummy.org');
     648    var testBuilderGroups = {
     649        '@ToT - dummy.org': new BuilderGroup(BuilderGroup.TOT_WEBKIT),
     650    }
     651    testBuilderGroups['@ToT - dummy.org'].expectedGroups = 3;
     652
     653    var testJSONData = "{ \"Dummy Builder 1\": null }";
     654    equal(testBuilderGroups['@ToT - dummy.org'].expectedGroups, 3);
     655    onBuilderListLoad(testBuilderGroups,  function() { return true; }, dummyMaster, '@ToT - dummy.org', BuilderGroup.TOT_WEBKIT, JSON.parse(testJSONData));
     656    equal(testBuilderGroups['@ToT - dummy.org'].groups, 1);
     657    var testJSONData = "{ \"Dummy Builder 2\": null }";
     658    onBuilderListLoad(testBuilderGroups,  function() { return true; }, dummyMaster, '@ToT - dummy.org', BuilderGroup.TOT_WEBKIT, JSON.parse(testJSONData));
     659    equal(testBuilderGroups['@ToT - dummy.org'].groups, 2);
     660    onErrorLoadingBuilderList('http://build.dummy.org', testBuilderGroups,  '@ToT - dummy.org');
     661    equal(testBuilderGroups['@ToT - dummy.org'].groups, 3);
    643662});
    644663
  • trunk/Tools/TestResultServer/static-dashboards/run-unittests.html

    r116024 r119463  
    5353<script>
    5454window.location.href = '#useTestData=true';
    55 var builderGroup = '@ToT - chromium.org';
     55var groupName = '@ToT - chromium.org';
    5656var builders = {'Webkit Linux': '', 'Webkit Linux (dbg)': '', 'Webkit Mac10.5': '', 'Webkit Win': ''};
    57 onBuilderListLoad(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitTipOfTreeTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, builderGroup, BuilderGroup.TOT_WEBKIT, builders);
     57LAYOUT_TESTS_BUILDER_GROUPS[groupName] = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
     58LAYOUT_TESTS_BUILDER_GROUPS[groupName].expectedGroups = 4;
     59onBuilderListLoad(LAYOUT_TESTS_BUILDER_GROUPS, isChromiumWebkitTipOfTreeTestRunner, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, BuilderGroup.TOT_WEBKIT, builders);
    5860initBuilders();
    5961</script>
Note: See TracChangeset for help on using the changeset viewer.