Title: [277671] trunk/Websites/perf.webkit.org
Revision
277671
Author
zhifei_f...@apple.com
Date
2021-05-18 12:56:03 -0700 (Tue, 18 May 2021)

Log Message

Commits updater should ignore null revision identifier
https://bugs.webkit.org/show_bug.cgi?id=225911

Reviewed by Ryosuke Niwa.

* public/include/commit-updater.php:
* server-tests/api-report-commits-tests.js:

Modified Paths

Diff

Modified: trunk/Websites/perf.webkit.org/ChangeLog (277670 => 277671)


--- trunk/Websites/perf.webkit.org/ChangeLog	2021-05-18 19:52:05 UTC (rev 277670)
+++ trunk/Websites/perf.webkit.org/ChangeLog	2021-05-18 19:56:03 UTC (rev 277671)
@@ -1,3 +1,13 @@
+2021-05-18  Zhifei Fang  <zhifei_f...@apple.com>
+
+        Commits updater should ignore null revision identifier
+        https://bugs.webkit.org/show_bug.cgi?id=225911
+
+        Reviewed by Ryosuke Niwa.
+
+        * public/include/commit-updater.php:
+        * server-tests/api-report-commits-tests.js:
+
 2021-05-07  Zhifei Fang  <zhifei_f...@apple.com>
         
         Add support for syncing repo with commit revision label.

Modified: trunk/Websites/perf.webkit.org/public/include/commit-updater.php (277670 => 277671)


--- trunk/Websites/perf.webkit.org/public/include/commit-updater.php	2021-05-18 19:52:05 UTC (rev 277670)
+++ trunk/Websites/perf.webkit.org/public/include/commit-updater.php	2021-05-18 19:56:03 UTC (rev 277671)
@@ -81,7 +81,7 @@
             $has_update = count($commit_data) > 1;
 
             $update = array('commit' => &$commit_data, 'repository' => &$commit_info['repository']);
-            if (array_key_exists('revisionIdentifier', $commit_info)) {
+            if (array_key_exists('revisionIdentifier', $commit_info) && isset($commit_info['revisionIdentifier'])) {
                 if (array_key_exists($commit_info['revisionIdentifier'], $commit_revision_identifiers))
                     $this->exit_with_error('DuplicatedRevisionIdentifier', array('commit' => $commit_info));
                 $commit_revision_identifiers[$commit_info['revisionIdentifier']] = true;
@@ -169,7 +169,7 @@
             exit_with_error('InvalidAuthorFormat', array('commit' => $commit_info));
         if (array_key_exists('previousCommit', $commit_info))
             require_format('Revision', $commit_info['previousCommit'], '/^[A-Za-z0-9 \.]+$/');
-        if (array_key_exists('revisionIdentifier', $commit_info))
+        if (array_key_exists('revisionIdentifier', $commit_info) && isset($commit_info['revisionIdentifier']))
             require_format('RevisionIdentifier', $commit_info['revisionIdentifier'], '/^\d+@[\w\.\-]+$/');
     }
 

Modified: trunk/Websites/perf.webkit.org/server-tests/api-report-commits-tests.js (277670 => 277671)


--- trunk/Websites/perf.webkit.org/server-tests/api-report-commits-tests.js	2021-05-18 19:52:05 UTC (rev 277670)
+++ trunk/Websites/perf.webkit.org/server-tests/api-report-commits-tests.js	2021-05-18 19:56:03 UTC (rev 277671)
@@ -113,6 +113,93 @@
         ]
     }
 
+    const emptyRevisionIdentifierCommits = {
+        "workerName": "someWorker",
+        "workerPassword": "somePassword",
+        "commits": [
+            {
+                "repository": "WebKit",
+                "revision": "210948",
+                "revisionIdentifier": null,
+                "time": "2017-01-20T02:52:34.577Z",
+                "author": {"name": "Zalan Bujtas", "account": "za...@apple.com"},
+                "message": "a message",
+            },
+            {
+                "repository": "WebKit",
+                "revision": "210949",
+                "previousCommit": "210948",
+                "revisionIdentifier": null,
+                "time": "2017-01-20T03:23:50.645Z",
+                "author": {"name": "Chris Dumez", "account": "cdu...@apple.com"},
+                "message": "some message",
+            },
+        ]
+    }
+
+    const emptyRevisionIdentifierAndValidRevisionIdentifierCommits = {
+        "workerName": "someWorker",
+        "workerPassword": "somePassword",
+        "commits": [
+            {
+                "repository": "WebKit",
+                "revision": "210948",
+                "revisionIdentifier": null,
+                "time": "2017-01-20T02:52:34.577Z",
+                "author": {"name": "Zalan Bujtas", "account": "za...@apple.com"},
+                "message": "a message",
+            },
+            {
+                "repository": "WebKit",
+                "revision": "210949",
+                "previousCommit": "210948",
+                "revisionIdentifier": "184276@main",
+                "time": "2017-01-20T03:23:50.645Z",
+                "author": {"name": "Chris Dumez", "account": "cdu...@apple.com"},
+                "message": "some message",
+            },
+        ]
+    }
+
+    const emptyRevisionIdentifierWithInvalidRevisionIdentifierCommits = {
+        "workerName": "someWorker",
+        "workerPassword": "somePassword",
+        "commits": [
+            {
+                "repository": "WebKit",
+                "revision": "210948",
+                "revisionIdentifier": null,
+                "time": "2017-01-20T02:52:34.577Z",
+                "author": {"name": "Zalan Bujtas", "account": "za...@apple.com"},
+                "message": "a message",
+            },
+            {
+                "repository": "WebKit",
+                "revision": "210949",
+                "revisionIdentifier": "",
+                "time": "2017-01-20T03:23:50.645Z",
+                "author": {"name": "Chris Dumez", "account": "cdu...@apple.com"},
+                "message": "some message",
+            },
+            {
+                "repository": "WebKit",
+                "revision": "210950",
+                "revisionIdentifier": false,
+                "time": "2017-01-20T03:23:50.645Z",
+                "author": {"name": "Chris Dumez", "account": "cdu...@apple.com"},
+                "message": "some message",
+            },
+            {
+                "repository": "WebKit",
+                "revision": "210950",
+                "revisionIdentifier": 0,
+                "time": "2017-01-20T03:23:50.645Z",
+                "author": {"name": "Chris Dumez", "account": "cdu...@apple.com"},
+                "message": "some message",
+            }
+        ]
+    }
+
     const invalidCommitRevisionIdentifierCommits = {
         "workerName": "someWorker",
         "workerPassword": "somePassword",
@@ -197,8 +284,16 @@
         });
     });
 
-    it("should reject an invalid revision label", async () => {
+    it("should reject with invalid revision identifier with empty revision identifier", async () => {
         await addWorkerForReport(subversionCommit);
+        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', emptyRevisionIdentifierWithInvalidRevisionIdentifierCommits);
+        assert.strictEqual(response['status'], 'InvalidRevisionIdentifier');
+        const rows = await TestServer.database().selectAll('commits');
+        assert.strictEqual(rows.length, 0);
+    });
+
+    it("should reject an invalid revision identifier", async () => {
+        await addWorkerForReport(subversionCommit);
         const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', invalidCommitRevisionIdentifierCommits);
         assert.strictEqual(response['status'], 'InvalidRevisionIdentifier');
         const rows = await TestServer.database().selectAll('commits');
@@ -205,7 +300,7 @@
         assert.strictEqual(rows.length, 0);
     });
 
-    it("should reject with duplicated commit revision labels", async () => {
+    it("should reject with duplicated commit revision identifiers", async () => {
         await addWorkerForReport(subversionCommit);
         const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', duplicatedCommitRevisionIdentifierCommits);
         assert.strictEqual(response['status'], 'DuplicatedRevisionIdentifier');
@@ -213,6 +308,73 @@
         assert.strictEqual(rows.length, 0);
     });
 
+    it("should store two commits with empty revision identifier", async () => {
+        await addWorkerForReport(emptyRevisionIdentifierCommits);
+        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', emptyRevisionIdentifierCommits);
+        assert.strictEqual(response['status'], 'OK');
+        const db = TestServer.database();
+        const result = await Promise.all([db.selectAll('commits'), db.selectAll('committers')]);
+
+        const commits = result[0];
+        const committers = result[1];
+        assert.strictEqual(commits.length, 2);
+        assert.strictEqual(committers.length, 2);
+
+        let reportedData = emptyRevisionIdentifierCommits.commits[0];
+        assert.strictEqual(commits[0]['revision'], reportedData['revision']);
+        assert.strictEqual(commits[0]['revision_identifier'], null);
+        assert.strictEqual(commits[0]['time'].toString(), new Date('2017-01-20 02:52:34.577').toString());
+        assert.strictEqual(commits[0]['message'], reportedData['message']);
+        assert.strictEqual(commits[0]['committer'], committers[0]['id']);
+        assert.strictEqual(commits[0]['previous_commit'], null);
+        assert.strictEqual(committers[0]['name'], reportedData['author']['name']);
+        assert.strictEqual(committers[0]['account'], reportedData['author']['account']);
+
+        reportedData = emptyRevisionIdentifierCommits.commits[1];
+        assert.strictEqual(commits[1]['revision'], reportedData['revision']);
+        assert.strictEqual(commits[0]['revision_identifier'], null);
+        assert.strictEqual(commits[1]['time'].toString(), new Date('2017-01-20 03:23:50.645').toString());
+        assert.strictEqual(commits[1]['message'], reportedData['message']);
+        assert.strictEqual(commits[1]['committer'], committers[1]['id']);
+        assert.strictEqual(commits[1]['previous_commit'], commits[0]['id']);
+        assert.strictEqual(committers[1]['name'], reportedData['author']['name']);
+        assert.strictEqual(committers[1]['account'], reportedData['author']['account']);
+
+    });
+
+    it("should store two commits with one empty revision identifier and one valid revision identifier", async () => {
+        await addWorkerForReport(emptyRevisionIdentifierAndValidRevisionIdentifierCommits);
+        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', emptyRevisionIdentifierAndValidRevisionIdentifierCommits);
+        assert.strictEqual(response['status'], 'OK');
+        const db = TestServer.database();
+        const result = await Promise.all([db.selectAll('commits'), db.selectAll('committers')]);
+
+        const commits = result[0];
+        const committers = result[1];
+        assert.strictEqual(commits.length, 2);
+        assert.strictEqual(committers.length, 2);
+
+        let reportedData = emptyRevisionIdentifierAndValidRevisionIdentifierCommits.commits[0];
+        assert.strictEqual(commits[0]['revision'], reportedData['revision']);
+        assert.strictEqual(commits[0]['revision_identifier'], null);
+        assert.strictEqual(commits[0]['time'].toString(),  new Date('2017-01-20 02:52:34.577').toString());
+        assert.strictEqual(commits[0]['message'], reportedData['message']);
+        assert.strictEqual(commits[0]['committer'], committers[0]['id']);
+        assert.strictEqual(commits[0]['previous_commit'], null);
+        assert.strictEqual(committers[0]['name'], reportedData['author']['name']);
+        assert.strictEqual(committers[0]['account'], reportedData['author']['account']);
+
+        reportedData = emptyRevisionIdentifierAndValidRevisionIdentifierCommits.commits[1];
+        assert.strictEqual(commits[1]['revision'], reportedData['revision']);
+        assert.strictEqual(commits[1]['revision_identifier'], reportedData['revisionIdentifier']);
+        assert.strictEqual(commits[1]['time'].toString(),  new Date('2017-01-20 03:23:50.645').toString());
+        assert.strictEqual(commits[1]['message'], reportedData['message']);
+        assert.strictEqual(commits[1]['committer'], committers[1]['id']);
+        assert.strictEqual(commits[1]['previous_commit'], commits[0]['id']);
+        assert.strictEqual(committers[1]['name'], reportedData['author']['name']);
+        assert.strictEqual(committers[1]['account'], reportedData['author']['account']);
+    });
+
     it("should store two commits from a valid worker", () => {
         return addWorkerForReport(subversionTwoCommits).then(() => {
             return TestServer.remoteAPI().postJSON('/api/report-commits/', subversionTwoCommits);
@@ -283,7 +445,7 @@
         });
     });
 
-    it("should update an existing commit with commit label if there is one", async () => {
+    it("should update an existing commit with revision identifier if there is one", async () => {
         const db = TestServer.database();
         const reportedData = subversionCommitWithRevisionIdentifier.commits[0];
         await addWorkerForReport(subversionCommitWithRevisionIdentifier);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to