From cdcc81f315ac50c169e73afc554bf578325e736f Mon Sep 17 00:00:00 2001 From: Peter Sorowka Date: Sat, 16 Jan 2016 02:04:27 +0100 Subject: [PATCH 01/13] Bumped ascoltatori dependency and implemented new interface --- lib/server.js | 13 +++++++++---- package.json | 4 ++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/server.js b/lib/server.js index 32d577c..380edda 100755 --- a/lib/server.js +++ b/lib/server.js @@ -155,16 +155,21 @@ function Server(opts, callback) { // each Server has a dummy id for logging purposes this.id = this.modernOpts.id || shortid.generate(); - this.ascoltatore = this.modernOpts.ascoltatore || ascoltatori.build(this.modernOpts.backend); - this.ascoltatore.on("error", this.emit.bind(this)); - // initialize servers list this.servers = []; async.series([ + // async.series: wait for ascoltatore function (done) { - that.ascoltatore.on("ready", done); + + if(that.modernOpts.ascoltatore) { + that.ascoltatore = that.modernOpts.ascoltatore; + done(); + } + else { + that.ascoltatore = ascoltatori.build(that.modernOpts.backend, done); + } }, // async.series: wait for persistence diff --git a/package.json b/package.json index e21f3be..90248a8 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "underscore": "^1.7.0" }, "dependencies": { - "ascoltatori": "~0.21.1", + "ascoltatori": "cybusio/ascoltatori#node4", "async": "~0.9.0", "brfs": "1.3.0", "bunyan": "^1.4.0", @@ -96,7 +96,7 @@ "optionalDependencies": { "leveldown": "~1.4.1", "nan": "~2.0.5", - "zmq": "~2.12.0", + "zmq": "~2.14.0", "amqp": "~0.2.4", "redis": "~0.12.1", "hiredis": "^0.4.1", From 2ee5df933e16acd3ee763443687e340de2d71dfa Mon Sep 17 00:00:00 2001 From: Peter Sorowka Date: Mon, 18 Jan 2016 00:22:42 +0100 Subject: [PATCH 02/13] Bumped dependencies, added node 4 to travis - added ascoltatori-2.0.0pre1 as a dependency - bumped almost all other dependencies - minor changes needed for new version of `memdown` packet - locally building and passing on node 4, thumbs down! --- .travis.yml | 2 +- lib/persistence/memory.js | 10 +++++++++ package.json | 42 ++++++++++++++++++------------------ test/persistence/abstract.js | 2 +- 4 files changed, 33 insertions(+), 23 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0d4c0cc..eb66022 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,11 +7,11 @@ addons: packages: - g++-4.8 node_js: - - 0.10 - 0.12 - iojs-v1 - iojs-v2 - iojs-v3 + - 4 services: - redis-server - mongodb diff --git a/lib/persistence/memory.js b/lib/persistence/memory.js index 046a45b..19083f7 100644 --- a/lib/persistence/memory.js +++ b/lib/persistence/memory.js @@ -53,6 +53,16 @@ function MemoryPersistence(options, callback) { util.inherits(MemoryPersistence, LevelUpPersistence); +MemoryPersistence.prototype.close = function(cb) { + + MemDOWN.clearGlobalStore(); + + this._streams.forEach(function(stream) { + stream.destroy(); + }); + this.db.close(cb); +}; + /** * Export it as a module * diff --git a/package.json b/package.json index 90248a8..8cd79ee 100644 --- a/package.json +++ b/package.json @@ -66,40 +66,40 @@ "underscore": "^1.7.0" }, "dependencies": { - "ascoltatori": "cybusio/ascoltatori#node4", - "async": "~0.9.0", - "brfs": "1.3.0", - "bunyan": "^1.4.0", - "commander": "~2.3.0", + "ascoltatori": "=2.0.0-pre1", + "async": "~1.5.2", + "brfs": "~1.4.2", + "bunyan": "^1.5.1", + "commander": "~2.9.0", "deepcopy": "^0.3.3", "extend": "^2.0.0", - "json-buffer": "~2.0.7", - "jsonschema": "^1.0.0", - "level-sublevel": "^6.4.6", - "levelup": "^1.2.1", - "lru-cache": "~2.5.0", - "memdown": "~0.10.2", - "minimatch": "~1.0.0", + "json-buffer": "~2.0.11", + "jsonschema": "^1.0.3", + "level-sublevel": "^6.5.2", + "levelup": "^1.3.1", + "lru-cache": "~4.0.0", + "memdown": "~1.1.1", + "minimatch": "~3.0.0", "moment": "~2.8.0", "moving-average": "0.0.5", - "mqtt": "^1.3.5", + "mqtt": "^1.6.3", "mqtt-connection": "^2.1.1", - "msgpack5": "^1.3.0", - "pbkdf2-password": "^1.0.0", - "qlobber": "~0.5.0", + "msgpack5": "^3.3.0", + "pbkdf2-password": "^1.1.0", + "qlobber": "~0.5.3", "retimer": "^1.0.1", - "shortid": "^2.1.3", - "st": "~0.5.1", + "shortid": "^2.2.4", + "st": "~1.1.0", "uuid": "^2.0.1", "websocket-stream": "~2.0.2" }, "optionalDependencies": { - "leveldown": "~1.4.1", + "leveldown": "~1.4.3", "nan": "~2.0.5", "zmq": "~2.14.0", "amqp": "~0.2.4", - "redis": "~0.12.1", + "redis": "~2.4.2", "hiredis": "^0.4.1", - "mongodb": "~2.0.33" + "mongodb": "~2.1.4" } } diff --git a/test/persistence/abstract.js b/test/persistence/abstract.js index 5e2da9b..df24bb7 100644 --- a/test/persistence/abstract.js +++ b/test/persistence/abstract.js @@ -53,7 +53,7 @@ module.exports = function(create, buildOpts) { this.instance.storeRetained(packet, done); }); - it("should lookup retain messages and not matching", function(done) { + it("should lookup retain messages and not match", function(done) { this.instance.lookupRetained("hello", function(err, results) { expect(results).to.eql([]); done(); From 0e8ba836f52baed1e0a0b701353688fc82ed6cbf Mon Sep 17 00:00:00 2001 From: Peter Sorowka Date: Mon, 18 Jan 2016 00:31:56 +0100 Subject: [PATCH 03/13] Dropped iojsv3 from travis Ascoltatori does not support iojs v3 --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index eb66022..afc3c25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,6 @@ node_js: - 0.12 - iojs-v1 - iojs-v2 - - iojs-v3 - 4 services: - redis-server From a133aade308e53ec1709918c2e201baaa93a0728 Mon Sep 17 00:00:00 2001 From: Peter Sorowka Date: Mon, 18 Jan 2016 00:36:11 +0100 Subject: [PATCH 04/13] Added `engines` data --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 8cd79ee..0c0383d 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,10 @@ "bugs": { "url": "http://github.com/mcollina/mosca/issues" }, + "engines": { + "node": ">= 0.12", + "iojs": "< 3.0.0" + }, "keywords": [ "mqtt", "mqtt server", From e2bc702e83738e3298bdcd83f67a6402cda35eda Mon Sep 17 00:00:00 2001 From: Peter Sorowka Date: Mon, 18 Jan 2016 01:01:01 +0100 Subject: [PATCH 05/13] Fixed race condition in subscribe packet test --- test/abstract_server.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/test/abstract_server.js b/test/abstract_server.js index 31a0076..1ad11e4 100644 --- a/test/abstract_server.js +++ b/test/abstract_server.js @@ -131,14 +131,6 @@ module.exports = function(moscaSettings, createConnection) { } } - instance.once("published", function(packet) { - expect(packet.topic).to.be.equal("$SYS/" + instance.id + "/new/subscribes"); - var payload = JSON.parse( packet.payload.toString() ); - publishedClientId = payload.clientId; - expect(payload.topic).to.be.equal('hello'); - verify(); - }); - buildAndConnect(d, function(client) { var messageId = Math.floor(65535 * Math.random()); var subscriptions = [{ @@ -147,9 +139,14 @@ module.exports = function(moscaSettings, createConnection) { } ]; - connectedClient = client; + connectedClient = client; - client.on("suback", function(packet) { + instance.once("published", function(packet) { + expect(packet.topic).to.be.equal("$SYS/" + instance.id + "/new/subscribes"); + var payload = JSON.parse( packet.payload.toString() ); + publishedClientId = payload.clientId; + expect(payload.topic).to.be.equal('hello'); + verify(); client.disconnect(); }); From 2d19ef8c85b7acff43476fee339052218e9aa9fb Mon Sep 17 00:00:00 2001 From: Peter Sorowka Date: Mon, 18 Jan 2016 01:19:21 +0100 Subject: [PATCH 06/13] Fixed race condition in unsubcribe packet test --- test/abstract_server.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/test/abstract_server.js b/test/abstract_server.js index 1ad11e4..9f49115 100644 --- a/test/abstract_server.js +++ b/test/abstract_server.js @@ -170,17 +170,6 @@ module.exports = function(moscaSettings, createConnection) { } } - instance.once("published", function(packet) { - expect(packet.topic).to.be.equal("$SYS/" + instance.id + "/new/subscribes"); - instance.once("published", function(packet) { - expect(packet.topic).to.be.equal("$SYS/" + instance.id + "/new/unsubscribes"); - var payload = JSON.parse( packet.payload.toString() ); - expect(payload.topic).to.be.equal('hello'); - publishedClientId = payload.clientId; - verify(); - }); - }); - buildAndConnect(d, function(client) { var messageId = Math.floor(65535 * Math.random()); var subscriptions = [{ @@ -190,15 +179,25 @@ module.exports = function(moscaSettings, createConnection) { connectedClient = client; - client.on("unsuback", function(packet) { - client.disconnect(); - }); + instance.once("published", function(packet) { + + expect(packet.topic).to.be.equal("$SYS/" + instance.id + "/new/subscribes"); - client.on("suback", function(packet) { client.unsubscribe({ unsubscriptions: ["hello"], messageId: messageId }); + + instance.once("published", function(packet) { + + expect(packet.topic).to.be.equal("$SYS/" + instance.id + "/new/unsubscribes"); + var payload = JSON.parse( packet.payload.toString() ); + expect(payload.topic).to.be.equal('hello'); + publishedClientId = payload.clientId; + verify(); + + client.disconnect(); + }); }); client.subscribe({ From 260b80251bffe68edf7d4fb9400656d873dfabfc Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Mon, 18 Jan 2016 16:42:33 +0100 Subject: [PATCH 07/13] Travis fixes for node v4. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index afc3c25..6442f00 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,10 +7,10 @@ addons: packages: - g++-4.8 node_js: + - 0.10 - 0.12 - - iojs-v1 - - iojs-v2 - 4 + - 5 services: - redis-server - mongodb From 06c4af202ad7475d4db48b518c0e6ccfd23e9cd7 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Mon, 18 Jan 2016 16:52:12 +0100 Subject: [PATCH 08/13] Bumped v1.0.0-pre1 --- README.md | 2 ++ package.json | 5 ++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a01179c..f0301a8 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ Mosca   [![Build Status](https://travis-ci.org/mcollina/mosca.png * Standalone * Embedded in another Node.js application +Version 1.0.0+ targets node v0.12, v4 and v5, with partial support for node v0.10. + ## Features * MQTT 3.1 and 3.1.1 compliant. diff --git a/package.json b/package.json index 0c0383d..5b4c678 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mosca", - "version": "0.32.1", + "version": "1.0.0-pre1", "description": "MQTT broker as a module", "main": "index.js", "bin": { @@ -31,7 +31,7 @@ }, "engines": { "node": ">= 0.12", - "iojs": "< 3.0.0" + "iojs": "< 4" }, "keywords": [ "mqtt", @@ -99,7 +99,6 @@ }, "optionalDependencies": { "leveldown": "~1.4.3", - "nan": "~2.0.5", "zmq": "~2.14.0", "amqp": "~0.2.4", "redis": "~2.4.2", From 632e99cc0ef48ea3abe58d2533bd98e8023fa372 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Tue, 19 Jan 2016 09:28:12 +0100 Subject: [PATCH 09/13] Bumped v1.0.0. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5b4c678..c8b7268 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "underscore": "^1.7.0" }, "dependencies": { - "ascoltatori": "=2.0.0-pre1", + "ascoltatori": "^2.0.0", "async": "~1.5.2", "brfs": "~1.4.2", "bunyan": "^1.5.1", From d0c584d1848f584f467556fa83ed0639d13f9c65 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Tue, 19 Jan 2016 09:35:53 +0100 Subject: [PATCH 10/13] Bumped v1.0.0 --- README.md | 5 +---- package.json | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f0301a8..32ac98b 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,6 @@ Mosca   [![Build Status](https://travis-ci.org/mcollina/mosca.png * Standalone * Embedded in another Node.js application -Version 1.0.0+ targets node v0.12, v4 and v5, with partial support for node v0.10. - ## Features * MQTT 3.1 and 3.1.1 compliant. @@ -22,8 +20,7 @@ Version 1.0.0+ targets node v0.12, v4 and v5, with partial support for node v0.1 * Various storage options for QoS 1 offline packets, and subscriptions. * As fast as it is possible. * Usable inside ANY other Node.js app. -* Supports Node.js v0.10 and v0.12. -* Supports io.js v1.x and v2.x and v3.x (please do not use v3.1.0) +* version 1.0.0+ targets node v5, v4 and v0.12, with partial support for node v0.10. ##Quickstart diff --git a/package.json b/package.json index c8b7268..8b50fe4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mosca", - "version": "1.0.0-pre1", + "version": "1.0.0", "description": "MQTT broker as a module", "main": "index.js", "bin": { From 2f60e3093c038f463725d2026e31e6d6d3c67a2b Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Tue, 19 Jan 2016 09:52:54 +0100 Subject: [PATCH 11/13] Throw if config does not validate and callback is missing. Fixes https://github.com/mcollina/mosca/issues/259 --- lib/server.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/server.js b/lib/server.js index 380edda..1ed91c0 100755 --- a/lib/server.js +++ b/lib/server.js @@ -103,7 +103,11 @@ function Server(opts, callback) { if (validationResult.errors.length > 0) { var errMessage = validationResult.errors[0].message; - callback(new Error(errMessage)); + if (callback) { + callback(new Error(errMessage)); + } else { + throw new Error(errMessage); + } } modernOpts = options.populate(modernOpts); From 58322b1608cb256c1631d19775ba27a76a9ea15c Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Tue, 19 Jan 2016 09:56:57 +0100 Subject: [PATCH 12/13] Bumped v1.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8b50fe4..63e2be9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mosca", - "version": "1.0.0", + "version": "1.0.1", "description": "MQTT broker as a module", "main": "index.js", "bin": { From 08a5b2cb5ae97f73605e8687f6c086f82e098d0c Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Wed, 20 Jan 2016 11:26:04 +0100 Subject: [PATCH 13/13] Bumped 1.0.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 63e2be9..87d573e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mosca", - "version": "1.0.1", + "version": "1.0.2", "description": "MQTT broker as a module", "main": "index.js", "bin": {