From c91a3f3f7862b637c09582991faf9702b6d2059e Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 5 Sep 2014 16:04:00 +0100 Subject: [PATCH] Delay node drop immediate not working Fixes #381 --- nodes/core/core/89-delay.js | 12 ++++++------ test/nodes/core/core/89-delay_spec.js | 9 +++++++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/nodes/core/core/89-delay.js b/nodes/core/core/89-delay.js index c92ed39d1..3c4e1c014 100644 --- a/nodes/core/core/89-delay.js +++ b/nodes/core/core/89-delay.js @@ -132,15 +132,15 @@ module.exports = function(RED) { },node.rate); } } else { - var now; - if(node.lastSent) { - now = process.hrtime(node.lastSent); + var timeSinceLast; + if (node.lastSent) { + timeSinceLast = process.hrtime(node.lastSent); } - if(!node.lastSent) { // ensuring that we always send the first message + if (!node.lastSent) { // ensuring that we always send the first message node.lastSent = process.hrtime(); node.send(msg); - } else if ( ( (now[0] * SECONDS_TO_NANOS) + now[1] ) > (node.rate * MILLIS_TO_NANOS) ) { - node.lastSent = now; + } else if ( ( (timeSinceLast[0] * SECONDS_TO_NANOS) + timeSinceLast[1] ) > (node.rate * MILLIS_TO_NANOS) ) { + node.lastSent = process.hrtime(); node.send(msg); } } diff --git a/test/nodes/core/core/89-delay_spec.js b/test/nodes/core/core/89-delay_spec.js index b5f1462a6..aa2bd1164 100644 --- a/test/nodes/core/core/89-delay_spec.js +++ b/test/nodes/core/core/89-delay_spec.js @@ -218,15 +218,18 @@ describe('delayNode', function() { }); it('limits the message rate to 2 per second, 2 seconds', function(done) { + this.timeout(6000); genericRateLimitSECONDSTest(2, false, 2100, done); }); it('limits the message rate to 1 per second, 2 seconds, with drop', function(done) { + this.timeout(6000); genericRateLimitSECONDSTest(1, true, 2300, done); }); - it('limits the message rate to 2 per second, 2 seconds, with drop', function(done) { - genericRateLimitSECONDSTest(2, true, 2300, done); + it('limits the message rate to 2 per second, 5 seconds, with drop', function(done) { + this.timeout(6000); + genericRateLimitSECONDSTest(2, true, 5000, done); }); /** @@ -327,6 +330,8 @@ describe('delayNode', function() { }); it('handles bursts using a buffer', function(done) { + this.timeout(6000); + var flow = [{"id":"delayNode1","type":"delay","name":"delayNode","pauseType":"rate","timeout":5,"timeoutUnits":"seconds","rate":1000,"rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"wires":[["helperNode1"]]}, {id:"helperNode1", type:"helper", wires:[]}]; helper.load(delayNode, flow, function() {