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');