From 56d5bbdf21973189f66eac839ffcf4245c0e342c Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 31 Jan 2018 15:02:10 -0800 Subject: [PATCH 1/8] Bump version to 1.9.0-pre3 --- packages/grpc-native-core/binding.gyp | 84 +++++++++++++------------- packages/grpc-native-core/deps/grpc | 2 +- packages/grpc-native-core/package.json | 2 +- 3 files changed, 44 insertions(+), 44 deletions(-) diff --git a/packages/grpc-native-core/binding.gyp b/packages/grpc-native-core/binding.gyp index 09754efd..4ff3e8cb 100644 --- a/packages/grpc-native-core/binding.gyp +++ b/packages/grpc-native-core/binding.gyp @@ -601,50 +601,50 @@ 'dependencies': [ ], 'sources': [ + 'deps/grpc/src/core/lib/gpr/alloc.cc', + 'deps/grpc/src/core/lib/gpr/arena.cc', + 'deps/grpc/src/core/lib/gpr/atm.cc', + 'deps/grpc/src/core/lib/gpr/avl.cc', + 'deps/grpc/src/core/lib/gpr/cmdline.cc', + 'deps/grpc/src/core/lib/gpr/cpu_iphone.cc', + 'deps/grpc/src/core/lib/gpr/cpu_linux.cc', + 'deps/grpc/src/core/lib/gpr/cpu_posix.cc', + 'deps/grpc/src/core/lib/gpr/cpu_windows.cc', + 'deps/grpc/src/core/lib/gpr/env_linux.cc', + 'deps/grpc/src/core/lib/gpr/env_posix.cc', + 'deps/grpc/src/core/lib/gpr/env_windows.cc', + 'deps/grpc/src/core/lib/gpr/fork.cc', + 'deps/grpc/src/core/lib/gpr/host_port.cc', + 'deps/grpc/src/core/lib/gpr/log.cc', + 'deps/grpc/src/core/lib/gpr/log_android.cc', + 'deps/grpc/src/core/lib/gpr/log_linux.cc', + 'deps/grpc/src/core/lib/gpr/log_posix.cc', + 'deps/grpc/src/core/lib/gpr/log_windows.cc', + 'deps/grpc/src/core/lib/gpr/mpscq.cc', + 'deps/grpc/src/core/lib/gpr/murmur_hash.cc', + 'deps/grpc/src/core/lib/gpr/string.cc', + 'deps/grpc/src/core/lib/gpr/string_posix.cc', + 'deps/grpc/src/core/lib/gpr/string_util_windows.cc', + 'deps/grpc/src/core/lib/gpr/string_windows.cc', + 'deps/grpc/src/core/lib/gpr/subprocess_posix.cc', + 'deps/grpc/src/core/lib/gpr/subprocess_windows.cc', + 'deps/grpc/src/core/lib/gpr/sync.cc', + 'deps/grpc/src/core/lib/gpr/sync_posix.cc', + 'deps/grpc/src/core/lib/gpr/sync_windows.cc', + 'deps/grpc/src/core/lib/gpr/thd.cc', + 'deps/grpc/src/core/lib/gpr/thd_posix.cc', + 'deps/grpc/src/core/lib/gpr/thd_windows.cc', + 'deps/grpc/src/core/lib/gpr/time.cc', + 'deps/grpc/src/core/lib/gpr/time_posix.cc', + 'deps/grpc/src/core/lib/gpr/time_precise.cc', + 'deps/grpc/src/core/lib/gpr/time_windows.cc', + 'deps/grpc/src/core/lib/gpr/tls_pthread.cc', + 'deps/grpc/src/core/lib/gpr/tmpfile_msys.cc', + 'deps/grpc/src/core/lib/gpr/tmpfile_posix.cc', + 'deps/grpc/src/core/lib/gpr/tmpfile_windows.cc', + 'deps/grpc/src/core/lib/gpr/wrap_memcpy.cc', 'deps/grpc/src/core/lib/profiling/basic_timers.cc', 'deps/grpc/src/core/lib/profiling/stap_timers.cc', - 'deps/grpc/src/core/lib/support/alloc.cc', - 'deps/grpc/src/core/lib/support/arena.cc', - 'deps/grpc/src/core/lib/support/atm.cc', - 'deps/grpc/src/core/lib/support/avl.cc', - 'deps/grpc/src/core/lib/support/cmdline.cc', - 'deps/grpc/src/core/lib/support/cpu_iphone.cc', - 'deps/grpc/src/core/lib/support/cpu_linux.cc', - 'deps/grpc/src/core/lib/support/cpu_posix.cc', - 'deps/grpc/src/core/lib/support/cpu_windows.cc', - 'deps/grpc/src/core/lib/support/env_linux.cc', - 'deps/grpc/src/core/lib/support/env_posix.cc', - 'deps/grpc/src/core/lib/support/env_windows.cc', - 'deps/grpc/src/core/lib/support/fork.cc', - 'deps/grpc/src/core/lib/support/host_port.cc', - 'deps/grpc/src/core/lib/support/log.cc', - 'deps/grpc/src/core/lib/support/log_android.cc', - 'deps/grpc/src/core/lib/support/log_linux.cc', - 'deps/grpc/src/core/lib/support/log_posix.cc', - 'deps/grpc/src/core/lib/support/log_windows.cc', - 'deps/grpc/src/core/lib/support/mpscq.cc', - 'deps/grpc/src/core/lib/support/murmur_hash.cc', - 'deps/grpc/src/core/lib/support/string.cc', - 'deps/grpc/src/core/lib/support/string_posix.cc', - 'deps/grpc/src/core/lib/support/string_util_windows.cc', - 'deps/grpc/src/core/lib/support/string_windows.cc', - 'deps/grpc/src/core/lib/support/subprocess_posix.cc', - 'deps/grpc/src/core/lib/support/subprocess_windows.cc', - 'deps/grpc/src/core/lib/support/sync.cc', - 'deps/grpc/src/core/lib/support/sync_posix.cc', - 'deps/grpc/src/core/lib/support/sync_windows.cc', - 'deps/grpc/src/core/lib/support/thd.cc', - 'deps/grpc/src/core/lib/support/thd_posix.cc', - 'deps/grpc/src/core/lib/support/thd_windows.cc', - 'deps/grpc/src/core/lib/support/time.cc', - 'deps/grpc/src/core/lib/support/time_posix.cc', - 'deps/grpc/src/core/lib/support/time_precise.cc', - 'deps/grpc/src/core/lib/support/time_windows.cc', - 'deps/grpc/src/core/lib/support/tls_pthread.cc', - 'deps/grpc/src/core/lib/support/tmpfile_msys.cc', - 'deps/grpc/src/core/lib/support/tmpfile_posix.cc', - 'deps/grpc/src/core/lib/support/tmpfile_windows.cc', - 'deps/grpc/src/core/lib/support/wrap_memcpy.cc', ], 'conditions': [ ['OS == "mac"', { diff --git a/packages/grpc-native-core/deps/grpc b/packages/grpc-native-core/deps/grpc index e5b7ddd5..1207963d 160000 --- a/packages/grpc-native-core/deps/grpc +++ b/packages/grpc-native-core/deps/grpc @@ -1 +1 @@ -Subproject commit e5b7ddd59c9a8b7a33820197abb45e12e2b65daf +Subproject commit 1207963d76020e4eee5653421df645daabc52c47 diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index 34c04339..f2223750 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -1,6 +1,6 @@ { "name": "grpc", - "version": "1.9.0-dev", + "version": "1.9.0-pre3", "author": "Google Inc.", "description": "gRPC Library for Node", "homepage": "https://grpc.io/", From e87552d918cfe6bb95b6e87fa60e4df635ea6670 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 5 Feb 2018 14:35:20 -0800 Subject: [PATCH 2/8] Fix documentation of part of the type signature for server credentials --- packages/grpc-native-core/index.d.ts | 4 ++-- packages/grpc-native-core/index.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/grpc-native-core/index.d.ts b/packages/grpc-native-core/index.d.ts index 69c423d8..2934ce92 100644 --- a/packages/grpc-native-core/index.d.ts +++ b/packages/grpc-native-core/index.d.ts @@ -573,12 +573,12 @@ declare module "grpc" { /** * The server's private key */ - privateKey: Buffer; + private_key: Buffer; /** * The server's certificate chain */ - certChain: Buffer; + cert_chain: Buffer; } /** diff --git a/packages/grpc-native-core/index.js b/packages/grpc-native-core/index.js index 7810b7bf..fa07baeb 100644 --- a/packages/grpc-native-core/index.js +++ b/packages/grpc-native-core/index.js @@ -219,8 +219,8 @@ exports.ServerCredentials = grpc.ServerCredentials; /** * A private key and certificate pair * @typedef {Object} grpc.ServerCredentials~keyCertPair - * @property {Buffer} privateKey The server's private key - * @property {Buffer} certChain The server's certificate chain + * @property {Buffer} private_key The server's private key + * @property {Buffer} cert_chain The server's certificate chain */ /** From 2f77364fe5dcfcd774e05f0a3a3dc2e6402db0a0 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Thu, 8 Feb 2018 09:48:24 -0800 Subject: [PATCH 3/8] Update version to 1.9.0 --- packages/grpc-native-core/deps/grpc | 2 +- packages/grpc-native-core/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/grpc-native-core/deps/grpc b/packages/grpc-native-core/deps/grpc index 1207963d..9b075f1c 160000 --- a/packages/grpc-native-core/deps/grpc +++ b/packages/grpc-native-core/deps/grpc @@ -1 +1 @@ -Subproject commit 1207963d76020e4eee5653421df645daabc52c47 +Subproject commit 9b075f1cc060a28306ca9f98227e01f86f7a3b91 diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index f2223750..ec5beb03 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -1,6 +1,6 @@ { "name": "grpc", - "version": "1.9.0-pre3", + "version": "1.9.0", "author": "Google Inc.", "description": "gRPC Library for Node", "homepage": "https://grpc.io/", From 51c8503c0107a3b17eef749abaa677e8ad8e0450 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Thu, 8 Feb 2018 10:21:18 -0800 Subject: [PATCH 4/8] Improve module load error message when the directory does not exist --- .../grpc-native-core/src/grpc_extension.js | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/grpc-native-core/src/grpc_extension.js b/packages/grpc-native-core/src/grpc_extension.js index 46e2721d..0ef399d1 100644 --- a/packages/grpc-native-core/src/grpc_extension.js +++ b/packages/grpc-native-core/src/grpc_extension.js @@ -31,17 +31,27 @@ var binding; try { binding = require(binding_path); } catch (e) { - var fs = require('fs'); - var searchPath = path.dirname(path.dirname(binding_path)); - var searchName = path.basename(path.dirname(binding_path)); - var foundNames = fs.readdirSync(searchPath); + let fs = require('fs'); + let searchPath = path.dirname(path.dirname(binding_path)); + let searchName = path.basename(path.dirname(binding_path)); + let foundNames; + try { + foundNames = fs.readdirSync(searchPath); + } catch (readDirError) { + let message = `The gRPC binary module was not installed +This may be fixed by running "npm rebuild" +Original error: ${e.message}`; + let error = new Error(message); + error.code = e.code; + throw error; + } if (foundNames.indexOf(searchName) === -1) { - var message = `Failed to load gRPC binary module because it was not installed for the current system + let message = `Failed to load gRPC binary module because it was not installed for the current system Expected directory: ${searchName} Found: [${foundNames.join(', ')}] This problem can often be fixed by running "npm rebuild" on the current system Original error: ${e.message}`; - var error = new Error(message); + let error = new Error(message); error.code = e.code; throw error; } else { From b7f122bb6cc236196ed6968e63f1185eabf43858 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Thu, 8 Feb 2018 11:35:20 -0800 Subject: [PATCH 5/8] Merge two lines of the error message --- packages/grpc-native-core/src/grpc_extension.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/grpc-native-core/src/grpc_extension.js b/packages/grpc-native-core/src/grpc_extension.js index 0ef399d1..9a023b7c 100644 --- a/packages/grpc-native-core/src/grpc_extension.js +++ b/packages/grpc-native-core/src/grpc_extension.js @@ -38,8 +38,7 @@ try { try { foundNames = fs.readdirSync(searchPath); } catch (readDirError) { - let message = `The gRPC binary module was not installed -This may be fixed by running "npm rebuild" + let message = `The gRPC binary module was not installed. This may be fixed by running "npm rebuild" Original error: ${e.message}`; let error = new Error(message); error.code = e.code; From 2f649e5d059efd8277b44dca0540c3d4a2a67a4a Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 9 Feb 2018 11:12:27 -0800 Subject: [PATCH 6/8] Fix usage of Protobuf.js Message type in TS file --- packages/grpc-native-core/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/grpc-native-core/index.d.ts b/packages/grpc-native-core/index.d.ts index 2934ce92..73a685cd 100644 --- a/packages/grpc-native-core/index.d.ts +++ b/packages/grpc-native-core/index.d.ts @@ -66,7 +66,7 @@ declare module "grpc" { * - Anything else becomes the relevant reflection object that ProtoBuf.js would create */ export interface GrpcObject { - [name: string]: GrpcObject | typeof Client | Message; + [name: string]: GrpcObject | typeof Client | Message; } /** From ca2704912c083249cc490d0a055dd59f831895aa Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 12 Feb 2018 16:57:48 -0800 Subject: [PATCH 7/8] Fix handling of undefined values for optional call arguments --- packages/grpc-native-core/src/client.js | 40 ++++++--- test/api/surface_test.js | 110 ++++++++++++++++++++++++ 2 files changed, 140 insertions(+), 10 deletions(-) diff --git a/packages/grpc-native-core/src/client.js b/packages/grpc-native-core/src/client.js index b9de0ab5..a917cbc9 100644 --- a/packages/grpc-native-core/src/client.js +++ b/packages/grpc-native-core/src/client.js @@ -513,13 +513,23 @@ exports.Client = Client; Client.prototype.makeUnaryRequest = function(method, serialize, deserialize, argument, metadata, options, callback) { - if (!(metadata instanceof Metadata)) { - callback = options; - options = metadata; - metadata = new Metadata(); - } if (options instanceof Function) { callback = options; + if (metadata instanceof Metadata) { + options = {}; + } else { + options = metadata; + metadata = new Metadata(); + } + } else if (metadata instanceof Function) { + callback = metadata; + metadata = new Metadata(); + options = {}; + } + if (!metadata) { + metadata = new Metadata(); + } + if (!options) { options = {}; } if (!((metadata instanceof Metadata) && @@ -599,13 +609,23 @@ Client.prototype.makeUnaryRequest = function(method, serialize, deserialize, Client.prototype.makeClientStreamRequest = function(method, serialize, deserialize, metadata, options, callback) { - if (!(metadata instanceof Metadata)) { - callback = options; - options = metadata; - metadata = new Metadata(); - } if (options instanceof Function) { callback = options; + if (metadata instanceof Metadata) { + options = {}; + } else { + options = metadata; + metadata = new Metadata(); + } + } else if (metadata instanceof Function) { + callback = metadata; + metadata = new Metadata(); + options = {}; + } + if (!metadata) { + metadata = new Metadata(); + } + if (!options) { options = {}; } if (!((metadata instanceof Metadata) && diff --git a/test/api/surface_test.js b/test/api/surface_test.js index 3bffaf8e..92802435 100644 --- a/test/api/surface_test.js +++ b/test/api/surface_test.js @@ -506,6 +506,116 @@ describe('Echo metadata', function() { done(); }); }); + describe('Call argument handling', function() { + describe('Unary call', function() { + it('Should handle undefined options', function(done) { + var call = client.unary({}, metadata, undefined, function(err, data) { + assert.ifError(err); + }); + call.on('metadata', function(metadata) { + assert.deepEqual(metadata.get('key'), ['value']); + done(); + }); + }); + it('Should handle two undefined arguments', function(done) { + var call = client.unary({}, undefined, undefined, function(err, data) { + assert.ifError(err); + }); + call.on('metadata', function(metadata) { + done(); + }); + }); + it('Should handle one undefined argument', function(done) { + var call = client.unary({}, undefined, function(err, data) { + assert.ifError(err); + }); + call.on('metadata', function(metadata) { + done(); + }); + }); + }); + describe('Client stream call', function() { + it('Should handle undefined options', function(done) { + var call = client.clientStream(metadata, undefined, function(err, data) { + assert.ifError(err); + }); + call.on('metadata', function(metadata) { + assert.deepEqual(metadata.get('key'), ['value']); + done(); + }); + call.end(); + }); + it('Should handle two undefined arguments', function(done) { + var call = client.clientStream(undefined, undefined, function(err, data) { + assert.ifError(err); + }); + call.on('metadata', function(metadata) { + done(); + }); + call.end(); + }); + it('Should handle one undefined argument', function(done) { + var call = client.clientStream(undefined, function(err, data) { + assert.ifError(err); + }); + call.on('metadata', function(metadata) { + done(); + }); + call.end(); + }); + }); + describe('Server stream call', function() { + it('Should handle undefined options', function(done) { + var call = client.serverStream({}, metadata, undefined); + call.on('data', function() {}); + call.on('metadata', function(metadata) { + assert.deepEqual(metadata.get('key'), ['value']); + done(); + }); + }); + it('Should handle two undefined arguments', function(done) { + var call = client.serverStream({}, undefined, undefined); + call.on('data', function() {}); + call.on('metadata', function(metadata) { + done(); + }); + }); + it('Should handle one undefined argument', function(done) { + var call = client.serverStream({}, undefined); + call.on('data', function() {}); + call.on('metadata', function(metadata) { + done(); + }); + }); + }); + describe('Bidi stream call', function() { + it('Should handle undefined options', function(done) { + var call = client.bidiStream(metadata, undefined); + call.on('data', function() {}); + call.on('metadata', function(metadata) { + assert.deepEqual(metadata.get('key'), ['value']); + done(); + }); + call.end(); + }); + it('Should handle two undefined arguments', function(done) { + var call = client.bidiStream(undefined, undefined); + call.on('data', function() {}); + call.on('metadata', function(metadata) { + done(); + }); + call.end(); + }); + it('Should handle one undefined argument', function(done) { + var call = client.bidiStream(undefined); + call.on('data', function() {}); + call.on('metadata', function(metadata) { + done(); + }); + call.end(); + }); + }); + }); }); describe('Client malformed response handling', function() { var server; From d6c5c4f9da506c2634724ccd032259e26ba4dceb Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 13 Feb 2018 17:50:16 -0800 Subject: [PATCH 8/8] Update version to 1.9.1 --- packages/grpc-native-core/deps/grpc | 2 +- packages/grpc-native-core/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/grpc-native-core/deps/grpc b/packages/grpc-native-core/deps/grpc index 9b075f1c..d45132a2 160000 --- a/packages/grpc-native-core/deps/grpc +++ b/packages/grpc-native-core/deps/grpc @@ -1 +1 @@ -Subproject commit 9b075f1cc060a28306ca9f98227e01f86f7a3b91 +Subproject commit d45132a2e9246b11ddd0b70c07160076d5cbbb12 diff --git a/packages/grpc-native-core/package.json b/packages/grpc-native-core/package.json index ec5beb03..28718ad0 100644 --- a/packages/grpc-native-core/package.json +++ b/packages/grpc-native-core/package.json @@ -1,6 +1,6 @@ { "name": "grpc", - "version": "1.9.0", + "version": "1.9.1", "author": "Google Inc.", "description": "gRPC Library for Node", "homepage": "https://grpc.io/",