Changeset 277671 in webkit


Ignore:
Timestamp:
May 18, 2021 12:56:03 PM (3 years ago)
Author:
zhifei_fang@apple.com
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:
Location:
trunk/Websites/perf.webkit.org
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Websites/perf.webkit.org/ChangeLog

    r277220 r277671  
     12021-05-18  Zhifei Fang  <zhifei_fang@apple.com>
     2
     3        Commits updater should ignore null revision identifier
     4        https://bugs.webkit.org/show_bug.cgi?id=225911
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * public/include/commit-updater.php:
     9        * server-tests/api-report-commits-tests.js:
     10
    1112021-05-07  Zhifei Fang  <zhifei_fang@apple.com>
    212       
  • trunk/Websites/perf.webkit.org/public/include/commit-updater.php

    r275329 r277671  
    8282
    8383            $update = array('commit' => &$commit_data, 'repository' => &$commit_info['repository']);
    84             if (array_key_exists('revisionIdentifier', $commit_info)) {
     84            if (array_key_exists('revisionIdentifier', $commit_info) && isset($commit_info['revisionIdentifier'])) {
    8585                if (array_key_exists($commit_info['revisionIdentifier'], $commit_revision_identifiers))
    8686                    $this->exit_with_error('DuplicatedRevisionIdentifier', array('commit' => $commit_info));
     
    170170        if (array_key_exists('previousCommit', $commit_info))
    171171            require_format('Revision', $commit_info['previousCommit'], '/^[A-Za-z0-9 \.]+$/');
    172         if (array_key_exists('revisionIdentifier', $commit_info))
     172        if (array_key_exists('revisionIdentifier', $commit_info) && isset($commit_info['revisionIdentifier']))
    173173            require_format('RevisionIdentifier', $commit_info['revisionIdentifier'], '/^\d+@[\w\.\-]+$/');
    174174    }
  • trunk/Websites/perf.webkit.org/server-tests/api-report-commits-tests.js

    r275329 r277671  
    111111                "message": "some message",
    112112            },
     113        ]
     114    }
     115
     116    const emptyRevisionIdentifierCommits = {
     117        "workerName": "someWorker",
     118        "workerPassword": "somePassword",
     119        "commits": [
     120            {
     121                "repository": "WebKit",
     122                "revision": "210948",
     123                "revisionIdentifier": null,
     124                "time": "2017-01-20T02:52:34.577Z",
     125                "author": {"name": "Zalan Bujtas", "account": "zalan@apple.com"},
     126                "message": "a message",
     127            },
     128            {
     129                "repository": "WebKit",
     130                "revision": "210949",
     131                "previousCommit": "210948",
     132                "revisionIdentifier": null,
     133                "time": "2017-01-20T03:23:50.645Z",
     134                "author": {"name": "Chris Dumez", "account": "cdumez@apple.com"},
     135                "message": "some message",
     136            },
     137        ]
     138    }
     139
     140    const emptyRevisionIdentifierAndValidRevisionIdentifierCommits = {
     141        "workerName": "someWorker",
     142        "workerPassword": "somePassword",
     143        "commits": [
     144            {
     145                "repository": "WebKit",
     146                "revision": "210948",
     147                "revisionIdentifier": null,
     148                "time": "2017-01-20T02:52:34.577Z",
     149                "author": {"name": "Zalan Bujtas", "account": "zalan@apple.com"},
     150                "message": "a message",
     151            },
     152            {
     153                "repository": "WebKit",
     154                "revision": "210949",
     155                "previousCommit": "210948",
     156                "revisionIdentifier": "184276@main",
     157                "time": "2017-01-20T03:23:50.645Z",
     158                "author": {"name": "Chris Dumez", "account": "cdumez@apple.com"},
     159                "message": "some message",
     160            },
     161        ]
     162    }
     163
     164    const emptyRevisionIdentifierWithInvalidRevisionIdentifierCommits = {
     165        "workerName": "someWorker",
     166        "workerPassword": "somePassword",
     167        "commits": [
     168            {
     169                "repository": "WebKit",
     170                "revision": "210948",
     171                "revisionIdentifier": null,
     172                "time": "2017-01-20T02:52:34.577Z",
     173                "author": {"name": "Zalan Bujtas", "account": "zalan@apple.com"},
     174                "message": "a message",
     175            },
     176            {
     177                "repository": "WebKit",
     178                "revision": "210949",
     179                "revisionIdentifier": "",
     180                "time": "2017-01-20T03:23:50.645Z",
     181                "author": {"name": "Chris Dumez", "account": "cdumez@apple.com"},
     182                "message": "some message",
     183            },
     184            {
     185                "repository": "WebKit",
     186                "revision": "210950",
     187                "revisionIdentifier": false,
     188                "time": "2017-01-20T03:23:50.645Z",
     189                "author": {"name": "Chris Dumez", "account": "cdumez@apple.com"},
     190                "message": "some message",
     191            },
     192            {
     193                "repository": "WebKit",
     194                "revision": "210950",
     195                "revisionIdentifier": 0,
     196                "time": "2017-01-20T03:23:50.645Z",
     197                "author": {"name": "Chris Dumez", "account": "cdumez@apple.com"},
     198                "message": "some message",
     199            }
    113200        ]
    114201    }
     
    198285    });
    199286
    200     it("should reject an invalid revision label", async () => {
     287    it("should reject with invalid revision identifier with empty revision identifier", async () => {
     288        await addWorkerForReport(subversionCommit);
     289        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', emptyRevisionIdentifierWithInvalidRevisionIdentifierCommits);
     290        assert.strictEqual(response['status'], 'InvalidRevisionIdentifier');
     291        const rows = await TestServer.database().selectAll('commits');
     292        assert.strictEqual(rows.length, 0);
     293    });
     294
     295    it("should reject an invalid revision identifier", async () => {
    201296        await addWorkerForReport(subversionCommit);
    202297        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', invalidCommitRevisionIdentifierCommits);
     
    206301    });
    207302
    208     it("should reject with duplicated commit revision labels", async () => {
     303    it("should reject with duplicated commit revision identifiers", async () => {
    209304        await addWorkerForReport(subversionCommit);
    210305        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', duplicatedCommitRevisionIdentifierCommits);
     
    212307        const rows = await TestServer.database().selectAll('commits');
    213308        assert.strictEqual(rows.length, 0);
     309    });
     310
     311    it("should store two commits with empty revision identifier", async () => {
     312        await addWorkerForReport(emptyRevisionIdentifierCommits);
     313        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', emptyRevisionIdentifierCommits);
     314        assert.strictEqual(response['status'], 'OK');
     315        const db = TestServer.database();
     316        const result = await Promise.all([db.selectAll('commits'), db.selectAll('committers')]);
     317
     318        const commits = result[0];
     319        const committers = result[1];
     320        assert.strictEqual(commits.length, 2);
     321        assert.strictEqual(committers.length, 2);
     322
     323        let reportedData = emptyRevisionIdentifierCommits.commits[0];
     324        assert.strictEqual(commits[0]['revision'], reportedData['revision']);
     325        assert.strictEqual(commits[0]['revision_identifier'], null);
     326        assert.strictEqual(commits[0]['time'].toString(), new Date('2017-01-20 02:52:34.577').toString());
     327        assert.strictEqual(commits[0]['message'], reportedData['message']);
     328        assert.strictEqual(commits[0]['committer'], committers[0]['id']);
     329        assert.strictEqual(commits[0]['previous_commit'], null);
     330        assert.strictEqual(committers[0]['name'], reportedData['author']['name']);
     331        assert.strictEqual(committers[0]['account'], reportedData['author']['account']);
     332
     333        reportedData = emptyRevisionIdentifierCommits.commits[1];
     334        assert.strictEqual(commits[1]['revision'], reportedData['revision']);
     335        assert.strictEqual(commits[0]['revision_identifier'], null);
     336        assert.strictEqual(commits[1]['time'].toString(), new Date('2017-01-20 03:23:50.645').toString());
     337        assert.strictEqual(commits[1]['message'], reportedData['message']);
     338        assert.strictEqual(commits[1]['committer'], committers[1]['id']);
     339        assert.strictEqual(commits[1]['previous_commit'], commits[0]['id']);
     340        assert.strictEqual(committers[1]['name'], reportedData['author']['name']);
     341        assert.strictEqual(committers[1]['account'], reportedData['author']['account']);
     342
     343    });
     344
     345    it("should store two commits with one empty revision identifier and one valid revision identifier", async () => {
     346        await addWorkerForReport(emptyRevisionIdentifierAndValidRevisionIdentifierCommits);
     347        const response = await TestServer.remoteAPI().postJSON('/api/report-commits/', emptyRevisionIdentifierAndValidRevisionIdentifierCommits);
     348        assert.strictEqual(response['status'], 'OK');
     349        const db = TestServer.database();
     350        const result = await Promise.all([db.selectAll('commits'), db.selectAll('committers')]);
     351
     352        const commits = result[0];
     353        const committers = result[1];
     354        assert.strictEqual(commits.length, 2);
     355        assert.strictEqual(committers.length, 2);
     356
     357        let reportedData = emptyRevisionIdentifierAndValidRevisionIdentifierCommits.commits[0];
     358        assert.strictEqual(commits[0]['revision'], reportedData['revision']);
     359        assert.strictEqual(commits[0]['revision_identifier'], null);
     360        assert.strictEqual(commits[0]['time'].toString(),  new Date('2017-01-20 02:52:34.577').toString());
     361        assert.strictEqual(commits[0]['message'], reportedData['message']);
     362        assert.strictEqual(commits[0]['committer'], committers[0]['id']);
     363        assert.strictEqual(commits[0]['previous_commit'], null);
     364        assert.strictEqual(committers[0]['name'], reportedData['author']['name']);
     365        assert.strictEqual(committers[0]['account'], reportedData['author']['account']);
     366
     367        reportedData = emptyRevisionIdentifierAndValidRevisionIdentifierCommits.commits[1];
     368        assert.strictEqual(commits[1]['revision'], reportedData['revision']);
     369        assert.strictEqual(commits[1]['revision_identifier'], reportedData['revisionIdentifier']);
     370        assert.strictEqual(commits[1]['time'].toString(),  new Date('2017-01-20 03:23:50.645').toString());
     371        assert.strictEqual(commits[1]['message'], reportedData['message']);
     372        assert.strictEqual(commits[1]['committer'], committers[1]['id']);
     373        assert.strictEqual(commits[1]['previous_commit'], commits[0]['id']);
     374        assert.strictEqual(committers[1]['name'], reportedData['author']['name']);
     375        assert.strictEqual(committers[1]['account'], reportedData['author']['account']);
    214376    });
    215377
     
    284446    });
    285447
    286     it("should update an existing commit with commit label if there is one", async () => {
     448    it("should update an existing commit with revision identifier if there is one", async () => {
    287449        const db = TestServer.database();
    288450        const reportedData = subversionCommitWithRevisionIdentifier.commits[0];
Note: See TracChangeset for help on using the changeset viewer.