From 18b756f3420dc99a53de5b8d3ed40ead112a22d7 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 18 Sep 2017 13:19:00 -0700 Subject: [PATCH 01/13] Add Jenkins XML reporting to tests --- package.json | 1 + packages/grpc-health-check/gulpfile.js | 2 +- packages/grpc-js-core/gulpfile.js | 2 +- packages/grpc-native-core/gulpfile.js | 2 +- packages/grpc-native-core/package.json | 1 - run-tests.sh | 3 ++- test/gulpfile.js | 2 +- 7 files changed, 7 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 1211e297..f8aaf17b 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "express": "^4.15.4", "google-auth-library": "^0.11.0", "lodash": "^4.17.4", + "mocha-jenkins-reporter": "^0.3.9", "poisson-process": "^0.2.2" }, "devDependencies": { diff --git a/packages/grpc-health-check/gulpfile.js b/packages/grpc-health-check/gulpfile.js index e66ec72a..fd0ca9af 100644 --- a/packages/grpc-health-check/gulpfile.js +++ b/packages/grpc-health-check/gulpfile.js @@ -20,5 +20,5 @@ gulp.task('health-check.link.add', 'Link local copy of grpc', ['health-check.ins gulp.task('health-check.test', 'Run health check tests', () => { - return gulp.src(`${testDir}/*.js`).pipe(mocha()); + return gulp.src(`${testDir}/*.js`).pipe(mocha({reporter: 'mocha-jenkins-reporter'})); }); diff --git a/packages/grpc-js-core/gulpfile.js b/packages/grpc-js-core/gulpfile.js index 3004c6af..e6826242 100644 --- a/packages/grpc-js-core/gulpfile.js +++ b/packages/grpc-js-core/gulpfile.js @@ -120,7 +120,7 @@ gulp.task('js.core.test.compile', 'After dep tasks, transpiles test/.', ['js.cor gulp.task('js.core.test', 'After dep tasks, runs all tests.', ['js.core.test.compile'], () => { return gulp.src(`${outDir}/test/**/*.js`) - .pipe(mocha()); + .pipe(mocha({reporter: 'mocha-jenkins-reporter'})); } ); diff --git a/packages/grpc-native-core/gulpfile.js b/packages/grpc-native-core/gulpfile.js index 00b1ffd8..10cd1f5e 100644 --- a/packages/grpc-native-core/gulpfile.js +++ b/packages/grpc-native-core/gulpfile.js @@ -36,5 +36,5 @@ gulp.task('native.core.build', 'Build native package', () => { }); gulp.task('native.core.test', 'Run all tests', ['native.core.build'], () => { - return gulp.src(`${testDir}/*.js`).pipe(mocha()); + return gulp.src(`${testDir}/*.js`).pipe(mocha({reporter: 'mocha-jenkins-reporter'})); }); diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index 26d43447..19828430 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -46,7 +46,6 @@ "istanbul": "^0.4.4", "jsdoc": "^3.3.2", "minimist": "^1.1.0", - "mocha-jenkins-reporter": "^0.2.3", "poisson-process": "^0.2.1" }, "engines": { diff --git a/run-tests.sh b/run-tests.sh index 3cc120a7..063d05b6 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -41,7 +41,8 @@ do ./node_modules/.bin/gulp setup # Rebuild libraries and run tests. - ./node_modules/.bin/gulp native.test || FAILED="true" + JUNIT_REPORT_PATH="node$version/" JUNIT_REPORT_STACK=1 ./node_modules/.bin/gulp native.test || FAILED="true" + rename 's/([^\/]+).xml/$1_sponge_log.xml/' "node$version"/* done if [ "$FAILED" != "" ] diff --git a/test/gulpfile.js b/test/gulpfile.js index b3b49b1f..7fe9f298 100644 --- a/test/gulpfile.js +++ b/test/gulpfile.js @@ -15,5 +15,5 @@ gulp.task('internal.test.link.add', 'Link local copies of grpc packages', () => }); gulp.task('internal.test.test', 'Run API-level tests', () => { - return gulp.src(`${apiTestDir}/*.js`).pipe(mocha()); + return gulp.src(`${apiTestDir}/*.js`).pipe(mocha({reporter: 'mocha-jenkins-reporter'})); }); From 9e6c7bc051aa33ab4a0f43a90a42cbbfe3947d04 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 09:57:01 -0700 Subject: [PATCH 02/13] Remove use of 'rename' in run-tests script --- run-tests.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/run-tests.sh b/run-tests.sh index 063d05b6..c05b0179 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -20,7 +20,8 @@ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | b . ~/.nvm/nvm.sh set -e -cd $(dirname $0) +repo_root=$(dirname $0) +cd $repo_root if [ "x$node_versions" = "x" ] ; then node_versions="6 7 8" @@ -30,6 +31,7 @@ fi for version in ${node_versions} do + cd $repo_root # Install and setup node for the version we want. set +e nvm install $version @@ -42,7 +44,10 @@ do # Rebuild libraries and run tests. JUNIT_REPORT_PATH="node$version/" JUNIT_REPORT_STACK=1 ./node_modules/.bin/gulp native.test || FAILED="true" - rename 's/([^\/]+).xml/$1_sponge_log.xml/' "node$version"/* + cd node$version + for file in * ; do + mv $f $(echo $f | sed 's/\(.*\)\.xml/\1_sponge_log.xml/') + done done if [ "$FAILED" != "" ] From ffa1d649b08222130705d673855d7442cfc6d465 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 11:38:43 -0700 Subject: [PATCH 03/13] Add original name aliases for generated client methods --- packages/grpc-native-core/src/client.js | 3 +++ test/api/surface_test.js | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/packages/grpc-native-core/src/client.js b/packages/grpc-native-core/src/client.js index 0d8120d3..4208da11 100644 --- a/packages/grpc-native-core/src/client.js +++ b/packages/grpc-native-core/src/client.js @@ -912,6 +912,9 @@ exports.makeClientConstructor = function(methods, serviceName, } // Associate all provided attributes with the method _.assign(ServiceClient.prototype[name], attrs); + if (attrs.originalName) { + ServiceClient.prototype[attrs.originalName] = ServiceClient.prototype[name]; + } }); ServiceClient.service = methods; diff --git a/test/api/surface_test.js b/test/api/surface_test.js index 72a20fb9..b2072fdd 100644 --- a/test/api/surface_test.js +++ b/test/api/surface_test.js @@ -215,6 +215,10 @@ describe('Client constructor building', function() { grpc.makeGenericClientConstructor(illegal_service_attrs); }, /\$/); }); + it('Should add aliases for original names', function() { + var Client = grpc.makeGenericClientConstructor(mathServiceAttrs); + assert.strictEqual(Client.prototype.add, Client.prototype.Add); + }); }); describe('waitForClientReady', function() { var server; From 14eafa2b0042778a1db4a36d8a04990f4a71fb41 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 12:42:27 -0700 Subject: [PATCH 04/13] Point to report files in kokoro config files --- run-tests.sh | 11 +++++------ test/kokoro/linux.cfg | 5 +++++ test/kokoro/macos.cfg | 5 +++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/run-tests.sh b/run-tests.sh index 41f7b6b7..d3bdd119 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -29,11 +29,12 @@ if [ ! -n "$node_versions" ] ; then node_versions="4 5 6 7 8" fi +mkdir -p reports + # TODO(mlumish): Add electron tests for version in ${node_versions} do - cd $ROOT # Install and setup node for the version we want. set +ex echo "Switching to node version $version" @@ -41,16 +42,14 @@ do nvm use $version set -ex + mkdir p "reports/node$version" + # Install dependencies and link packages together. npm install ./node_modules/.bin/gulp setup # Rebuild libraries and run tests. - JUNIT_REPORT_PATH="node$version/" JUNIT_REPORT_STACK=1 ./node_modules/.bin/gulp native.test || FAILED="true" - cd node$version - for file in * ; do - mv $f $(echo $f | sed 's/\(.*\)\.xml/\1_sponge_log.xml/') - done + JUNIT_REPORT_PATH="reports/node$version/" JUNIT_REPORT_STACK=1 ./node_modules/.bin/gulp native.test || FAILED="true" done if [ "$FAILED" != "" ] diff --git a/test/kokoro/linux.cfg b/test/kokoro/linux.cfg index 0bebf56a..99a4e8ce 100644 --- a/test/kokoro/linux.cfg +++ b/test/kokoro/linux.cfg @@ -17,3 +17,8 @@ # Location of the continuous shell script in repository. build_file: "grpc-node/kokoro.sh" timeout_mins: 60 +action { + define_artifacts { + regex: "github/grpc-node/reports/**" + } +} diff --git a/test/kokoro/macos.cfg b/test/kokoro/macos.cfg index 0bebf56a..99a4e8ce 100644 --- a/test/kokoro/macos.cfg +++ b/test/kokoro/macos.cfg @@ -17,3 +17,8 @@ # Location of the continuous shell script in repository. build_file: "grpc-node/kokoro.sh" timeout_mins: 60 +action { + define_artifacts { + regex: "github/grpc-node/reports/**" + } +} From 0f492c21d473d61646505fccac4a7f308b4db402 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 12:48:35 -0700 Subject: [PATCH 05/13] Add missing hyphen --- run-tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-tests.sh b/run-tests.sh index d3bdd119..a36afa96 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -42,7 +42,7 @@ do nvm use $version set -ex - mkdir p "reports/node$version" + mkdir -p "reports/node$version" # Install dependencies and link packages together. npm install From c56449296b6d5e5beb42177956e4d12b6f7dbd24 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 13:06:17 -0700 Subject: [PATCH 06/13] Re-add removed git clean command --- run-tests.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/run-tests.sh b/run-tests.sh index a36afa96..b51c4bcb 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -35,6 +35,7 @@ mkdir -p reports for version in ${node_versions} do + git clean -f -d -x # Install and setup node for the version we want. set +ex echo "Switching to node version $version" From f3706fd7d03ef590bd98f548d5ae179763d69a03 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 13:56:48 -0700 Subject: [PATCH 07/13] Add clean.all gulp task for test runs, go back to renaming report files --- gulpfile.js | 6 +++++- packages/grpc-health-check/gulpfile.js | 8 ++++++++ packages/grpc-js-core/gulpfile.js | 3 +++ packages/grpc-native-core/gulpfile.js | 9 +++++++++ run-tests.sh | 10 +++++++--- test/gulpfile.js | 8 ++++++++ 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 7bcf804e..2024412a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -32,7 +32,11 @@ gulp.task('link', 'Link local packages together after building', gulp.task('setup', 'One-time setup for a clean repository', ['install.all', 'link']); -gulp.task('clean', 'Delete generated files', ['js.core.clean']); +gulp.task('clean', 'Delete generated files', ['js.core.clean', 'native.core.clean']); + +gulp.task('clean.all', 'Delete all files created by tasks', + ['js.core.clean.all', 'native.core.clean.all', 'health-check.clean.all', + 'internal.test.clean.all']); gulp.task('native.test.only', 'Run tests of native code without rebuilding anything', ['native.core.test', 'internal.test.test', 'health-check.test']); diff --git a/packages/grpc-health-check/gulpfile.js b/packages/grpc-health-check/gulpfile.js index fd0ca9af..64e1fe70 100644 --- a/packages/grpc-health-check/gulpfile.js +++ b/packages/grpc-health-check/gulpfile.js @@ -3,6 +3,7 @@ const help = require('gulp-help'); const mocha = require('gulp-mocha'); const execa = require('execa'); const path = require('path'); +const del = require('del'); const gulp = help(_gulp); @@ -10,6 +11,13 @@ const healthCheckDir = __dirname; const baseDir = path.resolve(healthCheckDir, '..', '..'); const testDir = path.resolve(healthCheckDir, 'test'); +gulp.task('health-check.clean.links', 'Delete npm links', () => { + return del(path.resolve(healthCheckDir, 'node_modules/grpc')); +}); + +gulp.task('health-check.clean.all', 'Delete all code created by tasks', + ['health-check.clean.links']); + gulp.task('health-check.install', 'Install health check dependencies', () => { return execa('npm', ['install'], {cwd: healthCheckDir, stdio: 'inherit'}); }); diff --git a/packages/grpc-js-core/gulpfile.js b/packages/grpc-js-core/gulpfile.js index 18fb9e4c..39a32cf2 100644 --- a/packages/grpc-js-core/gulpfile.js +++ b/packages/grpc-js-core/gulpfile.js @@ -103,6 +103,9 @@ gulp.task('js.core.clean', 'Deletes transpiled code.', () => { return del(outDir); }); +gulp.task('js.core.clean.all', 'Deletes all files added by targets', + ['js.core.clean']); + /** * Transpiles TypeScript files in src/ to JavaScript according to the settings * found in tsconfig.json. diff --git a/packages/grpc-native-core/gulpfile.js b/packages/grpc-native-core/gulpfile.js index 10cd1f5e..a3dbb2e2 100644 --- a/packages/grpc-native-core/gulpfile.js +++ b/packages/grpc-native-core/gulpfile.js @@ -8,6 +8,7 @@ const jshint = require('gulp-jshint'); const mocha = require('gulp-mocha'); const execa = require('execa'); const path = require('path'); +const del = require('del'); const nativeCoreDir = __dirname; const srcDir = path.resolve(nativeCoreDir, 'src'); @@ -16,6 +17,14 @@ const testDir = path.resolve(nativeCoreDir, 'test'); const pkg = require('./package'); const jshintConfig = pkg.jshintConfig; +gulp.task('native.core.clean', 'Delete generated files', () => { + return del([path.resolve(nativeCoreDir, 'build'), + path.resolve(nativeCoreDir, 'ext/node')]); +}); + +gulp.task('native.core.clean.all', 'Delete all files created by tasks', + ['native.core.clean']); + gulp.task('native.core.install', 'Install native core dependencies', () => { return execa('npm', ['install', '--build-from-source'], {cwd: nativeCoreDir, stdio: 'inherit'}); diff --git a/run-tests.sh b/run-tests.sh index b51c4bcb..ca302a6e 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -35,7 +35,7 @@ mkdir -p reports for version in ${node_versions} do - git clean -f -d -x + cd $ROOT # Install and setup node for the version we want. set +ex echo "Switching to node version $version" @@ -46,11 +46,15 @@ do mkdir -p "reports/node$version" # Install dependencies and link packages together. - npm install - ./node_modules/.bin/gulp setup + ./node_modules/.bin/gulp clean.all + ./node_modules/.bin/gulp link # Rebuild libraries and run tests. JUNIT_REPORT_PATH="reports/node$version/" JUNIT_REPORT_STACK=1 ./node_modules/.bin/gulp native.test || FAILED="true" + cd "reports/node$version" + for file in * ; do + mv $f `echo $f | sed 's/\(.*\)\.xml/\1_sponge_log.xml/'` + fi done if [ "$FAILED" != "" ] diff --git a/test/gulpfile.js b/test/gulpfile.js index 7fe9f298..b66b6e01 100644 --- a/test/gulpfile.js +++ b/test/gulpfile.js @@ -3,6 +3,7 @@ const help = require('gulp-help'); const mocha = require('gulp-mocha'); const execa = require('execa'); const path = require('path'); +const del = require('del'); // gulp-help monkeypatches tasks to have an additional description parameter const gulp = help(_gulp); @@ -10,6 +11,13 @@ const gulp = help(_gulp); const testDir = __dirname; const apiTestDir = path.resolve(testDir, 'api'); +gulp.task('internal.test.clean.links', 'Delete npm links', () => { + return del(path.resolve(testDir, 'node_modules/grpc')); +}); + +gulp.task('internal.test.clean.all', 'Delete all files created by tasks', + ['internal.test.clean.links']); + gulp.task('internal.test.link.add', 'Link local copies of grpc packages', () => { return execa('npm', ['link', 'grpc'], {cwd: testDir, stdio: 'inherit'}); }); From b2881e29b4b3731a4fe76827b3c8e67777f2e263 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 14:00:59 -0700 Subject: [PATCH 08/13] Properly close shell loop --- run-tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-tests.sh b/run-tests.sh index ca302a6e..5a69763f 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -54,7 +54,7 @@ do cd "reports/node$version" for file in * ; do mv $f `echo $f | sed 's/\(.*\)\.xml/\1_sponge_log.xml/'` - fi + done done if [ "$FAILED" != "" ] From 74a181e406c1057d841d13ab443078e1b857cf76 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 14:05:37 -0700 Subject: [PATCH 09/13] Run npm install and gulp setup at the beginning of the test run --- run-tests.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/run-tests.sh b/run-tests.sh index 5a69763f..570878cb 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -29,6 +29,9 @@ if [ ! -n "$node_versions" ] ; then node_versions="4 5 6 7 8" fi +npm install +./node_modules/.bin/gulp setup + mkdir -p reports # TODO(mlumish): Add electron tests From a1c7920a00984a432a8cd1b319ab58018703629a Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 14:12:59 -0700 Subject: [PATCH 10/13] Use an nvm package at the start of testing --- run-tests.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/run-tests.sh b/run-tests.sh index 570878cb..bdddb03a 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -29,6 +29,11 @@ if [ ! -n "$node_versions" ] ; then node_versions="4 5 6 7 8" fi +set +ex +nvm install lts/* +nvm use lts/* +set -ex + npm install ./node_modules/.bin/gulp setup From 2cccacb6a9ad6c8b3abcf1ddf20310a18de41d23 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 19 Sep 2017 14:27:46 -0700 Subject: [PATCH 11/13] Fixed error in move command in test script --- run-tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-tests.sh b/run-tests.sh index bdddb03a..769c3021 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -61,7 +61,7 @@ do JUNIT_REPORT_PATH="reports/node$version/" JUNIT_REPORT_STACK=1 ./node_modules/.bin/gulp native.test || FAILED="true" cd "reports/node$version" for file in * ; do - mv $f `echo $f | sed 's/\(.*\)\.xml/\1_sponge_log.xml/'` + mv $file $(echo $file | sed 's/\(.*\)\.xml/\1_sponge_log.xml/') done done From f13346383141f257b82ac4415752c18ee830f917 Mon Sep 17 00:00:00 2001 From: Matt Kwong Date: Mon, 18 Sep 2017 15:09:26 -0700 Subject: [PATCH 12/13] Make test-grpc-submodule.sh cd to root directory --- test-grpc-submodule.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test-grpc-submodule.sh b/test-grpc-submodule.sh index 35c3f3b0..862b70c2 100755 --- a/test-grpc-submodule.sh +++ b/test-grpc-submodule.sh @@ -15,6 +15,9 @@ # # This script updates the gRPC submodule to a given reference and run tests +# cd to gRPC-node root directory +cd $(dirname $0) + cd packages/grpc-native-core/deps/grpc/ # PR references are needed to test PRs from grpc/grpc From 0cf704143c0c5e865b8eda4ca9d8b82216596ce8 Mon Sep 17 00:00:00 2001 From: Matt Kwong Date: Tue, 19 Sep 2017 16:06:20 -0700 Subject: [PATCH 13/13] Allow npm install without root --- packages/grpc-health-check/gulpfile.js | 2 +- packages/grpc-js-core/gulpfile.js | 2 +- packages/grpc-native-core/gulpfile.js | 2 +- run-tests.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/grpc-health-check/gulpfile.js b/packages/grpc-health-check/gulpfile.js index e66ec72a..72f9e515 100644 --- a/packages/grpc-health-check/gulpfile.js +++ b/packages/grpc-health-check/gulpfile.js @@ -11,7 +11,7 @@ const baseDir = path.resolve(healthCheckDir, '..', '..'); const testDir = path.resolve(healthCheckDir, 'test'); gulp.task('health-check.install', 'Install health check dependencies', () => { - return execa('npm', ['install'], {cwd: healthCheckDir, stdio: 'inherit'}); + return execa('npm', ['install', '--unsafe-perm'], {cwd: healthCheckDir, stdio: 'inherit'}); }); gulp.task('health-check.link.add', 'Link local copy of grpc', ['health-check.install'], () => { diff --git a/packages/grpc-js-core/gulpfile.js b/packages/grpc-js-core/gulpfile.js index c8b8f70f..588dabdc 100644 --- a/packages/grpc-js-core/gulpfile.js +++ b/packages/grpc-js-core/gulpfile.js @@ -81,7 +81,7 @@ function makeCompileFn(globs) { } gulp.task('js.core.install', 'Install native core dependencies', () => { - return execa('npm', ['install'], {cwd: jsCoreDir, stdio: 'inherit'}); + return execa('npm', ['install', '--unsafe-perm'], {cwd: jsCoreDir, stdio: 'inherit'}); }); /** diff --git a/packages/grpc-native-core/gulpfile.js b/packages/grpc-native-core/gulpfile.js index 00b1ffd8..c4c28e7c 100644 --- a/packages/grpc-native-core/gulpfile.js +++ b/packages/grpc-native-core/gulpfile.js @@ -17,7 +17,7 @@ const pkg = require('./package'); const jshintConfig = pkg.jshintConfig; gulp.task('native.core.install', 'Install native core dependencies', () => { - return execa('npm', ['install', '--build-from-source'], + return execa('npm', ['install', '--build-from-source', '--unsafe-perm'], {cwd: nativeCoreDir, stdio: 'inherit'}); }); diff --git a/run-tests.sh b/run-tests.sh index 530a5231..65dc5323 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -42,7 +42,7 @@ do set -ex # Install dependencies and link packages together. - npm install + npm install --unsafe-perm ./node_modules/.bin/gulp setup # Rebuild libraries and run tests.