From ed92594ecf79c29203b972e955ab99d65e2f715e Mon Sep 17 00:00:00 2001 From: Jun Mukai Date: Thu, 30 Mar 2017 11:01:10 -0700 Subject: [PATCH 1/3] Reintroduce x-goog-api-client for common-grpc This introduces this header for non-gapic APIs. Revise of #2020. --- packages/common-grpc/src/service.js | 6 +++++ packages/common-grpc/test/service.js | 34 +++++++++++++++++----------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/packages/common-grpc/src/service.js b/packages/common-grpc/src/service.js index 6d3a114fe7f..ba65ece3f2d 100644 --- a/packages/common-grpc/src/service.js +++ b/packages/common-grpc/src/service.js @@ -25,6 +25,7 @@ var duplexify = require('duplexify'); var extend = require('extend'); var googleProtoFiles = require('google-proto-files'); var grpc = require('grpc'); +var grpcVersion = require('grpc/package.json').version; var is = require('is'); var nodeutil = require('util'); var path = require('path'); @@ -178,6 +179,11 @@ function GrpcService(config, options) { this.grpcMetadata = new grpc.Metadata(); + this.grpcMetadata.add('x-goog-api-client', [ + 'gl-node/' + process.versions.node, + 'gccl/' + (config.packageJson.version || ''), + 'grpc/' + grpcVersion + ].join(' ')); if (config.grpcMetadata) { for (var prop in config.grpcMetadata) { if (config.grpcMetadata.hasOwnProperty(prop)) { diff --git a/packages/common-grpc/test/service.js b/packages/common-grpc/test/service.js index 60f9f2690e0..dad7dad34b2 100644 --- a/packages/common-grpc/test/service.js +++ b/packages/common-grpc/test/service.js @@ -21,6 +21,7 @@ var duplexify = require('duplexify'); var extend = require('extend'); var googleProtoFiles = require('google-proto-files'); var grpc = require('grpc'); +var grpcVersion = require('grpc/package.json').version; var is = require('is'); var path = require('path'); var proxyquire = require('proxyquire'); @@ -273,33 +274,40 @@ describe('GrpcService', function() { }); it('should default grpcMetadata to empty metadata', function() { - var fakeGrpcMetadata = {}; + var fakeGrpcMetadata = { + 'x-goog-api-client': [ + 'gl-node/' + process.versions.node, + 'gccl/' + CONFIG.packageJson.version, + 'grpc/' + grpcVersion].join(' ') + }; - GrpcMetadataOverride = function() { - return fakeGrpcMetadata; + GrpcMetadataOverride = function() {}; + GrpcMetadataOverride.prototype.add = function(prop, val) { + this[prop] = val; }; var config = extend({}, CONFIG); delete config.grpcMetadata; var grpcService = new GrpcService(config, OPTIONS); - assert.strictEqual(grpcService.grpcMetadata, fakeGrpcMetadata); + assert.deepEqual(grpcService.grpcMetadata, fakeGrpcMetadata); }); it('should create and localize grpcMetadata', function() { - var fakeGrpcMetadata = { - add: function(prop, value) { - assert.strictEqual(prop, Object.keys(CONFIG.grpcMetadata)[0]); - assert.strictEqual(value, CONFIG.grpcMetadata[prop]); - } - }; + var fakeGrpcMetadata = extend({ + 'x-goog-api-client': [ + 'gl-node/' + process.versions.node, + 'gccl/' + CONFIG.packageJson.version, + 'grpc/' + grpcVersion].join(' ') + }, CONFIG.grpcMetadata); - GrpcMetadataOverride = function() { - return fakeGrpcMetadata; + GrpcMetadataOverride = function() {}; + GrpcMetadataOverride.prototype.add = function(prop, val) { + this[prop] = val; }; var grpcService = new GrpcService(CONFIG, OPTIONS); - assert.strictEqual(grpcService.grpcMetadata, fakeGrpcMetadata); + assert.deepEqual(grpcService.grpcMetadata, fakeGrpcMetadata); }); it('should localize maxRetries', function() { From 8e043e7fc64f52a85b01e2c042275f709b31c1c5 Mon Sep 17 00:00:00 2001 From: Jun Mukai Date: Thu, 30 Mar 2017 11:16:23 -0700 Subject: [PATCH 2/3] Fixes - remove grpcVersion from src/service.js - style fixes --- packages/common-grpc/src/service.js | 6 +++--- packages/common-grpc/test/service.js | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/common-grpc/src/service.js b/packages/common-grpc/src/service.js index ba65ece3f2d..b850a864fca 100644 --- a/packages/common-grpc/src/service.js +++ b/packages/common-grpc/src/service.js @@ -25,7 +25,6 @@ var duplexify = require('duplexify'); var extend = require('extend'); var googleProtoFiles = require('google-proto-files'); var grpc = require('grpc'); -var grpcVersion = require('grpc/package.json').version; var is = require('is'); var nodeutil = require('util'); var path = require('path'); @@ -181,9 +180,10 @@ function GrpcService(config, options) { this.grpcMetadata.add('x-goog-api-client', [ 'gl-node/' + process.versions.node, - 'gccl/' + (config.packageJson.version || ''), - 'grpc/' + grpcVersion + 'gccl/' + config.packageJson.version, + 'grpc/' + require('grpc/package.json').version ].join(' ')); + if (config.grpcMetadata) { for (var prop in config.grpcMetadata) { if (config.grpcMetadata.hasOwnProperty(prop)) { diff --git a/packages/common-grpc/test/service.js b/packages/common-grpc/test/service.js index dad7dad34b2..b07dac01097 100644 --- a/packages/common-grpc/test/service.js +++ b/packages/common-grpc/test/service.js @@ -278,7 +278,8 @@ describe('GrpcService', function() { 'x-goog-api-client': [ 'gl-node/' + process.versions.node, 'gccl/' + CONFIG.packageJson.version, - 'grpc/' + grpcVersion].join(' ') + 'grpc/' + grpcVersion + ].join(' ') }; GrpcMetadataOverride = function() {}; @@ -298,7 +299,8 @@ describe('GrpcService', function() { 'x-goog-api-client': [ 'gl-node/' + process.versions.node, 'gccl/' + CONFIG.packageJson.version, - 'grpc/' + grpcVersion].join(' ') + 'grpc/' + grpcVersion + ].join(' ') }, CONFIG.grpcMetadata); GrpcMetadataOverride = function() {}; From c6dda85e4dfb1a3373c2676af6eb30a6e4c57498 Mon Sep 17 00:00:00 2001 From: Jun Mukai Date: Thu, 30 Mar 2017 11:21:00 -0700 Subject: [PATCH 3/3] Refactor test/service.js --- packages/common-grpc/test/service.js | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/common-grpc/test/service.js b/packages/common-grpc/test/service.js index b07dac01097..c67421eff77 100644 --- a/packages/common-grpc/test/service.js +++ b/packages/common-grpc/test/service.js @@ -21,7 +21,6 @@ var duplexify = require('duplexify'); var extend = require('extend'); var googleProtoFiles = require('google-proto-files'); var grpc = require('grpc'); -var grpcVersion = require('grpc/package.json').version; var is = require('is'); var path = require('path'); var proxyquire = require('proxyquire'); @@ -111,6 +110,11 @@ describe('GrpcService', function() { }; var ROOT_DIR = '/root/dir'; var PROTO_FILE_PATH = 'filepath.proto'; + var EXPECTED_API_CLIENT_HEADER = [ + 'gl-node/' + process.versions.node, + 'gccl/' + CONFIG.packageJson.version, + 'grpc/' + require('grpc/package.json').version + ].join(' '); var MOCK_GRPC_API = { google: {} }; MOCK_GRPC_API.google[CONFIG.service] = {}; @@ -275,11 +279,7 @@ describe('GrpcService', function() { it('should default grpcMetadata to empty metadata', function() { var fakeGrpcMetadata = { - 'x-goog-api-client': [ - 'gl-node/' + process.versions.node, - 'gccl/' + CONFIG.packageJson.version, - 'grpc/' + grpcVersion - ].join(' ') + 'x-goog-api-client': EXPECTED_API_CLIENT_HEADER }; GrpcMetadataOverride = function() {}; @@ -296,11 +296,7 @@ describe('GrpcService', function() { it('should create and localize grpcMetadata', function() { var fakeGrpcMetadata = extend({ - 'x-goog-api-client': [ - 'gl-node/' + process.versions.node, - 'gccl/' + CONFIG.packageJson.version, - 'grpc/' + grpcVersion - ].join(' ') + 'x-goog-api-client': EXPECTED_API_CLIENT_HEADER }, CONFIG.grpcMetadata); GrpcMetadataOverride = function() {};