Fix unit test and bug fix for 'pull-os-versions.js' script.
authordewei_zhu@apple.com <dewei_zhu@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Mar 2017 06:29:02 +0000 (06:29 +0000)
committerdewei_zhu@apple.com <dewei_zhu@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Mar 2017 06:29:02 +0000 (06:29 +0000)
https://bugs.webkit.org/show_bug.cgi?id=169701

Reviewed by Ryosuke Niwa.

Fix unit tests warnings on node-6.10.0.
Fix 'pull-os-versions.js' does not fetch new builds and report.

* server-tests/tools-os-build-fetcher-tests.js:
(then):
(beforeEach):
(afterEach):
* tools/pull-os-versions.js:
(syncLoop):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@214031 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Websites/perf.webkit.org/ChangeLog
Websites/perf.webkit.org/server-tests/tools-os-build-fetcher-tests.js
Websites/perf.webkit.org/tools/pull-os-versions.js

index a12cbbe..82ed260 100644 (file)
@@ -1,3 +1,20 @@
+2017-03-15  Dewei Zhu  <dewei_zhu@apple.com>
+
+        Fix unit test and bug fix for 'pull-os-versions.js' script.
+        https://bugs.webkit.org/show_bug.cgi?id=169701
+
+        Reviewed by Ryosuke Niwa.
+
+        Fix unit tests warnings on node-6.10.0.
+        Fix 'pull-os-versions.js' does not fetch new builds and report.
+
+        * server-tests/tools-os-build-fetcher-tests.js:
+        (then):
+        (beforeEach):
+        (afterEach):
+        * tools/pull-os-versions.js:
+        (syncLoop):
+
 2017-03-15  Ryosuke Niwa  <rniwa@webkit.org>
 
         In-browser and node.js implementations of RemoteAPI should share some code
index 56bcd59..759dc1d 100644 (file)
@@ -12,7 +12,8 @@ const MockLogger = require('./resources/mock-logger.js').MockLogger;
 
 
 describe('OSBuildFetcher', function() {
-    prepareServerTest(this);
+    this.timeout(5000);
+    TestServer.inject();
 
     beforeEach(function () {
         MockRemoteAPI.reset('http://build.webkit.org');
@@ -34,7 +35,7 @@ describe('OSBuildFetcher', function() {
     };
 
     const anotherSubCommitWithWebKit = {
-        'WebKit': {'revision': '141999',}
+        'WebKit': {'revision': '141999'}
     };
 
     const anotherSubCommitWithWebKitAndJavaScriptCore = {
@@ -102,6 +103,8 @@ describe('OSBuildFetcher', function() {
             assert.equal(fetcher._computeOrder('16d321'), 1603032100);
             assert.equal(fetcher._computeOrder('16D321z'), 1603032126);
             assert.equal(fetcher._computeOrder('16d321Z'), 1603032126);
+            assert.equal(fetcher._computeOrder('10.12.3 16D32'), 1603003200);
+            assert.equal(fetcher._computeOrder('10.12.3 Sierra16D32'), 1603003200);
         });
 
         it('should throw assertion error when given a invalid revision', () => {
@@ -132,12 +135,8 @@ describe('OSBuildFetcher', function() {
                 return fetchCommitsPromise;
             }).then((results) => {
                 assert.equal(results.length, 2);
-                assert.equal(results[0]['repository'], 'OSX');
-                assert.equal(results[0]['revision'], '16E321z');
-                assert.equal(results[0]['order'], 1604032126);
-                assert.equal(results[1]['repository'], 'OSX');
-                assert.equal(results[1]['revision'], '16F321');
-                assert.equal(results[1]['order'], 1605032100);
+                assert.deepEqual(results[0], {repository: 'OSX', order: 1604032126, revision: '16E321z'});
+                assert.deepEqual(results[1], {repository: 'OSX', order: 1605032100, revision: '16F321'});
             });
         });
     });
@@ -214,6 +213,16 @@ describe('OSBuildFetcher', function() {
     })
 
     describe('OSBuildFetcher.fetchAndReportNewBuilds', () => {
+
+        beforeEach(function () {
+            TestServer.database().connect({keepAlive: true});
+        });
+
+        afterEach(function () {
+            TestServer.database().disconnect();
+        });
+
+
         it('should report all build commits with sub-commits', () => {
             const logger = new MockLogger;
             const fetchter = new OSBuildFetcher(config, TestServer.remoteAPI(), slaveAuth, MockSubprocess, logger);
index da24557..d99910a 100644 (file)
@@ -26,10 +26,13 @@ function syncLoop(options)
     let osConfigList = JSON.parse(fs.readFileSync(options['--os-config-json'], 'utf8'));
     let serverConfig = JSON.parse(fs.readFileSync(options['--server-config-json'], 'utf8'));
 
-    // v3 models use the global RemoteAPI to access the perf dashboard.
-    global.RemoteAPI = new RemoteAPI(serverConfig.server);
+    const remoteAPI = new RemoteAPI(serverConfig.server);
 
-    Promise.all(osConfigList.map(osConfig => new OSBuildFetcher(osConfig, global.RemoteAPI, new Subprocess, serverConfig.slave, console))).catch((error) => {
+    Promise.all(osConfigList.map(osConfig => new OSBuildFetcher(osConfig, remoteAPI, serverConfig.slave, new Subprocess, console))).then((fetchers) => {
+        return fetchers.reduce((promise, fetcher) => {
+            return promise.then(() => fetcher.fetchAndReportNewBuilds());
+        }, Promise.resolve());
+    }).catch((error) => {
         console.error(error);
         if (typeof(error.stack) == 'string') {
             for (let line of error.stack.split('\n'))