From f03f1b52f3505b40f4570afea0e836efda8cee8b Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 7 Jan 2020 16:25:17 -0800 Subject: [PATCH 1/4] Add test for waitForReady on both implementations --- test/api/connectivity_test.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/api/connectivity_test.js b/test/api/connectivity_test.js index 042c136b..1cf6d3ff 100644 --- a/test/api/connectivity_test.js +++ b/test/api/connectivity_test.js @@ -59,6 +59,29 @@ const serviceImpl = { }; describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, function() { + it('client should not wait for ready by default', function(done) { + this.timeout(15000); + const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', grpc.credentials.createInsecure()); + const deadline = new Date(); + deadline.setSeconds(deadline.getSeconds() + 10); + disconnectedClient.unary({}, {deadline: deadline}, (error, value) =>{ + assert(error); + assert.strictEqual(error.code, grpc.status.UNAVAILABLE); + done(); + }); + }); + it('client should wait for a connection with waitForReady on', function(done) { + this.timeout(15000); + const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', grpc.credentials.createInsecure()); + const metadata = new grpc.Metadata({waitForReady: true}); + const deadline = new Date(); + deadline.setSeconds(deadline.getSeconds() + 10); + disconnectedClient.unary({}, metadata, {deadline: deadline}, (error, value) =>{ + assert(error); + assert.strictEqual(error.code, grpc.status.DEADLINE_EXCEEDED); + done(); + }); + }); describe('Reconnection', function() { let server1; let server2; From 94cdec3e73aba407c29abc059517307e0a0f5adb Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Tue, 7 Jan 2020 17:54:50 -0800 Subject: [PATCH 2/4] Fix grpc reference in tests --- test/api/connectivity_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/api/connectivity_test.js b/test/api/connectivity_test.js index 1cf6d3ff..a515f882 100644 --- a/test/api/connectivity_test.js +++ b/test/api/connectivity_test.js @@ -61,7 +61,7 @@ const serviceImpl = { describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, function() { it('client should not wait for ready by default', function(done) { this.timeout(15000); - const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', grpc.credentials.createInsecure()); + const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', clientGrpc.credentials.createInsecure()); const deadline = new Date(); deadline.setSeconds(deadline.getSeconds() + 10); disconnectedClient.unary({}, {deadline: deadline}, (error, value) =>{ @@ -72,7 +72,7 @@ describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, functio }); it('client should wait for a connection with waitForReady on', function(done) { this.timeout(15000); - const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', grpc.credentials.createInsecure()); + const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', clientGrpc.credentials.createInsecure()); const metadata = new grpc.Metadata({waitForReady: true}); const deadline = new Date(); deadline.setSeconds(deadline.getSeconds() + 10); From 3a1470ed80451f27f2cb992d19de8c384f65a1b6 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 8 Jan 2020 09:43:10 -0800 Subject: [PATCH 3/4] Fix other references --- test/api/connectivity_test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/api/connectivity_test.js b/test/api/connectivity_test.js index a515f882..b5d31943 100644 --- a/test/api/connectivity_test.js +++ b/test/api/connectivity_test.js @@ -66,19 +66,19 @@ describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, functio deadline.setSeconds(deadline.getSeconds() + 10); disconnectedClient.unary({}, {deadline: deadline}, (error, value) =>{ assert(error); - assert.strictEqual(error.code, grpc.status.UNAVAILABLE); + assert.strictEqual(error.code, clientGrpc.status.UNAVAILABLE); done(); }); }); it('client should wait for a connection with waitForReady on', function(done) { this.timeout(15000); const disconnectedClient = new TestServiceClient('foo.test.google.com:50051', clientGrpc.credentials.createInsecure()); - const metadata = new grpc.Metadata({waitForReady: true}); + const metadata = new clientGrpc.Metadata({waitForReady: true}); const deadline = new Date(); deadline.setSeconds(deadline.getSeconds() + 10); disconnectedClient.unary({}, metadata, {deadline: deadline}, (error, value) =>{ assert(error); - assert.strictEqual(error.code, grpc.status.DEADLINE_EXCEEDED); + assert.strictEqual(error.code, clientGrpc.status.DEADLINE_EXCEEDED); done(); }); }); From 596232675e2e1bd845bcc3b282bd516f95299de1 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Wed, 8 Jan 2020 16:32:50 -0800 Subject: [PATCH 4/4] Copy options when cloning metadata --- packages/grpc-js/src/metadata.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/grpc-js/src/metadata.ts b/packages/grpc-js/src/metadata.ts index 4b41aa25..630fb99a 100644 --- a/packages/grpc-js/src/metadata.ts +++ b/packages/grpc-js/src/metadata.ts @@ -174,7 +174,7 @@ export class Metadata { * @return The newly cloned object. */ clone(): Metadata { - const newMetadata = new Metadata(); + const newMetadata = new Metadata(this.options); const newInternalRepr = newMetadata.internalRepr; this.internalRepr.forEach((value, key) => {