Title: [269083] trunk/Websites/perf.webkit.org
Revision
269083
Author
dewei_...@apple.com
Date
2020-10-27 18:00:35 -0700 (Tue, 27 Oct 2020)

Log Message

Refactor 'platforms' table to contain group information.
https://bugs.webkit.org/show_bug.cgi?id=193132

Reviewed by Ryosuke Niwa.

Group 'platforms' so that bisecting can use commit sets from other platforms which are in the same platform group.
This will help to enhance the bisecting capability to higher granularity.
Added admin page to manage platform groups.
Updated platform admin page to allow update platform group.
SQL query to update existing database:
'''
BEGIN;
CREATE TABLE platform_groups (
    platformgroup_id serial PRIMARY KEY,
    platformgroup_name varchar(64) NOT NULL,
    CONSTRAINT platform_group_name_must_be_unique UNIQUE (platformgroup_name));

ALTER TABLE platforms ADD COLUMN platform_group integer REFERENCES platform_groups DEFAULT NULL;
END;
'''

* init-database.sql: Added 'platform_group' column to 'platforms' table.
Added 'platform_groups' table.
* migrate-database.sql: Updated migration script accordingly.
* public/admin/platform-groups.php: Added a page to manage platform groups.
* public/admin/platforms.php: Added support to update platform group in admin page.
* public/include/admin-header.php: Added link to page that maneges platform groups.
* public/include/manifest-generator.php: Added 'platformGroup' in manifest.
* public/v3/index.html: Included 'platform-groups.js'.
* public/v3/models/analysis-task.js:
(AnalysisTask.prototype.async.commitSetsFromTestGroupsAndMeasurementSet):
Included measurement commit sets from other platforms in the same platform group.
(AnalysisTask.prototype._commitSetForOtherPlatformsInSameGroup):
Helper function to find measurment commit set for other platforms in same platform group.
* public/v3/models/manifest.js: Added step to build 'PlatformGroup' instances.
* public/v3/models/platform-group.js: Added 'PlatformGroup' to represent entries in 'platform_groups' table.
(PlatformGroup):
(PlatformGroup.prototype.addPlatform):
(PlatformGroup.prototype.platforms):
* public/v3/models/platform.js: Added itself to 'PlatformGroup' in constructor if it belongs
to a group.
(Platform.prototype.group): Return the platform group of current platform.
* public/v3/models/time-series.js: Added helper function to show view between a given time range.
(TimeSeries.prototype.viewBetweenTime):
* server-tests/api-manifest-tests.js: Updated unit test to also test platform group initialization.
* tools/js/database.js: Added prefix for 'platform_groups'.
* tools/js/v3-models.js: Added import for platform group.

Modified Paths

Added Paths

Diff

Modified: trunk/Websites/perf.webkit.org/ChangeLog (269082 => 269083)


--- trunk/Websites/perf.webkit.org/ChangeLog	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/ChangeLog	2020-10-28 01:00:35 UTC (rev 269083)
@@ -1,3 +1,53 @@
+2020-10-27  Dewei Zhu  <dewei_...@apple.com>
+
+        Refactor 'platforms' table to contain group information.
+        https://bugs.webkit.org/show_bug.cgi?id=193132
+
+        Reviewed by Ryosuke Niwa.
+
+        Group 'platforms' so that bisecting can use commit sets from other platforms which are in the same platform group.
+        This will help to enhance the bisecting capability to higher granularity.
+        Added admin page to manage platform groups.
+        Updated platform admin page to allow update platform group.
+        SQL query to update existing database:
+        '''
+        BEGIN;
+        CREATE TABLE platform_groups (
+            platformgroup_id serial PRIMARY KEY,
+            platformgroup_name varchar(64) NOT NULL,
+            CONSTRAINT platform_group_name_must_be_unique UNIQUE (platformgroup_name));
+
+        ALTER TABLE platforms ADD COLUMN platform_group integer REFERENCES platform_groups DEFAULT NULL;
+        END;
+        '''
+
+        * init-database.sql: Added 'platform_group' column to 'platforms' table.
+        Added 'platform_groups' table.
+        * migrate-database.sql: Updated migration script accordingly.
+        * public/admin/platform-groups.php: Added a page to manage platform groups.
+        * public/admin/platforms.php: Added support to update platform group in admin page.
+        * public/include/admin-header.php: Added link to page that maneges platform groups.
+        * public/include/manifest-generator.php: Added 'platformGroup' in manifest.
+        * public/v3/index.html: Included 'platform-groups.js'.
+        * public/v3/models/analysis-task.js:
+        (AnalysisTask.prototype.async.commitSetsFromTestGroupsAndMeasurementSet):
+        Included measurement commit sets from other platforms in the same platform group.
+        (AnalysisTask.prototype._commitSetsInSamePlatformGroup):
+        Helper function to find measurement commit set for other platforms in same platform group.
+        * public/v3/models/manifest.js: Added step to build 'PlatformGroup' instances.
+        * public/v3/models/platform-group.js: Added 'PlatformGroup' to represent entries in 'platform_groups' table.
+        (PlatformGroup):
+        (PlatformGroup.prototype.addPlatform):
+        (PlatformGroup.prototype.platforms):
+        * public/v3/models/platform.js: Added itself to 'PlatformGroup' in constructor if it belongs
+        to a group.
+        (Platform.prototype.group): Return the platform group of current platform.
+        * public/v3/models/time-series.js: Added helper function to show view between a given time range.
+        (TimeSeries.prototype.viewBetweenTime):
+        * server-tests/api-manifest-tests.js: Updated unit test to also test platform group initialization.
+        * tools/js/database.js: Added prefix for 'platform_groups'.
+        * tools/js/v3-models.js: Added import for platform group.
+
 2020-10-26  Dewei Zhu  <dewei_...@apple.com>
 
         Fix and update performance dashboard tests

Modified: trunk/Websites/perf.webkit.org/init-database.sql (269082 => 269083)


--- trunk/Websites/perf.webkit.org/init-database.sql	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/init-database.sql	2020-10-28 01:00:35 UTC (rev 269083)
@@ -12,6 +12,7 @@
 DROP TABLE IF EXISTS builders CASCADE;
 DROP TABLE IF EXISTS repositories CASCADE;
 DROP TABLE IF EXISTS platforms CASCADE;
+DROP TABLE IF EXISTS platform_groups CASCADE;
 DROP TABLE IF EXISTS test_metrics CASCADE;
 DROP TABLE IF EXISTS tests CASCADE;
 DROP TABLE IF EXISTS reports CASCADE;
@@ -34,9 +35,15 @@
 DROP TYPE IF EXISTS build_request_status_type CASCADE;
 
 
+CREATE TABLE platform_groups (
+    platformgroup_id serial PRIMARY KEY,
+    platformgroup_name varchar(64) NOT NULL,
+    CONSTRAINT platform_group_name_must_be_unique UNIQUE (platformgroup_name));
+
 CREATE TABLE platforms (
     platform_id serial PRIMARY KEY,
     platform_name varchar(64) NOT NULL,
+    platform_group integer REFERENCES platform_groups DEFAULT NULL,
     platform_hidden boolean NOT NULL DEFAULT FALSE);
 
 CREATE TABLE repositories (

Modified: trunk/Websites/perf.webkit.org/migrate-database.sql (269082 => 269083)


--- trunk/Websites/perf.webkit.org/migrate-database.sql	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/migrate-database.sql	2020-10-28 01:00:35 UTC (rev 269083)
@@ -2,7 +2,13 @@
 
 BEGIN
 ALTER TABLE build_requests ADD COLUMN IF NOT EXISTS request_status_description varchar(1024) DEFAULT NULL;
+ALTER TABLE platforms ADD COLUMN  IF NOT EXISTS platform_group integer REFERENCES platform_groups DEFAULT NULL;
 
+CREATE TABLE IF NOT EXISTS platform_groups (
+    platformgroup_id serial PRIMARY KEY,
+    platformgroup_name varchar(64) NOT NULL,
+    CONSTRAINT platform_group_name_must_be_unique UNIQUE (platformgroup_name));
+
 IF EXISTS (SELECT NULL FROM information_schema.columns WHERE TABLE_NAME = 'builds' AND COLUMN_NAME = 'build_number') THEN
     ALTER TABLE builds ALTER build_number TYPE varchar(64);
     ALTER TABLE builds RENAME build_number TO build_tag;

Added: trunk/Websites/perf.webkit.org/public/admin/platform-groups.php (0 => 269083)


--- trunk/Websites/perf.webkit.org/public/admin/platform-groups.php	                        (rev 0)
+++ trunk/Websites/perf.webkit.org/public/admin/platform-groups.php	2020-10-28 01:00:35 UTC (rev 269083)
@@ -0,0 +1,27 @@
+<?php
+
+require('../include/admin-header.php');
+
+if ($db) {
+    if ($action == 'add') {
+        if ($db->insert_row('platform_groups', 'platformgroup', array('name' => $_POST['name']))) {
+            notice('Inserted the new platform group');
+            regenerate_manifest();
+        } else
+            notice('Could not add the platform group.');
+    } else if ($action == 'update') {
+        if (update_field('platform_groups', 'platformgroup', 'name'))
+            regenerate_manifest();
+        else
+            notice('Invalid parameters.');
+    }
+
+    $page = new AdministrativePage($db, 'platform_groups', 'platformgroup', array('name' => array('size' => 50, 'editing_mode' => 'string')));
+
+    $page->render_table('name');
+    $page->render_form_to_add();
+}
+
+require('../include/admin-footer.php');
+
+?>

Modified: trunk/Websites/perf.webkit.org/public/admin/platforms.php (269082 => 269083)


--- trunk/Websites/perf.webkit.org/public/admin/platforms.php	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/public/admin/platforms.php	2020-10-28 01:00:35 UTC (rev 269083)
@@ -59,7 +59,9 @@
 if ($db) {
     if ($action == 'update') {
         if (update_field('platforms', 'platform', 'name')
-            || update_boolean_field('platforms', 'platform', 'hidden'))
+            || update_boolean_field('platforms', 'platform', 'hidden')
+            || update_field('platforms', 'platform', 'hidden')
+            || update_field('platforms', 'platform', 'group'))
             regenerate_manifest();
         else
             notice('Invalid parameters.');
@@ -94,9 +96,37 @@
         return array($content);
     }
 
+    $platform_group_options = $db->fetch_table('platform_groups', 'platformgroup_name');
+    array_push($platform_group_options, array('platformgroup_id' => NULL, 'platformgroup_name' => '-'));
+    function platform_group_list($platform_row)
+    {
+        global $platform_group_options;
+        $id = intval($platform_row['platform_id']);
+        $platform_group_id = $platform_row['platform_group'];
+        $content = <<< END
+<form method="POST"><input type="hidden" name="id" value="$id">
+<select name="group">
+END;
+
+        foreach ($platform_group_options as &$group_option) {
+            $selection_string = $group_option['platformgroup_id'] == $platform_group_id ? " selected" : "";
+            $content .= <<< END
+<option value="{$group_option['platformgroup_id']}"{$selection_string}>{$group_option['platformgroup_name']}</option>
+END;
+        }
+
+        $content .= <<< END
+</select>
+<button type="submit" name="action" value="update">Update</button>
+</form>
+END;
+        return array($content);
+    }
+
     $page = new AdministrativePage($db, 'platforms', 'platform', array(
         'name' => array('editing_mode' => 'string'),
         'hidden' => array('editing_mode' => 'boolean'),
+        'platform group' => array('custom' => function ($platform_row) { return platform_group_list($platform_row); }),
         'merge into' => array('custom' => function ($platform_row) { return merge_list($platform_row); }),
     ));
 

Modified: trunk/Websites/perf.webkit.org/public/include/admin-header.php (269082 => 269083)


--- trunk/Websites/perf.webkit.org/public/include/admin-header.php	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/public/include/admin-header.php	2020-10-28 01:00:35 UTC (rev 269083)
@@ -15,6 +15,7 @@
 <h1><a href="" Perf Monitor</a></h1>
 <ul>
     <li><a href=""
+    <li><a href="" Groups</a></li>
     <li><a href=""
     <li><a href=""
     <li><a href=""

Modified: trunk/Websites/perf.webkit.org/public/include/manifest-generator.php (269082 => 269083)


--- trunk/Websites/perf.webkit.org/public/include/manifest-generator.php	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/public/include/manifest-generator.php	2020-10-28 01:00:35 UTC (rev 269083)
@@ -33,6 +33,7 @@
         $platforms = (object)$this->platforms($platform_table, false);
         $dashboard = (object)$this->platforms($platform_table, true);
         $repositories = (object)$this->repositories($repositories_table, $repositories_with_commit);
+        $platform_groups = (object)$this->platform_groups();
 
         $this->manifest = array(
             'siteTitle' => config('siteTitle', 'Performance Dashboard'),
@@ -39,6 +40,7 @@
             'tests' => &$tests,
             'metrics' => &$metrics,
             'all' => &$platforms,
+            'platformGroups' => &$platform_groups,
             'dashboard' => &$dashboard,
             'repositories' => &$repositories,
             'builders' => (object)$this->builders(),
@@ -115,7 +117,6 @@
                 array_push($current_platform_entry['last_modified'], intval($metric_row['last_modified']));
             }
         }
-        $configurations = array();
 
         $platforms = array();
         if ($platform_table) {
@@ -127,6 +128,7 @@
                     $platforms[$id] = array(
                         'name' => $platform_row['platform_name'],
                         'metrics' => $platform_metrics[$id]['metrics'],
+                        'group' => $platform_row['platform_group'],
                         'lastModified' => $platform_metrics[$id]['last_modified']);
                 }
             }
@@ -134,6 +136,16 @@
         return $platforms;
     }
 
+    private function platform_groups() {
+        $platform_groups_table = $this->db->fetch_table('platform_groups');
+        if (!$platform_groups_table)
+            return array();
+        $platform_groups = array();
+        foreach ($platform_groups_table as &$row)
+            $platform_groups[$row['platformgroup_id']] = array('name' => $row['platformgroup_name']);
+        return $platform_groups;
+    }
+
     private function repositories($repositories_table, $repositories_with_commit) {
         $repositories = array();
         if (!$repositories_table)

Modified: trunk/Websites/perf.webkit.org/public/v3/index.html (269082 => 269083)


--- trunk/Websites/perf.webkit.org/public/v3/index.html	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/public/v3/index.html	2020-10-28 01:00:35 UTC (rev 269083)
@@ -56,6 +56,7 @@
         <script src=""
         <script src=""
         <script src=""
+        <script src=""
         <script src=""
         <script src=""
         <script src=""

Modified: trunk/Websites/perf.webkit.org/public/v3/models/analysis-task.js (269082 => 269083)


--- trunk/Websites/perf.webkit.org/public/v3/models/analysis-task.js	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/public/v3/models/analysis-task.js	2020-10-28 01:00:35 UTC (rev 269083)
@@ -169,7 +169,6 @@
 
     async commitSetsFromTestGroupsAndMeasurementSet()
     {
-
         const platform = this.platform();
         const metric = this.metric();
         if (!platform || !metric)
@@ -178,6 +177,7 @@
         const lastModified = platform.lastModified(metric);
         const measurementSet = MeasurementSet.findSet(platform.id(), metric.id(), lastModified);
         const fetchingMeasurementSetPromise = measurementSet.fetchBetween(this.startTime(), this.endTime());
+        const commitSetsInSamePlatformGroupPromise = this._commitSetsInSamePlatformGroup();
 
         const allTestGroupsInTask = await TestGroup.fetchForTask(this.id());
         const allCommitSetsInTask = new Set;
@@ -189,10 +189,29 @@
         const series = measurementSet.fetchedTimeSeries('current', false, false);
         const startPoint = series.findById(this.startMeasurementId());
         const endPoint = series.findById(this.endMeasurementId());
+        const commitSetList = Array.from(series.viewBetweenPoints(startPoint, endPoint)).map((point) => point.commitSet());
+        const arrayOfCommitSetList = await Promise.all(commitSetsInSamePlatformGroupPromise);
 
-        return Array.from(series.viewBetweenPoints(startPoint, endPoint)).map((point) => point.commitSet());
+        return [...commitSetList.concat(...arrayOfCommitSetList), ...allCommitSetsInTask];
     }
 
+    _commitSetsInSamePlatformGroup()
+    {
+        const metric = this.metric();
+        if (!metric || !this.platform() || !this.platform().group())
+            return [];
+        const otherPlatforms = this.platform().group().platforms().filter((platform) => platform != this.platform());
+        return otherPlatforms.map(async (platform) => {
+            const lastModified = platform.lastModified(metric);
+            const measurementSet = MeasurementSet.findSet(platform.id(), metric.id(), lastModified);
+            await measurementSet.fetchBetween(this.startTime(), this.endTime());
+            const series = measurementSet.fetchedTimeSeries('current', false, false);
+            const timeSeriesView = series.viewBetweenTime(this.startTime(), this.endTime());
+
+            return timeSeriesView ? Array.from(timeSeriesView).map((point) => point.commitSet()) : [];
+        });
+    }
+
     static categories()
     {
         return [

Modified: trunk/Websites/perf.webkit.org/public/v3/models/manifest.js (269082 => 269083)


--- trunk/Websites/perf.webkit.org/public/v3/models/manifest.js	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/public/v3/models/manifest.js	2020-10-28 01:00:35 UTC (rev 269083)
@@ -10,6 +10,7 @@
         CommitLog.clearStaticMap();
         Metric.clearStaticMap();
         Platform.clearStaticMap();
+        PlatformGroup.clearStaticMap();
         Repository.clearStaticMap();
         CommitSet.clearStaticMap();
         Test.clearStaticMap();
@@ -50,6 +51,7 @@
             raw.test = Test.findById(raw.test);
         });
 
+        buildObjectsFromIdMap(rawResponse.platformGroups, PlatformGroup);
         buildObjectsFromIdMap(rawResponse.all, Platform, (raw) => {
             raw.lastModifiedByMetric = {};
             raw.lastModified.forEach((lastModified, index) => {
@@ -56,6 +58,7 @@
                 raw.lastModifiedByMetric[raw.metrics[index]] = lastModified;
             });
             raw.metrics = raw.metrics.map((id) => { return Metric.findById(id); });
+            raw.group = PlatformGroup.findById(raw.group);
         });
         buildObjectsFromIdMap(rawResponse.builders, Builder);
         buildObjectsFromIdMap(rawResponse.repositories, Repository);

Added: trunk/Websites/perf.webkit.org/public/v3/models/platform-group.js (0 => 269083)


--- trunk/Websites/perf.webkit.org/public/v3/models/platform-group.js	                        (rev 0)
+++ trunk/Websites/perf.webkit.org/public/v3/models/platform-group.js	2020-10-28 01:00:35 UTC (rev 269083)
@@ -0,0 +1,15 @@
+'use strict';
+
+class PlatformGroup extends LabeledObject {
+    constructor(id, object)
+    {
+        super(id, object);
+        this.ensureNamedStaticMap('name')[object.name] = this;
+        this._platforms = new Set;
+    }
+    addPlatform(platform) {this._platforms.add(platform);}
+    platforms() { return Array.from(this._platforms); }
+}
+
+if (typeof module != 'undefined')
+    module.exports.PlatformGroup = PlatformGroup;

Modified: trunk/Websites/perf.webkit.org/public/v3/models/platform.js (269082 => 269083)


--- trunk/Websites/perf.webkit.org/public/v3/models/platform.js	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/public/v3/models/platform.js	2020-10-28 01:00:35 UTC (rev 269083)
@@ -12,6 +12,10 @@
 
         for (var metric of this._metrics)
             metric.addPlatform(this);
+
+        this._group = object.group;
+        if (this._group)
+            this._group.addPlatform(this);
     }
 
     static findByName(name)
@@ -42,6 +46,8 @@
         console.assert(metric instanceof Metric);
         return this._lastModifiedByMetric[metric.id()];
     }
+
+    group() { return this._group; }
 }
 
 if (typeof module != 'undefined')

Modified: trunk/Websites/perf.webkit.org/public/v3/models/time-series.js (269082 => 269083)


--- trunk/Websites/perf.webkit.org/public/v3/models/time-series.js	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/public/v3/models/time-series.js	2020-10-28 01:00:35 UTC (rev 269083)
@@ -71,7 +71,20 @@
     findById(id) { return this._data.find(function (point) { return point.id == id }); }
 
     findPointAfterTime(time) { return this._data.find(function (point) { return point.time >= time; }); }
+    viewBetweenTime(startTime, endTime)
+    {
+        const startPoint = this.findPointAfterTime(startTime);
+        if (!startPoint)
+            return null;
+        let endPoint = this.findPointAfterTime(endTime);
+        if (!endPoint)
+            endPoint = this.lastPoint();
+        else if (endPoint.time > endTime)
+            endPoint = this.previousPoint(endPoint);
 
+        return this.viewBetweenPoints(startPoint, endPoint);
+    }
+
     viewBetweenPoints(firstPoint, lastPoint)
     {
         console.assert(firstPoint.series == this);

Modified: trunk/Websites/perf.webkit.org/server-tests/api-manifest-tests.js (269082 => 269083)


--- trunk/Websites/perf.webkit.org/server-tests/api-manifest-tests.js	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/server-tests/api-manifest-tests.js	2020-10-28 01:00:35 UTC (rev 269083)
@@ -14,7 +14,7 @@
     it("should generate an empty manifest when database is empty", () => {
         return TestServer.remoteAPI().getJSON('/api/manifest').then((manifest) => {
             assert.deepEqual(Object.keys(manifest).sort(), ['all', 'bugTrackers', 'builders', 'dashboard', 'dashboards',
-                'fileUploadSizeLimit', 'metrics', 'repositories', 'siteTitle', 'status', 'summaryPages', 'testAgeToleranceInHours', 'tests', 'triggerables']);
+                'fileUploadSizeLimit', 'metrics', 'platformGroups', 'repositories', 'siteTitle', 'status', 'summaryPages', 'testAgeToleranceInHours', 'tests', 'triggerables']);
 
             assert.deepStrictEqual(manifest, {
                 siteTitle: TestServer.testConfig().siteTitle,
@@ -25,6 +25,7 @@
                 dashboards: {},
                 fileUploadSizeLimit: 2097152, // 2MB during testing.
                 metrics: {},
+                platformGroups: {},
                 repositories: {},
                 testAgeToleranceInHours: null,
                 tests: {},
@@ -185,8 +186,10 @@
             db.insert('test_metrics', {id: 7, test: 2, name: 'Malloc', aggregator: 200}),
             db.insert('test_metrics', {id: 8, test: 3, name: 'Time'}),
             db.insert('test_metrics', {id: 9, test: 4, name: 'Time'}),
-            db.insert('platforms', {id: 23, name: 'iOS 9 iPhone 5s'}),
-            db.insert('platforms', {id: 46, name: 'Trunk Mavericks'}),
+            db.insert('platform_groups', {id: 1, name: 'ios'}),
+            db.insert('platform_groups', {id: 2, name: 'mac'}),
+            db.insert('platforms', {id: 23, name: 'iOS 9 iPhone 5s', group: 1}),
+            db.insert('platforms', {id: 46, name: 'Trunk Mavericks', group: 2}),
             db.insert('test_configurations', {id: 101, metric: 5, platform: 46, type: 'current'}),
             db.insert('test_configurations', {id: 102, metric: 6, platform: 46, type: 'current'}),
             db.insert('test_configurations', {id: 103, metric: 7, platform: 46, type: 'current'}),
@@ -214,16 +217,18 @@
 
             let manifest = Manifest._didFetchManifest(content);
 
-            let someTest = Test.findById(1);
-            let someTestMetric = Metric.findById(5);
-            let someOtherTest = Test.findById(2);
-            let someOtherTestTime = Metric.findById(6);
-            let someOtherTestMalloc = Metric.findById(7);
-            let childTest = Test.findById(3);
-            let childTestMetric = Metric.findById(8);
-            let grandChildTest = Test.findById(4);
-            let ios9iphone5s = Platform.findById(23);
-            let mavericks = Platform.findById(46);
+            const someTest = Test.findById(1);
+            const someTestMetric = Metric.findById(5);
+            const someOtherTest = Test.findById(2);
+            const someOtherTestTime = Metric.findById(6);
+            const someOtherTestMalloc = Metric.findById(7);
+            const childTest = Test.findById(3);
+            const childTestMetric = Metric.findById(8);
+            const grandChildTest = Test.findById(4);
+            const ios9iphone5s = Platform.findById(23);
+            const mavericks = Platform.findById(46);
+            const iosGroup = PlatformGroup.findById(1);
+            const macGroup = PlatformGroup.findById(2);
             assert(someTest);
             assert(someTestMetric);
             assert(someOtherTest);
@@ -234,6 +239,8 @@
             assert(grandChildTest);
             assert(ios9iphone5s);
             assert(mavericks);
+            assert(iosGroup);
+            assert(macGroup);
 
             assert.equal(mavericks.name(), 'Trunk Mavericks');
             assert(mavericks.hasTest(someTest));
@@ -244,6 +251,7 @@
             assert(mavericks.hasMetric(someOtherTestTime));
             assert(mavericks.hasMetric(someOtherTestMalloc));
             assert(mavericks.hasMetric(childTestMetric));
+            assert.equal(mavericks.group(), macGroup);
 
             assert.equal(ios9iphone5s.name(), 'iOS 9 iPhone 5s');
             assert(ios9iphone5s.hasTest(someTest));
@@ -254,7 +262,16 @@
             assert(!ios9iphone5s.hasMetric(someOtherTestTime));
             assert(!ios9iphone5s.hasMetric(someOtherTestMalloc));
             assert(!ios9iphone5s.hasMetric(childTestMetric));
+            assert.equal(ios9iphone5s.group(), iosGroup);
 
+            const macPlatforms = macGroup.platforms();
+            assert.equal(macPlatforms.length, 1);
+            assert.equal(macPlatforms[0], mavericks);
+
+            const iosPlatforms = iosGroup.platforms();
+            assert.equal(iosPlatforms.length, 1);
+            assert.equal(iosPlatforms[0], ios9iphone5s);
+
             assert.equal(someTest.name(), 'SomeTest');
             assert.equal(someTest.parentTest(), null);
             assert.deepEqual(someTest.path(), [someTest]);

Modified: trunk/Websites/perf.webkit.org/tools/js/database.js (269082 => 269083)


--- trunk/Websites/perf.webkit.org/tools/js/database.js	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/tools/js/database.js	2020-10-28 01:00:35 UTC (rev 269083)
@@ -166,6 +166,7 @@
     'triggerable_repository_groups': 'repositorygroup',
     'triggerable_repositories': 'trigrepo',
     'platforms': 'platform',
+    'platform_groups': 'platformgroup',
     'reports': 'report',
     'repositories': 'repository',
     'commit_sets': 'commitset',

Modified: trunk/Websites/perf.webkit.org/tools/js/v3-models.js (269082 => 269083)


--- trunk/Websites/perf.webkit.org/tools/js/v3-models.js	2020-10-28 00:10:14 UTC (rev 269082)
+++ trunk/Websites/perf.webkit.org/tools/js/v3-models.js	2020-10-28 01:00:35 UTC (rev 269083)
@@ -24,6 +24,7 @@
 importFromV3('models/measurement-set.js', 'MeasurementSet');
 importFromV3('models/metric.js', 'Metric');
 importFromV3('models/platform.js', 'Platform');
+importFromV3('models/platform-group.js', 'PlatformGroup');
 importFromV3('models/repository.js', 'Repository');
 importFromV3('models/commit-set.js', 'MeasurementCommitSet');
 importFromV3('models/commit-set.js', 'CommitSet');
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to