[Webkit-unassigned] [Bug 180126] Add a test freshness page.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Dec 13 23:40:01 PST 2017


https://bugs.webkit.org/show_bug.cgi?id=180126

Ryosuke Niwa <rniwa at webkit.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #329214|review?                     |review+
              Flags|                            |

--- Comment #15 from Ryosuke Niwa <rniwa at webkit.org> ---
Comment on attachment 329214
  --> https://bugs.webkit.org/attachment.cgi?id=329214
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=329214&action=review

> Websites/perf.webkit.org/ChangeLog:10
> +        Using an S-shape logistic function to evaluate the freshness of the data points.

Nit: S-shaped but I don't think we need to say that since logistic function is by definition S-shaped.

> Websites/perf.webkit.org/public/include/manifest-generator.php:47
> +            'acceptableLastDataPointDurationInHour' => config('acceptableLastDataPointDurationInHour'),

This is a very long name. How about something like testAgeToleranceInHours or testFreshnessToleranceInHours,
or even expectedTestFreshness.

> Websites/perf.webkit.org/public/v3/components/freshness-indicator.js:25
> +        this._lastDataPointDuration = lastDataPointDuration;
> +        this._summary = summary;
> +        this._acceptableLastDataPointDurationInHour = acceptableLastDataPointDurationInHour;
> +        this._url = url;
> +        this.enqueueToRender();

You should do this work in update, and then render() should lazily update the DOM.

> Websites/perf.webkit.org/public/v3/components/freshness-indicator.js:32
> +        this.renderReplace(this.content('container'), icon);

You should do this renderReplace in _createIcon. Should be renamed to _renderIndicator or something.

> Websites/perf.webkit.org/public/v3/components/freshness-indicator.js:41
> +        const hoursSinceLastDataPoint = this._lastDataPointDuration / 3600 ;

Nit: Trailing space before ;.

> Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:7
> +        this._acceptableLastDataPointDurationInHour = acceptableLastDataPointDurationInHour || 24;
> +        this._timeDurationInMillionSeconds = this._acceptableLastDataPointDurationInHour * 2 * 3600 * 1000;

We should store all these values in milliseconds always.

> Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:34
> +                    const platform = Platform.findById(platformId);
> +                    if (!platform)
> +                        continue;
> +                    this._platforms.push(platform);

Why don't we just add them all to the set and sort them later?
In fact, Set preserves the order in JS.

> Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:84
> +                measurementSet.fetchBetween(startTime, this._measurementSetFetchTime).then(() => {

It's a bit odd that you're keep running this code without setting fetchBetwen's noCache option to false.

> Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:102
> +        this.renderReplace(this.content('test-health'), this._constructTableLazily.evaluate(this._platforms, this._metrics));

You wanna do the replace call in _constructTable because otherwise, it would run appendChild each time.

> Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:115
> +                indicator.update(timeDurationInMillionSeconds / 1000, this._acceptableLastDataPointDurationInHour, summary, url);

You should just make update take milliseconds instead since that's the canonical time unit in JS.

> Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:127
> +            tableHeadElements.push(element('th', {class: 'diagonal-header'}, element('div', metric.test().path()[0].label())));

You need to call metric.test().fullName() as discussed in person.
Otherwise, you won't be able to distinguish subtests under a single top-level test like Dromaeo.

> Websites/perf.webkit.org/public/v3/pages/test-freshness-page.js:143
> +            && this._excludedConfigurations[platform.id()].includes(+metric.id()))

Instead of converting metric.id() to a number, do: some((x) => x == metric.id()).

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20171214/757d9c9c/attachment-0001.html>


More information about the webkit-unassigned mailing list