Title: [227746] trunk/Websites/perf.webkit.org
Revision
227746
Author
[email protected]
Date
2018-01-29 12:27:56 -0800 (Mon, 29 Jan 2018)

Log Message

CommitLogViewer should not fetch commits in serial
https://bugs.webkit.org/show_bug.cgi?id=182207

Rubber-stamped by Chris Dumez.

Fetch both the commits in the range as well as the preceding commit at once instead of
fetching the preceding commit only after the commits in the range had been fetched.

* browser-tests/commit-log-viewer-tests.js: Fixed the tcoest case after r224227.
* public/v3/components/commit-log-viewer.js:
(CommitLogViewer.prototype._fetchCommitLogs): Fetch commits in parallel.

Modified Paths

Diff

Modified: trunk/Websites/perf.webkit.org/ChangeLog (227745 => 227746)


--- trunk/Websites/perf.webkit.org/ChangeLog	2018-01-29 19:45:30 UTC (rev 227745)
+++ trunk/Websites/perf.webkit.org/ChangeLog	2018-01-29 20:27:56 UTC (rev 227746)
@@ -1,3 +1,17 @@
+2018-01-29  Ryosuke Niwa  <[email protected]>
+
+        CommitLogViewer should not fetch commits in serial
+        https://bugs.webkit.org/show_bug.cgi?id=182207
+
+        Rubber-stamped by Chris Dumez.
+
+        Fetch both the commits in the range as well as the preceding commit at once instead of
+        fetching the preceding commit only after the commits in the range had been fetched.
+
+        * browser-tests/commit-log-viewer-tests.js: Fixed the tcoest case after r224227.
+        * public/v3/components/commit-log-viewer.js:
+        (CommitLogViewer.prototype._fetchCommitLogs): Fetch commits in parallel.
+
 2018-01-24  Dewei Zhu  <[email protected]>
 
         Check existence of 'node_modules_dir' before creating it.

Modified: trunk/Websites/perf.webkit.org/browser-tests/commit-log-viewer-tests.js (227745 => 227746)


--- trunk/Websites/perf.webkit.org/browser-tests/commit-log-viewer-tests.js	2018-01-29 19:45:30 UTC (rev 227745)
+++ trunk/Websites/perf.webkit.org/browser-tests/commit-log-viewer-tests.js	2018-01-29 20:27:56 UTC (rev 227746)
@@ -18,6 +18,18 @@
         });
     }
 
+    const webkitCommit210948 = {
+        "id": "185326",
+        "revision": "210948",
+        "repository": 1,
+        "previousCommit": null,
+        "ownsCommits": false,
+        "time": +new Date("2017-01-20 02:52:34.577Z"),
+        "authorName": "Zalan Bujtas",
+        "authorEmail": "[email protected]",
+        "message": "a message",
+    };
+
     const webkitCommit210949 = {
         "id": "185334",
         "revision": "210949",
@@ -86,7 +98,7 @@
 
     it('should show the repository name, the list of commits, and hide the spinner once the list of commits are fetched', () => {
         const context = new BrowsingContext();
-        return importCommitLogViewer(context).then((CommitLogViewer) => {
+        return importCommitLogViewer(context).then(async (CommitLogViewer) => {
             const Repository = context.symbols.Repository;
             const SpinnerIcon = context.symbols.SpinnerIcon;
             const ComponentBase = context.symbols.ComponentBase;
@@ -94,33 +106,40 @@
             const viewer = new CommitLogViewer;
             const webkit = new Repository(1, {name: 'WebKit'});
             context.document.body.appendChild(viewer.element());
+
             viewer.enqueueToRender();
-            return waitForComponentsToRender(context).then(() => {
-                viewer.view(webkit, '210948', '210950');
-                return waitForComponentsToRender(context);
-            }).then(() => {
-                expect(viewer.content('spinner-container').offsetHeight).to.not.be(0);
-                expect(viewer.content('commits-list').matches(':empty')).to.be(true);
-                expect(viewer.content('repository-name').matches(':empty')).to.be(false);
-                expect(viewer.content('repository-name').textContent).to.contain('WebKit');
-                expect(requests.length).to.be(1);
-                expect(requests[0].url).to.be('/api/commits/1/?precedingRevision=210948&lastRevision=210950');
-                requests[0].resolve({
-                    "status": "OK",
-                    "commits": [webkitCommit210949, webkitCommit210950],
-                });
-                return waitForComponentsToRender(context);
-            }).then(() => {
-                expect(viewer.content('spinner-container').offsetHeight).to.be(0);
-                expect(viewer.content('commits-list').matches(':empty')).to.be(false);
-                expect(viewer.content('commits-list').textContent).to.contain('r210949');
-                expect(viewer.content('commits-list').textContent).to.contain('Chris Dumez');
-                expect(viewer.content('commits-list').textContent).to.contain('r210950');
-                expect(viewer.content('commits-list').textContent).to.contain('Commit Queue');
-                expect(viewer.content('repository-name').matches(':empty')).to.be(false);
-                expect(viewer.content('repository-name').textContent).to.contain('WebKit');
-                expect(viewer.content('commits-list').querySelector('a')).to.be(null);
+            await waitForComponentsToRender(context);
+
+            viewer.view(webkit, '210948', '210950');
+            await waitForComponentsToRender(context);
+
+            expect(viewer.content('spinner-container').offsetHeight).to.not.be(0);
+            expect(viewer.content('commits-list').matches(':empty')).to.be(true);
+            expect(viewer.content('repository-name').matches(':empty')).to.be(false);
+            expect(viewer.content('repository-name').textContent).to.contain('WebKit');
+            expect(requests.length).to.be(2);
+            expect(requests[0].url).to.be('/api/commits/1/?precedingRevision=210948&lastRevision=210950');
+            expect(requests[1].url).to.be('/api/commits/1/210948');
+            requests[0].resolve({
+                "status": "OK",
+                "commits": [webkitCommit210949, webkitCommit210950],
             });
+            requests[1].resolve({
+                "status": "OK",
+                "commits": [webkitCommit210948],
+            });
+
+            await waitForComponentsToRender(context);
+
+            expect(viewer.content('spinner-container').offsetHeight).to.be(0);
+            expect(viewer.content('commits-list').matches(':empty')).to.be(false);
+            expect(viewer.content('commits-list').textContent).to.contain('r210949');
+            expect(viewer.content('commits-list').textContent).to.contain('Chris Dumez');
+            expect(viewer.content('commits-list').textContent).to.contain('r210950');
+            expect(viewer.content('commits-list').textContent).to.contain('Commit Queue');
+            expect(viewer.content('repository-name').matches(':empty')).to.be(false);
+            expect(viewer.content('repository-name').textContent).to.contain('WebKit');
+            expect(viewer.content('commits-list').querySelector('a')).to.be(null);
         });
     });
 

Modified: trunk/Websites/perf.webkit.org/public/v3/components/commit-log-viewer.js (227745 => 227746)


--- trunk/Websites/perf.webkit.org/public/v3/components/commit-log-viewer.js	2018-01-29 19:45:30 UTC (rev 227745)
+++ trunk/Websites/perf.webkit.org/public/v3/components/commit-log-viewer.js	2018-01-29 20:27:56 UTC (rev 227746)
@@ -36,11 +36,29 @@
         }
 
         let promise;
+        let precedingCommitPromise;
         const fetchSingleCommit = !precedingRevision || precedingRevision == lastRevision;
-        if (fetchSingleCommit)
-            promise = CommitLog.fetchForSingleRevision(repository, lastRevision);
-        else
-            promise = CommitLog.fetchBetweenRevisions(repository, precedingRevision, lastRevision);
+        if (fetchSingleCommit) {
+            promise = CommitLog.fetchForSingleRevision(repository, lastRevision).then((commits) => {
+                if (this._fetchingPromise != promise)
+                    return;
+                this._commits = commits;
+                this._precedingCommit = null;
+            });
+        } else {
+            promise = Promise.all([
+                CommitLog.fetchBetweenRevisions(repository, precedingRevision, lastRevision).then((commits) => {
+                    if (this._fetchingPromise != promise)
+                        return;
+                    this._commits = commits;
+                }),
+                CommitLog.fetchForSingleRevision(repository, precedingRevision).then((precedingCommit) => {
+                    if (this._fetchingPromise != promise)
+                        return;
+                    this._precedingCommit = null;
+                })
+            ]);
+        }
 
         this._repository = repository;
         this._fetchingPromise = promise;
@@ -48,31 +66,14 @@
         this._fetchingPromise.then((commits) => {
             if (this._fetchingPromise != promise)
                 return;
-            this._commits = commits;
-            if (fetchSingleCommit) {
-                this._fetchingPromise = null;
-                this._precedingCommit = null;
-                this.enqueueToRender();
-                return;
-            }
-            return CommitLog.fetchForSingleRevision(repository, precedingRevision).then((precedingCommit) => {
-                if (this._fetchingPromise != promise)
-                    return;
-                this._fetchingPromise = null;
-                this._precedingCommit = precedingCommit[0];
-                this.enqueueToRender();
-            }, (error) => {
-                if (this._fetchingPromise != promise)
-                    return;
-                this._fetchingPromise = null;
-                this._precedingCommit = null;
-                this.enqueueToRender();
-            });
+            this._fetchingPromise = null;
+            this.enqueueToRender();
         }, (error) => {
             if (this._fetchingPromise != promise)
                 return;
             this._fetchingPromise = null;
             this._commits = null;
+            this._precedingCommit = null;
             this.enqueueToRender();
         });
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to