From 3165709c2d8a67fb5b4a32f9fef3724e0d8cc584 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 18 Apr 2017 20:08:15 +0200 Subject: [PATCH 1/7] pubsub: add ability to pass timeout to publish --- packages/pubsub/src/topic.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/pubsub/src/topic.js b/packages/pubsub/src/topic.js index e5fe34c40d5..f6ed8ba8331 100644 --- a/packages/pubsub/src/topic.js +++ b/packages/pubsub/src/topic.js @@ -456,6 +456,10 @@ Topic.prototype.publish = function(messages, options, callback) { method: 'publish', }; + if (options && is.number(options.timeout)) { + protoOpts.timeout = options.timeout; + } + var reqOpts = { topic: this.name, messages: messages From 66e13b849f4a94345b04b9e0aa20a569ddcae335 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 18 Apr 2017 20:21:08 +0200 Subject: [PATCH 2/7] add name as contributer and remove a unnecessary check --- AUTHORS | 3 +++ CONTRIBUTORS | 1 + packages/pubsub/src/topic.js | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 52f7d4f7e5c..6799dc6fc58 100644 --- a/AUTHORS +++ b/AUTHORS @@ -11,3 +11,6 @@ Anand Suresh Brett Bergmann Jesse Friedman Zach Bjornson + +Greta.io +Dennis MÃ¥rtensson diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 0e0d01de59d..6fa92bcb7d4 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -16,6 +16,7 @@ Ben Stahl Brett Bergmann Burcu Dogan Cristian Almstrand +Dennis MÃ¥rtensson Gor Martsen Hector Rovira Ido Shamun diff --git a/packages/pubsub/src/topic.js b/packages/pubsub/src/topic.js index f6ed8ba8331..8b5f02f1189 100644 --- a/packages/pubsub/src/topic.js +++ b/packages/pubsub/src/topic.js @@ -456,7 +456,7 @@ Topic.prototype.publish = function(messages, options, callback) { method: 'publish', }; - if (options && is.number(options.timeout)) { + if (is.number(options.timeout)) { protoOpts.timeout = options.timeout; } From 13c08d98a7006e0aac0cfb7dd1e85a5ed935ef25 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 18 Apr 2017 20:25:43 +0200 Subject: [PATCH 3/7] fix lint error --- packages/pubsub/src/topic.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pubsub/src/topic.js b/packages/pubsub/src/topic.js index 8b5f02f1189..63cdf6bfcbc 100644 --- a/packages/pubsub/src/topic.js +++ b/packages/pubsub/src/topic.js @@ -457,7 +457,7 @@ Topic.prototype.publish = function(messages, options, callback) { }; if (is.number(options.timeout)) { - protoOpts.timeout = options.timeout; + protoOpts.timeout = options.timeout; } var reqOpts = { From e2e8f4fc569b9ed9010fb75709b18b39e96452dc Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 18 Apr 2017 20:32:22 +0200 Subject: [PATCH 4/7] tests --- packages/pubsub/test/topic.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/pubsub/test/topic.js b/packages/pubsub/test/topic.js index 2a06c2ec2e7..ad9a798037f 100644 --- a/packages/pubsub/test/topic.js +++ b/packages/pubsub/test/topic.js @@ -254,6 +254,19 @@ describe('Topic', function() { topic.publish(message, assert.ifError); }); + it('should honor the timeout setting', function(done) { + var options = { + timeout: 10 + }; + + topic.request = function(protoOpts, reqOpts) { + assert.strictEqual(protoOpts.timeout, options.timeout); + done(); + }; + + topic.publish(message, assert.ifError); + }); + it('should send correct api request for raw message', function(done) { topic.request = function(protoOpts, reqOpts) { assert.deepEqual(reqOpts.messages, [ From f96c40a070219b4286182a0240e1af7b38f7b131 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 18 Apr 2017 20:37:15 +0200 Subject: [PATCH 5/7] fix lint error in test --- packages/pubsub/test/topic.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pubsub/test/topic.js b/packages/pubsub/test/topic.js index ad9a798037f..46d0f8d7208 100644 --- a/packages/pubsub/test/topic.js +++ b/packages/pubsub/test/topic.js @@ -259,7 +259,7 @@ describe('Topic', function() { timeout: 10 }; - topic.request = function(protoOpts, reqOpts) { + topic.request = function(protoOpts) { assert.strictEqual(protoOpts.timeout, options.timeout); done(); }; From c46ca54270e9185ce4fb09f3e71941b75a5d3722 Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 18 Apr 2017 20:43:56 +0200 Subject: [PATCH 6/7] fix test --- packages/pubsub/test/topic.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pubsub/test/topic.js b/packages/pubsub/test/topic.js index 46d0f8d7208..5e432f3a021 100644 --- a/packages/pubsub/test/topic.js +++ b/packages/pubsub/test/topic.js @@ -264,7 +264,7 @@ describe('Topic', function() { done(); }; - topic.publish(message, assert.ifError); + topic.publish(message, options, assert.ifError); }); it('should send correct api request for raw message', function(done) { From 98d24aa458b2f5ad4a5676e1265c1b816425533c Mon Sep 17 00:00:00 2001 From: Dennis Date: Tue, 18 Apr 2017 22:49:24 +0200 Subject: [PATCH 7/7] added JSDocs about the timeout on the options --- packages/pubsub/src/topic.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/pubsub/src/topic.js b/packages/pubsub/src/topic.js index 63cdf6bfcbc..8bf664a0696 100644 --- a/packages/pubsub/src/topic.js +++ b/packages/pubsub/src/topic.js @@ -375,6 +375,8 @@ Topic.prototype.getSubscriptionsStream = function(options) { * @param {object=} options - Configuration object. * @param {boolean} options.raw - Enable if you require setting attributes on * your messages. + * @param {number} options.timeout - Set a maximum amount of time in + * milliseconds before giving up if no response is received. * @param {function=} callback - The callback function. * * @example @@ -435,6 +437,7 @@ Topic.prototype.getSubscriptionsStream = function(options) { * var messageIds = data[0]; * var apiResponse = data[1]; * }); + * */ Topic.prototype.publish = function(messages, options, callback) { messages = arrify(messages);