From 9208832b5ada9f80afa22363b79f8d571a38ff96 Mon Sep 17 00:00:00 2001 From: Janco Yspeert Date: Fri, 17 Sep 2021 15:20:05 +0200 Subject: [PATCH] SMC-3989: All tests now using sequential ports, base ports configurable --- test/_lib/base-config.js | 14 +- test/_lib/helpers/configuration.js | 23 ++- test/_lib/helpers/getSeq.js | 2 + test/_lib/helpers/getSeqClass.js | 48 ++++++ test/_lib/helpers/port-constants.js | 5 + test/_lib/test-25-sub-process.js | 15 +- .../01-cluster-broker-multiple-brokers.js | 101 +++++++----- test/integration/02-integration-components.js | 39 ++--- test/integration/03-integration-peers.js | 38 ++--- ...tegration-create-and-destroy-components.js | 4 +- .../05-integration-localcomponent-events.js | 7 +- .../06-integration-nocluster-events.js | 5 +- .../07-integration-security-sync.js | 21 +-- .../08-integration-security-sync-load.js | 13 +- test/integration/09-cluster-broker.js | 71 +++++---- test/integration/10-cluster-broker-dynamic.js | 147 ++++++++++-------- test/integration/11-authority-delegation.js | 21 ++- .../12-authority-delegation-negative.js | 17 +- .../13-authority-delegation-asAdmin.js | 28 ++-- .../14-authority-delegation-global.js | 22 +-- .../15-cluster-broker-deferred-listen.js | 17 +- test/integration/16-cluster-broker-web.js | 86 ++++++---- .../17-cluster-broker-component-versions.js | 14 +- ...roker-no-publish-schema-deferred-listen.js | 9 +- .../20-cluster-startup-dependencies.js | 74 ++++----- .../21-event-propogation-from-broker.js | 77 ++++----- .../22-happner-component-event-call-on.js | 63 ++++---- ...egration-security-sync-user-permissions.js | 9 +- .../24-nested-permissions-events.js | 18 ++- .../25-cluster-brokering-after-member-dies.js | 20 ++- .../26-integration-components-discover.js | 45 +++--- 31 files changed, 615 insertions(+), 458 deletions(-) create mode 100644 test/_lib/helpers/getSeq.js create mode 100644 test/_lib/helpers/getSeqClass.js create mode 100644 test/_lib/helpers/port-constants.js diff --git a/test/_lib/base-config.js b/test/_lib/base-config.js index 7290392..50c60bf 100644 --- a/test/_lib/base-config.js +++ b/test/_lib/base-config.js @@ -1,5 +1,6 @@ +const PORT_CONSTANTS = require('./helpers/port-constants'); module.exports = function( - seq, + extendedSeq, minPeers, secure, requestTimeout, @@ -8,16 +9,17 @@ module.exports = function( joinTimeout, replicate ) { + let [first, seq] = extendedSeq; var clusterRequestTimeout = requestTimeout ? requestTimeout : 10 * 1000; var clusterResponseTimeout = responseTimeout ? responseTimeout : 20 * 1000; - hosts = hosts ? hosts.split(',') : ['127.0.0.1:56001']; + hosts = hosts ? hosts.split(',') : ['127.0.0.1:' + (PORT_CONSTANTS.SWIM_BASE + first).toString()]; joinTimeout = joinTimeout || 300; return { name: 'MESH_' + seq, domain: 'DOMAIN_NAME', - port: 57000 + seq, + port: PORT_CONSTANTS.HAPPN_BASE + seq, ignoreDependenciesOnStartup: true, cluster: { requestTimeout: clusterRequestTimeout, @@ -39,8 +41,8 @@ module.exports = function( membership: { config: { host: '127.0.0.1', - port: 56000 + seq, - seed: seq === 1, + port: PORT_CONSTANTS.SWIM_BASE + seq, + seed: seq === first, seedWait: 1000, hosts, joinTimeout @@ -48,7 +50,7 @@ module.exports = function( }, proxy: { config: { - port: 55000 + seq + port: PORT_CONSTANTS.PROXY_BASE + seq } }, orchestrator: { diff --git a/test/_lib/helpers/configuration.js b/test/_lib/helpers/configuration.js index e3ec9eb..5feb565 100644 --- a/test/_lib/helpers/configuration.js +++ b/test/_lib/helpers/configuration.js @@ -1,4 +1,6 @@ +const PORT_CONSTANTS = require('./port-constants'); const _ = require('lodash'); +const getSeq = require('./getSeq'); module.exports = class Configuration extends require('./helper') { constructor() { super(); @@ -26,20 +28,25 @@ module.exports = class Configuration extends require('./helper') { return require(`../configurations/${test}/${index}`); } - construct(test, index, secure = true, minPeers, hosts, joinTimeout, replicate) { - const base = this.base(index, secure, minPeers, hosts, joinTimeout, replicate); + construct(test, extendedIndex, secure = true, minPeers, hosts, joinTimeout, replicate) { + let [seqIndex, index] = extendedIndex; + const base = this.base(index, seqIndex, secure, minPeers, hosts, joinTimeout, replicate); return _.defaultsDeep(base, this.get(test, index)); } - base(index, secure = true, minPeers, hosts, joinTimeout, replicate) { - hosts = hosts || [`${this.address.self()}:9600`, `${this.address.self()}:9601`]; + base(index, seqIndex, secure = true, minPeers, hosts, joinTimeout, replicate) { + let [first, portIndex] = seqIndex; + hosts = hosts || [ + `${this.address.self()}:` + getSeq.getSwimPort(1).toString(), + `${this.address.self()}:` + getSeq.getSwimPort(2).toString() + ]; joinTimeout = joinTimeout || 1000; replicate = replicate || ['*']; return { name: 'MESH_' + index, domain: 'DOMAIN_NAME', - port: 9700 + index, + port: PORT_CONSTANTS.HAPPN_BASE + portIndex, cluster: { requestTimeout: 10000, responseTimeout: 20000 @@ -60,8 +67,8 @@ module.exports = class Configuration extends require('./helper') { membership: { config: { host: `${this.address.self()}`, - port: 9600 + index, - seed: index === 0, + port: PORT_CONSTANTS.SWIM_BASE + portIndex, + seed: portIndex === first, seedWait: 1000, hosts, joinTimeout @@ -69,7 +76,7 @@ module.exports = class Configuration extends require('./helper') { }, proxy: { config: { - port: 9500 + index + port: PORT_CONSTANTS.PROXY_BASE + portIndex } }, orchestrator: { diff --git a/test/_lib/helpers/getSeq.js b/test/_lib/helpers/getSeq.js new file mode 100644 index 0000000..a659d92 --- /dev/null +++ b/test/_lib/helpers/getSeq.js @@ -0,0 +1,2 @@ +const GetSeq = require('./getSeqClass'); +module.exports = new GetSeq(0); diff --git a/test/_lib/helpers/getSeqClass.js b/test/_lib/helpers/getSeqClass.js new file mode 100644 index 0000000..61c9977 --- /dev/null +++ b/test/_lib/helpers/getSeqClass.js @@ -0,0 +1,48 @@ +const PORT_CONSTANTS = require('./port-constants'); +module.exports = class GetSeq { + constructor(num, first = null, constants = null) { + if (first) this.first = first; + this.num = num || 1; + this.constants = constants || PORT_CONSTANTS; + } + getNext() { + return [this.first, this.num++]; + } + + getFirst() { + this.first = this.num; + return [this.first, this.num++]; + } + getLast() { + this.last = this.num; + return [this.first, this.num++]; + } + + getCurrent() { + return [this.first, this.num - 1]; + } + + getPort(num) { + return this.constants.PROXY_BASE + this.first + num - 1; + } + getHappnPort(num) { + return this.constants.HAPPN_BASE + this.first + num - 1; + } + getSwimPort(num) { + return this.constants.SWIM_BASE + this.first + num - 1; + } + getProxyPort(num) { + return this.constants.PROXY_BASE + this.first + num - 1; + } + + getMeshName(num) { + let meshNum = this.first + num - 1; + return 'MESH_' + meshNum.toString(); + } + lookupFirst() { + return this.first; + } + lookupLast() { + return this.last; + } +}; diff --git a/test/_lib/helpers/port-constants.js b/test/_lib/helpers/port-constants.js new file mode 100644 index 0000000..8adafa0 --- /dev/null +++ b/test/_lib/helpers/port-constants.js @@ -0,0 +1,5 @@ +module.exports = { + PROXY_BASE: 6000, + HAPPN_BASE: 7000, + SWIM_BASE: 9000 +}; diff --git a/test/_lib/test-25-sub-process.js b/test/_lib/test-25-sub-process.js index 90c9d03..49935a2 100644 --- a/test/_lib/test-25-sub-process.js +++ b/test/_lib/test-25-sub-process.js @@ -3,14 +3,23 @@ const libDir = require('./lib-dir'); const HappnerCluster = require('../..'); const users = require('./users'); let localInstance; +const GetSeq = require('./helpers/getSeqClass'); +let getSeq; + +let inputArgs = process.argv.slice(2).map(num => parseInt(num)); + (async () => { - if (process.argv[2] === '2') { - await startInternal(2, 2); + if (inputArgs[0] === 2) { + getSeq = new GetSeq(inputArgs[1] + 1, inputArgs[1]); + let next = getSeq.getNext(); + await startInternal(next, 2); await users.add(localInstance, 'username', 'password'); await users.allowMethod(localInstance, 'username', 'breakingComponent', 'happyMethod'); await users.allowMethod(localInstance, 'username', 'breakingComponent', 'breakingMethod'); } else { - await startInternal(3, 2); + getSeq = new GetSeq(inputArgs[1] + inputArgs[0] - 1, inputArgs[1]); + let next = getSeq.getNext(); + await startInternal(next, 2); } })(); async function startInternal(id, clusterMin) { diff --git a/test/functional/01-cluster-broker-multiple-brokers.js b/test/functional/01-cluster-broker-multiple-brokers.js index 074e4a7..53c20d3 100644 --- a/test/functional/01-cluster-broker-multiple-brokers.js +++ b/test/functional/01-cluster-broker-multiple-brokers.js @@ -11,7 +11,8 @@ var users = require('../_lib/users'); var testclient = require('../_lib/client'); var path = require('path'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); - +const getSeq = require('../_lib/helpers/getSeq'); +const wait = require('await-delay'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(600000); const previousLogLevel = process.env.LOG_LEVEL || 'info'; @@ -50,13 +51,13 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { var brokerEventData1 = []; var processEventData = []; - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(instance => { edgeInstance = instance; return users.add(edgeInstance[0], 'username', 'password'); }) .then(function() { - return startInternal(3, 3); + return startInternal(getSeq.getNext(), 3); }) .then(function() { return new Promise(resolve => { @@ -67,20 +68,26 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowDataPath(edgeInstance[0], 'username', 'test/event/*'); }) .then(function() { + console.log('STARTING LINER START STOP'); return linearStartStopProcess( - 'hosts=127.0.0.1:56001 port=55005 proxyport=57005 membershipport=56005 seed=false secure=true joinTimeout=300 membername=external-1', + `hosts=127.0.0.1:${getSeq.getSwimPort(1)} port=${getSeq.getHappnPort( + 5 + )} proxyport=${getSeq.getProxyPort(5)} membershipport=${getSeq.getSwimPort( + 5 + )} seed=false secure=true joinTimeout=300 membername=external-1`, 10, 5000 ); }) .then(function() { + console.log('AFTER CHURN'); adminUserDisconnectionsOnProcessAfterLoginChurn = adminUserDisconnectionsOnProcess; return new Promise(resolve => { setTimeout(resolve, 5000); }); }) .then(function() { - return testclient.create('username', 'password', 55005); + return testclient.create('username', 'password', getSeq.getPort(5)); }) .then(function(client) { processClient = client; @@ -90,7 +97,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55003); + return testclient.create('username', 'password', getSeq.getPort(3)); }) .then(function(client) { internalClient = client; @@ -100,7 +107,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { brokerClient = client; @@ -110,7 +117,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { brokerClient1 = client; @@ -189,12 +196,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { var thisLocalClient; var gotToFinalAttempt = false; - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(instance => { edgeInstance = instance; return new Promise((resolve, reject) => { testclient - .create('username', 'password', 55001) + .create('username', 'password', getSeq.getPort(1)) .then(() => { reject(new Error('not meant to happen')); }) @@ -211,7 +218,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return startInternal(3, 3); + return startInternal(getSeq.getNext(), 3); }) .then(function() { return users.allowMethod(edgeInstance[0], 'username', 'brokerComponent', 'directMethod'); @@ -239,7 +246,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55003); + return testclient.create('username', 'password', getSeq.getPort(3)); }) .then(function(client) { thisLocalClient = client; @@ -251,7 +258,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .then(function() { thisLocalClient.disconnect(); - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { thisClient = client; @@ -259,17 +266,17 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.brokerComponent.directMethod(); }) .then(function(result) { - expect(result).to.be('MESH_1:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); //call an injected method return thisClient.exchange.remoteComponent.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_3:remoteComponent:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(3) + ':remoteComponent:brokeredMethod1'); return thisClient.exchange.remoteComponent1.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_3:remoteComponent1:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(3) + ':remoteComponent1:brokeredMethod1'); return users.denyMethod(edgeInstance[0], 'username', 'remoteComponent', 'brokeredMethod1'); }) .then(function() { @@ -288,7 +295,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { null, { host: 'localhost', - port: 55001, + port: getSeq.getPort(1), username: 'username', password: 'password' }, @@ -321,12 +328,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .sort() ).to.eql([ - '1 (HappnerClient) ignoring brokered description for peer: MESH_2\n', - '2 (HappnerClient) ignoring brokered description for peer: MESH_1\n', - '3 (HappnerClient) ignoring brokered description for peer: MESH_1\n', - '3 (HappnerClient) ignoring brokered description for peer: MESH_2\n', - '4 (HappnerClient) ignoring brokered description for peer: MESH_1\n', - '4 (HappnerClient) ignoring brokered description for peer: MESH_2\n' + `1 (HappnerClient) ignoring brokered description for peer: ${getSeq.getMeshName(2)}\n`, + `2 (HappnerClient) ignoring brokered description for peer: ${getSeq.getMeshName(1)}\n`, + `3 (HappnerClient) ignoring brokered description for peer: ${getSeq.getMeshName(1)}\n`, + `3 (HappnerClient) ignoring brokered description for peer: ${getSeq.getMeshName(2)}\n`, + `4 (HappnerClient) ignoring brokered description for peer: ${getSeq.getMeshName(1)}\n`, + `4 (HappnerClient) ignoring brokered description for peer: ${getSeq.getMeshName(2)}\n` ]); process.env.LOG_LEVEL = previousLogLevel; thisClient.disconnect(); @@ -339,13 +346,13 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { var edgeInstance; var eventData = []; - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(instance => { edgeInstance = instance; return users.add(edgeInstance[0], 'username', 'password'); }) .then(function() { - return startInternal(3, 3); + return startInternal(getSeq.getNext(), 3); }) .then(function() { return users.allowDataPath(edgeInstance[0], 'username', 'test/event'); @@ -356,7 +363,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55003); + return testclient.create('username', 'password', getSeq.getPort(3)); }) .then(function(client) { thisLocalClient = client; @@ -397,8 +404,10 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { path: brokerComponentPath } }; + console.log(JSON.stringify(config, null, 2)); config.happn.services.orchestrator = { config: { + mininumPeers: config.happn.services.orchestrator.config.minimumPeers, replicate: ['test/**'] } }; @@ -425,10 +434,13 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { path: libDir + 'integration-09-remote-component-1' } }; + console.log(JSON.stringify(config, null, 2)); + config.cluster = config.cluster || {}; config.cluster.dependenciesSatisfiedDeferListen = true; config.happn.services.orchestrator = { config: { + mininumPeers: config.happn.services.orchestrator.config.minimumPeers, replicate: ['test/**'] } }; @@ -467,7 +479,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { .then(function(instance) { servers.push(instance); instances.push(instance); - return HappnerCluster.create(remoteInstanceConfig(id + 1, clusterMin + 1, dynamic)); + return HappnerCluster.create( + remoteInstanceConfig(getSeq.getNext(), clusterMin + 1, dynamic) + ); }) .then(function(instance) { servers.push(instance); @@ -487,7 +501,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { .then(function(instance) { servers.push(instance); instances.push(instance); - return HappnerCluster.create(localInstanceConfig(id + 1, clusterMin + 1, dynamic)); + return HappnerCluster.create( + localInstanceConfig(getSeq.getNext(), clusterMin + 1, dynamic) + ); }) .then(function(instance) { servers.push(instance); @@ -513,21 +529,24 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return new Promise(function(resolve, reject) { try { if (currentProc) currentProc.kill(); - var cp = require('child_process'); - var paramsSplit = params.split('membername='); - var processParams = paramsSplit[0] + 'host=127.0.0.1'; - var forkPath = path.resolve(['test', 'cli', 'cluster-node.js'].join(path.sep)); + wait(500).then(() => { + var cp = require('child_process'); + var paramsSplit = params.split('membername='); + var processParams = paramsSplit[0] + 'host=127.0.0.1'; + var forkPath = path.resolve(['test', 'cli', 'cluster-node.js'].join(path.sep)); - currentProc = cp.fork(forkPath, processParams.split(' '), { - silent: true - }); - currentProc.stdout.on('data', function(data) { - var dataString = data.toString(); - if (dataString.indexOf("'_ADMIN' disconnected") > -1) adminUserDisconnectionsOnProcess++; + currentProc = cp.fork(forkPath, processParams.split(' '), { + silent: true + }); + currentProc.stdout.on('data', function(data) { + var dataString = data.toString(); + if (dataString.indexOf("'_ADMIN' disconnected") > -1) + adminUserDisconnectionsOnProcess++; + }); + return setTimeout(function() { + resolve(currentProc); + }, timeout); }); - return setTimeout(function() { - resolve(currentProc); - }, timeout); } catch (e) { reject(e); } diff --git a/test/integration/02-integration-components.js b/test/integration/02-integration-components.js index 9151588..cea75ab 100644 --- a/test/integration/02-integration-components.js +++ b/test/integration/02-integration-components.js @@ -6,10 +6,10 @@ var libDir = require('../_lib/lib-dir'); var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); const delay = require('await-delay'); +var getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); - var servers, localInstance; function localInstanceConfig(seq) { @@ -106,9 +106,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); Promise.all([ - HappnerCluster.create(localInstanceConfig(1)), - HappnerCluster.create(remoteInstance1Config(2)), - HappnerCluster.create(remoteInstance2Config(3)) + HappnerCluster.create(localInstanceConfig(getSeq.getFirst())), + HappnerCluster.create(remoteInstance1Config(getSeq.getNext())), + HappnerCluster.create(remoteInstance2Config(getSeq.getNext())) ]) .then(function(_servers) { servers = _servers; @@ -140,11 +140,10 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { results[ await localInstance.exchange.localComponent1.callDependency('remoteComponent3', 'method1') ] = 1; - - expect(results).to.eql({ - 'MESH_2:component3:method1': 1, - 'MESH_3:component3:method1': 1 - }); + let expectedResults = {}; + expectedResults[getSeq.getMeshName(2) + ':component3:method1'] = 1; + expectedResults[getSeq.getMeshName(3) + ':component3:method1'] = 1; + expect(results).to.eql(expectedResults); }); it('overwrites local components that are wrong version', function(done) { @@ -182,12 +181,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { localInstance.exchange.localComponent2.listTestEvents(function(e, result) { if (e) return done(e); - + let expectedResults = {}; + expectedResults[ + `/_events/DOMAIN_NAME/remoteComponent3/testevent/${getSeq.getMeshName(3)}` + ] = 1; + expectedResults[ + `/_events/DOMAIN_NAME/remoteComponent3/testevent/${getSeq.getMeshName(2)}` + ] = 1; try { - expect(result).to.eql({ - '/_events/DOMAIN_NAME/remoteComponent3/testevent/MESH_3': 1, - '/_events/DOMAIN_NAME/remoteComponent3/testevent/MESH_2': 1 - }); + expect(result).to.eql(expectedResults); done(); } catch (e) { done(e); @@ -198,11 +200,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { it('does not receive events from incompatible component versions', function(done) { localInstance.exchange.localComponent2.listTestCompatibleEvents(function(e, result) { if (e) return done(e); - + let expectedResults = {}; + expectedResults[ + `/_events/DOMAIN_NAME/remoteComponent5/testevent/v2/${getSeq.getMeshName(3)}` + ] = 1; try { - expect(result).to.eql({ - '/_events/DOMAIN_NAME/remoteComponent5/testevent/v2/MESH_3': 1 - }); + expect(result).to.eql(expectedResults); done(); } catch (e) { done(e); diff --git a/test/integration/03-integration-peers.js b/test/integration/03-integration-peers.js index f6531f3..10a7fa2 100644 --- a/test/integration/03-integration-peers.js +++ b/test/integration/03-integration-peers.js @@ -6,10 +6,10 @@ var unique = require('array-unique'); var libDir = require('../_lib/lib-dir'); var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); +var getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); - var servers, localInstance; function localInstanceConfig(seq) { @@ -44,12 +44,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { beforeEach('start cluster', function(done) { this.timeout(20000); - Promise.all([ - HappnerCluster.create(localInstanceConfig(1)), - HappnerCluster.create(remoteInstanceConfig(2)), - HappnerCluster.create(remoteInstanceConfig(3)), - HappnerCluster.create(remoteInstanceConfig(4)) + HappnerCluster.create(localInstanceConfig(getSeq.getFirst())), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext())), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext())), + HappnerCluster.create(remoteInstanceConfig(getSeq.getLast())) ]) .then(function(_servers) { servers = _servers; @@ -76,11 +75,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ]) .then(function(replies) { var list = unique(replies).sort(); - expect(list).to.eql([ - 'MESH_2:component3:method1', - 'MESH_3:component3:method1', - 'MESH_4:component3:method1' - ]); + expect(list).to.eql([2, 3, 4].map(num => getSeq.getMeshName(num) + ':component3:method1')); }) .then(function() { var server = servers.pop(); @@ -100,7 +95,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .then(function(replies) { var list = unique(replies).sort(); - expect(list).to.eql(['MESH_2:component3:method1', 'MESH_3:component3:method1']); + expect(list).to.eql([2, 3].map(num => getSeq.getMeshName(num) + ':component3:method1')); done(); }) .catch(done); @@ -118,14 +113,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ]) .then(function(replies) { var list = unique(replies).sort(); - expect(list).to.eql([ - 'MESH_2:component3:method1', - 'MESH_3:component3:method1', - 'MESH_4:component3:method1' - ]); + expect(list).to.eql( + [2, 3, 4].map(num => getSeq.getMeshName(num) + ':component3:method1').sort() + ); }) .then(function() { - return HappnerCluster.create(remoteInstanceConfig(5)); + return HappnerCluster.create(remoteInstanceConfig(getSeq.getLast())); }) .then(function(server) { servers.push(server); @@ -146,12 +139,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .then(function(replies) { var list = unique(replies).sort(); - expect(list).to.eql([ - 'MESH_2:component3:method1', - 'MESH_3:component3:method1', - 'MESH_4:component3:method1', - 'MESH_5:component3:method1' - ]); + expect(list).to.eql( + [2, 3, 4, 5].map(num => getSeq.getMeshName(num) + ':component3:method1').sort() + ); done(); }) .catch(done); diff --git a/test/integration/04-integration-create-and-destroy-components.js b/test/integration/04-integration-create-and-destroy-components.js index 28ad290..8a1dc12 100644 --- a/test/integration/04-integration-create-and-destroy-components.js +++ b/test/integration/04-integration-create-and-destroy-components.js @@ -6,6 +6,7 @@ var libDir = require('../_lib/lib-dir'); var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); var minPeers = 1; +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); @@ -31,8 +32,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { beforeEach('start cluster', function(done) { this.timeout(20000); - - Promise.all([HappnerCluster.create(localInstanceConfig(1))]) + Promise.all([HappnerCluster.create(localInstanceConfig(getSeq.getFirst()))]) .then(function(_servers) { servers = _servers; localInstance = servers[0]; diff --git a/test/integration/05-integration-localcomponent-events.js b/test/integration/05-integration-localcomponent-events.js index 628a87b..531b0ae 100644 --- a/test/integration/05-integration-localcomponent-events.js +++ b/test/integration/05-integration-localcomponent-events.js @@ -1,20 +1,21 @@ var HappnerCluster = require('../..'); - +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { var server; this.timeout(20000); - + getSeq.getFirst(); before('start server', function(done) { this.timeout(20000); HappnerCluster.create({ name: 'NODE-01', domain: 'DOMAIN_NAME', + port: getSeq.getPort(1), happn: { services: { membership: { config: { seed: true, - hosts: ['localhost:56000'] + hosts: ['localhost:' + getSeq.getSwimPort(1).toString()] } } } diff --git a/test/integration/06-integration-nocluster-events.js b/test/integration/06-integration-nocluster-events.js index d54c1e7..8469b2c 100644 --- a/test/integration/06-integration-nocluster-events.js +++ b/test/integration/06-integration-nocluster-events.js @@ -5,6 +5,7 @@ var expect = require('expect.js'); var libDir = require('../_lib/lib-dir'); var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); @@ -44,8 +45,8 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); Promise.all([ - HappnerCluster.create(localInstanceConfig(1)), - HappnerCluster.create(remoteInstanceConfig(2)) + HappnerCluster.create(localInstanceConfig(getSeq.getFirst())), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext())) ]) .then(function(_servers) { servers = _servers; diff --git a/test/integration/07-integration-security-sync.js b/test/integration/07-integration-security-sync.js index 9228388..f2eda61 100644 --- a/test/integration/07-integration-security-sync.js +++ b/test/integration/07-integration-security-sync.js @@ -9,6 +9,7 @@ var stopCluster = require('../_lib/stop-cluster'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); var users = require('../_lib/users'); var client = require('../_lib/client'); +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); @@ -41,10 +42,10 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { before('start cluster', function(done) { this.timeout(20000); - HappnerCluster.create(serverConfig(1, 1)) + HappnerCluster.create(serverConfig(getSeq.getFirst(), 1)) .then(function(server) { servers.push(server); - return HappnerCluster.create(serverConfig(2, 2)); + return HappnerCluster.create(serverConfig(getSeq.getNext(), 2)); }) .then(function(server) { servers.push(server); @@ -59,7 +60,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { before('start client1', function(done) { client - .create('username', 'password', 55001) + .create('username', 'password', getSeq.getPort(1)) .then(function(client) { client1 = client; done(); @@ -69,7 +70,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { before('start client2', function(done) { client - .create('username', 'password', 55002) + .create('username', 'password', getSeq.getPort(2)) .then(function(client) { client2 = client; done(); @@ -437,7 +438,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .then(function() { - return performAction(55002, 'username1', 'component1', 'method1'); + return performAction(getSeq.getPort(2), 'username1', 'component1', 'method1'); }) .then(function() { @@ -450,7 +451,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { .then(function() { return new Promise(function(resolve, reject) { - performAction(55002, 'username1', 'component1', 'method1') + performAction(getSeq.getPort(2), 'username1', 'component1', 'method1') .then(function() { reject(new Error('missing AccessDeniedError 1')); }) @@ -504,7 +505,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .then(function() { - return performAction(55002, 'username2', 'component1', 'method1'); + return performAction(getSeq.getPort(2), 'username2', 'component1', 'method1'); }) .then(function() { @@ -517,7 +518,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { .then(function() { return new Promise(function(resolve, reject) { - performAction(55002, 'username2', 'component1', 'method1') + performAction(getSeq.getPort(2), 'username2', 'component1', 'method1') .then(function() { reject(new Error('missing AccessDeniedError 1')); }) @@ -571,7 +572,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .then(function() { - return performAction(55002, 'username3', 'component1', 'method1'); + return performAction(getSeq.getPort(2), 'username3', 'component1', 'method1'); }) .then(function() { @@ -584,7 +585,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { .then(function() { return new Promise(function(resolve, reject) { - performAction(55002, 'username3', 'component1', 'method1') + performAction(getSeq.getPort(2), 'username3', 'component1', 'method1') .then(function() { reject(new Error('missing AccessDeniedError 1')); }) diff --git a/test/integration/08-integration-security-sync-load.js b/test/integration/08-integration-security-sync-load.js index 03fa0b9..30b67b7 100644 --- a/test/integration/08-integration-security-sync-load.js +++ b/test/integration/08-integration-security-sync-load.js @@ -9,6 +9,7 @@ var stopCluster = require('../_lib/stop-cluster'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); var users = require('../_lib/users'); var client = require('../_lib/client'); +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); @@ -60,14 +61,14 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { before('start cluster', function(done) { this.timeout(20000); - HappnerCluster.create(serverConfig(1, 1)) + HappnerCluster.create(serverConfig(getSeq.getFirst(), 1)) .then(function(server) { servers.push(server); return Promise.all([ - HappnerCluster.create(serverConfig(2, 5)), - HappnerCluster.create(serverConfig(3, 5)), - HappnerCluster.create(serverConfig(4, 5)), - HappnerCluster.create(serverConfig(5, 5)) + HappnerCluster.create(serverConfig(getSeq.getNext(), 5)), + HappnerCluster.create(serverConfig(getSeq.getNext(), 5)), + HappnerCluster.create(serverConfig(getSeq.getNext(), 5)), + HappnerCluster.create(serverConfig(getSeq.getNext(), 5)) ]); }) .then(function(_servers) { @@ -116,7 +117,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { var promises = []; let username; for (username in userlist) { - port = 55000 + (++i % servers.length) + 1; + port = getSeq.getPort((++i % servers.length) + 1); promises.push(client.create(username, 'password', port)); } Promise.all(promises) diff --git a/test/integration/09-cluster-broker.js b/test/integration/09-cluster-broker.js index 4f0a6d4..4be9ac1 100644 --- a/test/integration/09-cluster-broker.js +++ b/test/integration/09-cluster-broker.js @@ -7,12 +7,13 @@ var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); var users = require('../_lib/users'); var testclient = require('../_lib/client'); +const getSeq = require('../_lib/helpers/getSeq'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); + //var log = require('why-is-node-running'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(40000); - var servers = [], localInstance; @@ -112,11 +113,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterInternalFirst(replicate) { return new Promise(function(resolve, reject) { - startInternal(1, 1, replicate) + startInternal(getSeq.getFirst(), 1, replicate) .then(function(server) { servers.push(server); localInstance = server; - return startEdge(2, 2, replicate); + return startEdge(getSeq.getNext(), 2, replicate); }) .then(function(server) { servers.push(server); @@ -129,10 +130,10 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterEdgeFirst() { return new Promise(function(resolve, reject) { - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(function(server) { servers.push(server); - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function(server) { servers.push(server); @@ -172,17 +173,17 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; return testRestCall( thisClient.data.session.token, - 55002, + getSeq.getPort(2), 'remoteComponent1', 'brokeredMethod1', null, - 'MESH_1:remoteComponent1:brokeredMethod1:true' + getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod1:true' ); }) .then(done); @@ -235,7 +236,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; @@ -243,16 +244,16 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.brokerComponent.directMethod(); }) .then(function(result) { - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); //call an injected method return thisClient.exchange.remoteComponent.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(1) + ':remoteComponent:brokeredMethod1'); return thisClient.exchange.remoteComponent1.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent1:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod1'); setTimeout(done, 2000); }) .catch(done); @@ -279,7 +280,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; @@ -287,16 +288,16 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.brokerComponent.directMethod(); }) .then(function(result) { - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); //call an injected method return thisClient.exchange.remoteComponent.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(1) + ':remoteComponent:brokeredMethod1'); return thisClient.exchange.remoteComponent1.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent1:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod1'); return users.denyMethod(localInstance, 'username', 'remoteComponent', 'brokeredMethod1'); }) .then(function() { @@ -324,17 +325,17 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { //first test our broker components methods are directly callable client.exchange.brokerComponent.directMethod(function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_1:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); //call an injected method client.exchange.remoteComponent.brokeredMethod1(function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_2:remoteComponent:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1'); setTimeout(done, 2000); }); }); @@ -356,12 +357,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { client.exchange.remoteComponent.brokeredMethod3('test', function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_2:remoteComponent:brokeredMethod3:test'); + expect(result).to.be(getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod3:test'); setTimeout(done, 2000); }); }) @@ -387,19 +388,19 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowEvent(localInstance, 'username', 'remoteComponent', '/brokered/event'); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { //first test our broker components methods are directly callable client.exchange.brokerComponent.directMethod(function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); client.event.remoteComponent.on( '/brokered/event', function(data) { expect(data).to.eql({ - brokered: { event: { data: { from: 'MESH_1' } } } + brokered: { event: { data: { from: getSeq.getMeshName(1) } } } }); setTimeout(done, 2000); }, @@ -407,7 +408,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { expect(e).to.be(null); client.exchange.remoteComponent.brokeredEventEmitMethod(function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_1:remoteComponent:brokeredEventEmitMethod'); + expect(result).to.be( + getSeq.getMeshName(1) + ':remoteComponent:brokeredEventEmitMethod' + ); }); } ); @@ -422,11 +425,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { let edgeClient, internalClient; startClusterInternalFirst(['/test/**']) .then(function() { - return testclient.create('_ADMIN', 'happn', 55002); + return testclient.create('_ADMIN', 'happn', getSeq.getPort(2)); }) .then(function(client) { edgeClient = client; - return testclient.create('_ADMIN', 'happn', 55001); + return testclient.create('_ADMIN', 'happn', getSeq.getPort(1)); }) .then(function(client) { internalClient = client; @@ -443,11 +446,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { let edgeClient, internalClient; startClusterInternalFirst() .then(function() { - return testclient.create('_ADMIN', 'happn', 55002); + return testclient.create('_ADMIN', 'happn', getSeq.getPort(2)); }) .then(function(client) { edgeClient = client; - return testclient.create('_ADMIN', 'happn', 55001); + return testclient.create('_ADMIN', 'happn', getSeq.getPort(1)); }) .then(function(client) { internalClient = client; @@ -463,7 +466,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { context('errors', function() { it('ensures an error is raised if we are injecting internal components with duplicate names', function(done) { - HappnerCluster.create(errorInstanceConfigDuplicateBrokered(1, 1)) + HappnerCluster.create(errorInstanceConfigDuplicateBrokered(getSeq.getFirst(), 1)) .then(function() { done(new Error('unexpected success')); }) @@ -486,7 +489,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { //first test our broker components methods are directly callable @@ -509,7 +512,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { //first test our broker components methods are directly callable @@ -534,7 +537,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { //first test our broker components methods are directly callable @@ -555,7 +558,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent', 'brokeredMethod1'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { return client.exchange.remoteComponent.brokeredMethod1(); diff --git a/test/integration/10-cluster-broker-dynamic.js b/test/integration/10-cluster-broker-dynamic.js index b46d712..98b8cc8 100644 --- a/test/integration/10-cluster-broker-dynamic.js +++ b/test/integration/10-cluster-broker-dynamic.js @@ -9,6 +9,7 @@ const stopCluster = require('../_lib/stop-cluster'); const users = require('../_lib/users'); const testclient = require('../_lib/client'); const delay = require('await-delay'); +const getSeq = require('../_lib/helpers/getSeq'); const clearMongoCollection = require('../_lib/clear-mongo-collection'); //var log = require('why-is-node-running'); @@ -62,7 +63,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; @@ -70,15 +71,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.brokerComponent.directMethod(); }) .then(function(result) { - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); return thisClient.exchange.remoteComponent1.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent1:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod1'); return thisClient.exchange.remoteComponent.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(1) + ':remoteComponent:brokeredMethod1'); setTimeout(done, 2000); }) .catch(done); @@ -105,7 +106,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; @@ -113,23 +114,23 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.brokerComponent.directMethod(); }) .then(function(result) { - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); //call an injected method return thisClient.exchange.remoteComponent.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(1) + ':remoteComponent:brokeredMethod1'); return thisClient.exchange.remoteComponent1.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent1:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod1'); return testRestCall( thisClient.data.session.token, - 55002, + getSeq.getPort(2), 'remoteComponent1', 'brokeredMethod1', null, - 'MESH_1:remoteComponent1:brokeredMethod1:true' + getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod1:true' ); }) .then(function() { @@ -160,17 +161,17 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { //first test our broker components methods are directly callable client.exchange.brokerComponent.directMethod(function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_1:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); //call an injected method client.exchange.remoteComponent.brokeredMethod1(function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_2:remoteComponent:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1'); setTimeout(done, 2000); }); }); @@ -192,12 +193,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { client.exchange.remoteComponent.brokeredMethod3('test', function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_2:remoteComponent:brokeredMethod3:test'); + expect(result).to.be(getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod3:test'); setTimeout(done, 2000); }); }) @@ -226,12 +227,14 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { client.exchange.remoteComponent1.brokeredMethod3('test', function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_2:remoteComponent1:brokeredMethod3:test:username'); + expect(result).to.be( + getSeq.getMeshName(2) + ':remoteComponent1:brokeredMethod3:test:username' + ); setTimeout(done, 2000); }); }) @@ -260,12 +263,14 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { client.exchange.remoteComponent1.brokeredMethod3('test', function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_1:remoteComponent1:brokeredMethod3:test:username'); + expect(result).to.be( + getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod3:test:username' + ); setTimeout(done, 2000); }); }) @@ -296,14 +301,16 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { testClient = client; return testClient.exchange.remoteComponent1.brokeredMethod3('test'); }) .then(function(result) { - expect(result).to.be('MESH_1:remoteComponent1:brokeredMethod3:test:username'); + expect(result).to.be( + getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod3:test:username' + ); return new Promise((resolve, reject) => { localInstance.stop(e => { if (e) return reject(e); @@ -345,7 +352,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { testClient = client; @@ -390,14 +397,14 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { results.push(result); expect(results).to.eql([ //round robin happening - 'MESH_2:remoteComponent1:brokeredMethod3:test:username', - 'MESH_3:remoteComponent1:brokeredMethod3:test:username', - 'MESH_2:remoteComponent1:brokeredMethod3:test:username', - 'MESH_3:remoteComponent1:brokeredMethod3:test:username', + getSeq.getMeshName(2) + ':remoteComponent1:brokeredMethod3:test:username', + getSeq.getMeshName(3) + ':remoteComponent1:brokeredMethod3:test:username', + getSeq.getMeshName(2) + ':remoteComponent1:brokeredMethod3:test:username', + getSeq.getMeshName(3) + ':remoteComponent1:brokeredMethod3:test:username', //now only mesh 3 is up, so it handles all method calls - 'MESH_3:remoteComponent1:brokeredMethod3:test:username', - 'MESH_3:remoteComponent1:brokeredMethod3:test:username', - 'MESH_3:remoteComponent1:brokeredMethod3:test:username' + getSeq.getMeshName(3) + ':remoteComponent1:brokeredMethod3:test:username', + getSeq.getMeshName(3) + ':remoteComponent1:brokeredMethod3:test:username', + getSeq.getMeshName(3) + ':remoteComponent1:brokeredMethod3:test:username' ]); done(); }) @@ -412,11 +419,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return Promise.delay(5000); }) .then(function() { - expect(getInjectedElements('MESH_1').length).to.be(4); - expect(getInjectedElements('MESH_1')[0].meshName != null).to.be(true); - expect(getInjectedElements('MESH_1')[1].meshName != null).to.be(true); - expect(getInjectedElements('MESH_1')[2].meshName != null).to.be(true); - expect(getInjectedElements('MESH_1')[3].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '').length).to.be(4); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[0].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[1].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[2].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[3].meshName != null).to.be(true); return stopServer(servers[1]); }) .then(() => { @@ -424,9 +431,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .then(function() { //we check injected components is 1 - expect(getInjectedElements('MESH_1').length).to.be(2); - expect(getInjectedElements('MESH_1')[0].meshName != null).to.be(true); - expect(getInjectedElements('MESH_1')[1].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '').length).to.be(2); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[0].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[1].meshName != null).to.be(true); return stopServer(servers[2]); }) .then(() => { @@ -434,20 +441,20 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }) .then(function() { //we check injected components is still 1 and injected component meshName is null - expect(getInjectedElements('MESH_1').length).to.be(2); - expect(getInjectedElements('MESH_1')[0].meshName == null).to.be(true); - expect(getInjectedElements('MESH_1')[1].meshName == null).to.be(true); - return startInternal(2, 2); + expect(getInjectedElements(getSeq.getMeshName(1) + '').length).to.be(2); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[0].meshName == null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[1].meshName == null).to.be(true); + return startInternal(getSeq.getNext(), 2); }) .then(() => { return Promise.delay(5000); }) .then(function() { //we check injected components is still 1 and injected component meshName is null - expect(getInjectedElements('MESH_1').length).to.be(2); - expect(getInjectedElements('MESH_1')[0].meshName != null).to.be(true); - expect(getInjectedElements('MESH_1')[1].meshName != null).to.be(true); - return startInternal(3, 3); + expect(getInjectedElements(getSeq.getMeshName(1) + '').length).to.be(2); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[0].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[1].meshName != null).to.be(true); + return startInternal(getSeq.getNext(), 3); }) .then(() => { return Promise.delay(5000); @@ -455,9 +462,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { .then(function() { //we check injected components is 2 //we check injected components is still 1 and injected component meshName is null - expect(getInjectedElements('MESH_1').length).to.be(4); - expect(getInjectedElements('MESH_1')[0].meshName != null).to.be(true); - expect(getInjectedElements('MESH_1')[1].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '').length).to.be(4); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[0].meshName != null).to.be(true); + expect(getInjectedElements(getSeq.getMeshName(1) + '')[1].meshName != null).to.be(true); done(); }) .catch(done); @@ -482,19 +489,19 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowEvent(localInstance, 'username', 'remoteComponent', '/brokered/event'); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { //first test our broker components methods are directly callable client.exchange.brokerComponent.directMethod(function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); client.event.remoteComponent.on( '/brokered/event', function(data) { expect(data).to.eql({ - brokered: { event: { data: { from: 'MESH_1' } } } + brokered: { event: { data: { from: getSeq.getMeshName(1) + '' } } } }); setTimeout(done, 2000); }, @@ -502,7 +509,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { expect(e).to.be(null); client.exchange.remoteComponent.brokeredEventEmitMethod(function(e, result) { expect(e).to.be(null); - expect(result).to.be('MESH_1:remoteComponent:brokeredEventEmitMethod'); + expect(result).to.be( + getSeq.getMeshName(1) + ':remoteComponent:brokeredEventEmitMethod' + ); }); } ); @@ -532,7 +541,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowEvent(localInstance, 'username', 'remoteComponent1', 'test/*'); }) .then(function() { - return connectHappnerClient('username', 'password', 55001); + return connectHappnerClient('username', 'password', getSeq.getPort(1)); }) .then(function(client) { return testHappnerClient(client); @@ -545,7 +554,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); context('errors', function() { it('ensures an error is raised if we are injecting internal components with duplicate names', function(done) { - HappnerCluster.create(errorInstanceConfigDuplicateBrokered(1, 1)) + HappnerCluster.create(errorInstanceConfigDuplicateBrokered(getSeq.getFirst(), 1)) .then(function() { done(new Error('unexpected success')); }) @@ -568,7 +577,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { //first test our broker components methods are directly callable @@ -591,7 +600,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { //first test our broker components methods are directly callable @@ -616,7 +625,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { //first test our broker components methods are directly callable @@ -637,7 +646,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent', 'brokeredMethod1'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { return client.exchange.remoteComponent.brokeredMethod1(); @@ -664,17 +673,17 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; return testRestCall( thisClient.data.session.token, - 55002, + getSeq.getPort(2), 'remoteComponent1', 'brokeredMethod1', null, - 'MESH_1:remoteComponent1:brokeredMethod1:true' + getSeq.getMeshName(1) + ':remoteComponent1:brokeredMethod1:true' ); }) .then(done); @@ -740,7 +749,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { api.happner.event.remoteComponent1.on('test/*', () => { resolve(client); }); - return testWebCall(api, '/remoteComponent1/testJSON', 55001); + return testWebCall(api, '/remoteComponent1/testJSON', getSeq.getPort(1)); }) .then(result => { expect(JSON.parse(result.body)).to.eql({ @@ -887,13 +896,13 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterEdgeFirstHighAvailable(dynamic) { return new Promise(function(resolve, reject) { - startEdge(1, 1, dynamic) + startEdge(getSeq.getFirst(), 1, dynamic) .then(function() { - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function(server) { localInstance = server; - return startInternal(3, 3); + return startInternal(getSeq.getNext(), 3); }) .then(function() { return users.add(localInstance, 'username', 'password'); @@ -905,10 +914,10 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterInternalFirst(dynamic) { return new Promise(function(resolve, reject) { - startInternal(1, 1) + startInternal(getSeq.getFirst(), 1) .then(function(server) { localInstance = server; - return startEdge(2, 2, dynamic); + return startEdge(getSeq.getNext(), 2, dynamic); }) .then(function() { return users.add(localInstance, 'username', 'password'); @@ -922,9 +931,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterEdgeFirst(dynamic) { return new Promise(function(resolve, reject) { - startEdge(1, 1, dynamic) + startEdge(getSeq.getFirst(), 1, dynamic) .then(function() { - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function(server) { localInstance = server; diff --git a/test/integration/11-authority-delegation.js b/test/integration/11-authority-delegation.js index fe04663..651ab9b 100644 --- a/test/integration/11-authority-delegation.js +++ b/test/integration/11-authority-delegation.js @@ -10,10 +10,10 @@ var users = require('../_lib/users'); var testclient = require('../_lib/client'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); //var log = require('why-is-node-running'); +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); - var servers, localInstance; function localInstanceConfig(seq) { @@ -66,16 +66,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { beforeEach('start cluster', function(done) { this.timeout(20000); - - HappnerCluster.create(localInstanceConfig(1, 1)).then(function(local) { + HappnerCluster.create(localInstanceConfig(getSeq.getFirst(), 1)).then(function(local) { localInstance = local; }); setTimeout(() => { Promise.all([ - HappnerCluster.create(remoteInstanceConfig(2, 1)), - HappnerCluster.create(remoteInstanceConfig(3, 1)), - HappnerCluster.create(remoteInstanceConfig(4, 1)) + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)) ]) .then(function(_servers) { servers = _servers; @@ -104,7 +103,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteMethod') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -132,7 +131,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent2', 'method2'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -157,7 +156,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteEvent') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -182,7 +181,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent2', 'method3'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -207,7 +206,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToData') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { thisClient = client; diff --git a/test/integration/12-authority-delegation-negative.js b/test/integration/12-authority-delegation-negative.js index 86fc679..8c04c4d 100644 --- a/test/integration/12-authority-delegation-negative.js +++ b/test/integration/12-authority-delegation-negative.js @@ -9,10 +9,10 @@ var users = require('../_lib/users'); var testclient = require('../_lib/client'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); //var log = require('why-is-node-running'); +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); - var servers, localInstance; function localInstanceConfig(seq) { @@ -53,16 +53,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { beforeEach('start cluster', function(done) { this.timeout(20000); - - HappnerCluster.create(localInstanceConfig(1, 1)).then(function(local) { + HappnerCluster.create(localInstanceConfig(getSeq.getFirst(), 1)).then(function(local) { localInstance = local; }); setTimeout(() => { Promise.all([ - HappnerCluster.create(remoteInstanceConfig(2, 1)), - HappnerCluster.create(remoteInstanceConfig(3, 1)), - HappnerCluster.create(remoteInstanceConfig(4, 1)) + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)) ]) .then(function(_servers) { servers = _servers; @@ -91,7 +90,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteMethod') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -113,7 +112,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteEvent') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -132,7 +131,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToData') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; diff --git a/test/integration/13-authority-delegation-asAdmin.js b/test/integration/13-authority-delegation-asAdmin.js index 36b3eac..16f0b31 100644 --- a/test/integration/13-authority-delegation-asAdmin.js +++ b/test/integration/13-authority-delegation-asAdmin.js @@ -10,6 +10,7 @@ var users = require('../_lib/users'); var testclient = require('../_lib/client'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); //var log = require('why-is-node-running'); +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); @@ -56,16 +57,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { beforeEach('start cluster', function(done) { this.timeout(20000); - - HappnerCluster.create(localInstanceConfig(1, 1)).then(function(local) { + HappnerCluster.create(localInstanceConfig(getSeq.getFirst(), 1)).then(function(local) { localInstance = local; }); setTimeout(() => { Promise.all([ - HappnerCluster.create(remoteInstanceConfig(2, 1)), - HappnerCluster.create(remoteInstanceConfig(3, 1)), - HappnerCluster.create(remoteInstanceConfig(4, 1)) + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)) ]) .then(function(_servers) { servers = _servers; @@ -94,7 +94,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteMethod') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -119,7 +119,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteMethod') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -145,7 +145,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent2', 'method2'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -173,7 +173,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent2', 'method2'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -196,7 +196,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteEvent') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -218,7 +218,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteEvent') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -240,7 +240,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent2', 'method3'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -268,7 +268,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent2', 'method3'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -291,7 +291,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToData') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { thisClient = client; diff --git a/test/integration/14-authority-delegation-global.js b/test/integration/14-authority-delegation-global.js index 76b42f3..55e454d 100644 --- a/test/integration/14-authority-delegation-global.js +++ b/test/integration/14-authority-delegation-global.js @@ -10,6 +10,7 @@ var users = require('../_lib/users'); var testclient = require('../_lib/client'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); //var log = require('why-is-node-running'); +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); @@ -56,16 +57,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { beforeEach('start cluster', function(done) { this.timeout(20000); - - HappnerCluster.create(localInstanceConfig(1, 1)).then(function(local) { + HappnerCluster.create(localInstanceConfig(getSeq.getFirst(), 1)).then(function(local) { localInstance = local; }); setTimeout(() => { Promise.all([ - HappnerCluster.create(remoteInstanceConfig(2, 1)), - HappnerCluster.create(remoteInstanceConfig(3, 1)), - HappnerCluster.create(remoteInstanceConfig(4, 1)) + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)), + HappnerCluster.create(remoteInstanceConfig(getSeq.getNext(), 1)) ]) .then(function(_servers) { servers = _servers; @@ -90,7 +90,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteMethod') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -118,7 +118,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent2', 'method2'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -143,7 +143,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToRemoteEvent') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -168,7 +168,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(localInstance, 'username', 'remoteComponent2', 'method3'); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { let thisClient = client; @@ -193,11 +193,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { users .allowMethod(localInstance, 'username', 'localComponent1', 'localMethodToData') .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { thisClient = client; - //first test our broker components methods are directly callable + //getSeq.getPort(1) test our broker components methods are directly callable return thisClient.exchange.localComponent1.localMethodToData(); }) .then(function() { diff --git a/test/integration/15-cluster-broker-deferred-listen.js b/test/integration/15-cluster-broker-deferred-listen.js index 6e8bb18..de0e7e3 100644 --- a/test/integration/15-cluster-broker-deferred-listen.js +++ b/test/integration/15-cluster-broker-deferred-listen.js @@ -7,7 +7,7 @@ var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); var users = require('../_lib/users'); var testclient = require('../_lib/client'); - +const getSeq = require('../_lib/helpers/getSeq'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); //var log = require('why-is-node-running'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { @@ -113,13 +113,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { var thisClient; var gotToFinalAttempt = false; var edgeInstance; - - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(instance => { edgeInstance = instance; return new Promise((resolve, reject) => { testclient - .create('username', 'password', 55001) + .create('username', 'password', getSeq.getPort(1)) .then(() => { reject(new Error('not meant to happen')); }) @@ -136,7 +135,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function() { return users.allowMethod(edgeInstance, 'username', 'brokerComponent', 'directMethod'); @@ -153,7 +152,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { thisClient = client; @@ -161,16 +160,16 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.brokerComponent.directMethod(); }) .then(function(result) { - expect(result).to.be('MESH_1:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); //call an injected method return thisClient.exchange.remoteComponent.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_2:remoteComponent:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1'); return thisClient.exchange.remoteComponent1.brokeredMethod1(); }) .then(function(result) { - expect(result).to.be('MESH_2:remoteComponent1:brokeredMethod1'); + expect(result).to.be(getSeq.getMeshName(2) + ':remoteComponent1:brokeredMethod1'); return users.denyMethod(edgeInstance, 'username', 'remoteComponent', 'brokeredMethod1'); }) .then(function() { diff --git a/test/integration/16-cluster-broker-web.js b/test/integration/16-cluster-broker-web.js index b747cf5..d26e26e 100644 --- a/test/integration/16-cluster-broker-web.js +++ b/test/integration/16-cluster-broker-web.js @@ -7,7 +7,7 @@ var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); var users = require('../_lib/users'); var testclient = require('../_lib/client'); - +const getSeq = require('../_lib/helpers/getSeq'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); //var log = require('why-is-node-running'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { @@ -156,11 +156,10 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { var thisClient; var edgeInstance; var internalInstance; - - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(function(instance) { edgeInstance = instance; - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function(instance) { internalInstance = instance; @@ -175,21 +174,21 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowWebMethod(internalInstance, 'username', '/remoteComponent1/testJSON'); }) .then(function() { - return testclient.create('_ADMIN', 'happn', 55002); + return testclient.create('_ADMIN', 'happn', getSeq.getPort(2)); }) .then(function(adminClient) { - return testWebCall(adminClient, '/remoteComponent1/testJSON', 55002); + return testWebCall(adminClient, '/remoteComponent1/testJSON', getSeq.getPort(2)); }) .then(function(result) { expect(JSON.parse(result.body)).to.eql({ test: 'data' }); - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; //first test our broker components methods are directly callable - return testWebCall(thisClient, '/remoteComponent1/testJSON', 55002); + return testWebCall(thisClient, '/remoteComponent1/testJSON', getSeq.getPort(2)); }) .then(function(result) { expect(JSON.parse(result.body)).to.eql({ @@ -204,11 +203,10 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { var thisClient; var edgeInstance; var internalInstance; - - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(function(instance) { edgeInstance = instance; - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function(instance) { internalInstance = instance; @@ -223,21 +221,21 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowWebMethod(internalInstance, 'username', '/remoteComponent1/testJSON'); }) .then(function() { - return testclient.create('_ADMIN', 'happn', 55001); + return testclient.create('_ADMIN', 'happn', getSeq.getPort(1)); }) .then(function(adminClient) { - return testWebCall(adminClient, '/remoteComponent1/testJSON', 55001); + return testWebCall(adminClient, '/remoteComponent1/testJSON', getSeq.getPort(1)); }) .then(function(result) { expect(JSON.parse(result.body)).to.eql({ test: 'data' }); - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { thisClient = client; //first test our broker components methods are directly callable - return testWebCall(thisClient, '/remoteComponent1/testJSON', 55001); + return testWebCall(thisClient, '/remoteComponent1/testJSON', getSeq.getPort(1)); }) .then(function(result) { expect(JSON.parse(result.body)).to.eql({ @@ -252,7 +250,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { let client = null; while (client == null) { let checkClient = await testclient.create(username, password, edgePort); - let response = await testWebCall(checkClient, '/remoteComponent1/testJSONSticky', 55001); + let response = await testWebCall( + checkClient, + '/remoteComponent1/testJSONSticky', + getSeq.getPort(1) + ); if (response.body.toString().indexOf(`MESH_${meshId}`) > -1) client = checkClient; else await checkClient.disconnect(); } @@ -276,14 +278,14 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { results.push(result); }; - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(function(instance) { edgeInstance = instance; - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function(instance) { internalInstance1 = instance; - return startInternal(3, 3); + return startInternal(getSeq.getNext(), 3); }) .then(function() { return new Promise(resolve => { @@ -301,19 +303,37 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { ); }) .then(function() { - return getClientForMesh(2, 'username', 'password', 55001); + return getClientForMesh( + getSeq.lookupFirst() + 1, + 'username', + 'password', + getSeq.getPort(1) + ); }) .then(function(client) { thisClientMesh2 = client; - return getClientForMesh(3, 'username', 'password', 55001); + return getClientForMesh( + getSeq.lookupFirst() + 2, + 'username', + 'password', + getSeq.getPort(1) + ); }) .then(function(client) { thisClientMesh3 = client; - return testWebCall(thisClientMesh2, '/remoteComponent1/testJSONSticky', 55001); + return testWebCall( + thisClientMesh2, + '/remoteComponent1/testJSONSticky', + getSeq.getPort(1) + ); }) .then(function(response) { pushResults(response); - return testWebCall(thisClientMesh3, '/remoteComponent1/testJSONSticky', 55001); + return testWebCall( + thisClientMesh3, + '/remoteComponent1/testJSONSticky', + getSeq.getPort(1) + ); }) .then(function(response) { pushResults(response); @@ -325,11 +345,19 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testWebCall(thisClientMesh2, '/remoteComponent1/testJSONSticky', 55001); + return testWebCall( + thisClientMesh2, + '/remoteComponent1/testJSONSticky', + getSeq.getPort(1) + ); }) .then(function(response) { pushResults(response); - return testWebCall(thisClientMesh3, '/remoteComponent1/testJSONSticky', 55001); + return testWebCall( + thisClientMesh3, + '/remoteComponent1/testJSONSticky', + getSeq.getPort(1) + ); }) .then(function(response) { pushResults(response); @@ -339,23 +367,23 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { { statusCode: 200, statusMessage: 'OK', - body: '{"ran_on":"MESH_2"}' + body: `{"ran_on":"${getSeq.getMeshName(2)}"}` }, { statusCode: 200, statusMessage: 'OK', - body: '{"ran_on":"MESH_3"}' + body: `{"ran_on":"${getSeq.getMeshName(3)}"}` }, // failover to MESH_3, because MESH_2 went offline { statusCode: 200, statusMessage: 'OK', - body: '{"ran_on":"MESH_3"}' + body: `{"ran_on":"${getSeq.getMeshName(3)}"}` }, { statusCode: 200, statusMessage: 'OK', - body: '{"ran_on":"MESH_3"}' + body: `{"ran_on":"${getSeq.getMeshName(3)}"}` } ] ); diff --git a/test/integration/17-cluster-broker-component-versions.js b/test/integration/17-cluster-broker-component-versions.js index 3d7c5b2..a128120 100644 --- a/test/integration/17-cluster-broker-component-versions.js +++ b/test/integration/17-cluster-broker-component-versions.js @@ -7,12 +7,12 @@ var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); var users = require('../_lib/users'); var testclient = require('../_lib/client'); +const getSeq = require('../_lib/helpers/getSeq'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); //var log = require('why-is-node-running'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(40000); - var servers = [], localInstance; @@ -89,11 +89,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterInternalFirst() { return new Promise(function(resolve, reject) { - startInternal(1, 1) + startInternal(getSeq.getFirst(), 1) .then(function(server) { servers.push(server); localInstance = server; - return startEdge(2, 2); + return startEdge(getSeq.getNext(), 2); }) .then(function(server) { servers.push(server); @@ -154,7 +154,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; @@ -162,7 +162,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.brokerComponent.directMethod(); }) .then(function(result) { - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); //call to good version of method return thisClient.exchange.remoteComponent1.brokeredMethod1(); }) @@ -221,7 +221,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; @@ -229,7 +229,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.brokerComponent.directMethod(); }) .then(function(result) { - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); //call to good version of method return thisClient.exchange.remoteComponent1.brokeredMethod1(); }) diff --git a/test/integration/18-cluster-broker-no-publish-schema-deferred-listen.js b/test/integration/18-cluster-broker-no-publish-schema-deferred-listen.js index 62c7b3c..4b16ef1 100644 --- a/test/integration/18-cluster-broker-no-publish-schema-deferred-listen.js +++ b/test/integration/18-cluster-broker-no-publish-schema-deferred-listen.js @@ -6,6 +6,7 @@ const users = require('../_lib/users'); const testclient = require('../_lib/client'); const clearMongoCollection = require('../_lib/clear-mongo-collection'); const test = require('../_lib/test-helper'); +const getSeq = require('../_lib/helpers/getSeq'); describe(test.testName(__filename, 3), function() { this.timeout(40000); @@ -23,18 +24,18 @@ describe(test.testName(__filename, 3), function() { it('starts the cluster broker first, client connects and receives no further schema updates, when we flip-flop internal host', async () => { let schemaPublicationCount = 0; - let edgeInstance = await startEdge(1, 1); - let internalInstance = await startInternal(2, 2); + let edgeInstance = await startEdge(getSeq.getFirst(), 1); + let internalInstance = await startInternal(getSeq.getNext(), 2); await test.delay(5e3); await users.add(edgeInstance, 'username', 'password'); - const client = await testclient.create('username', 'password', 55001); + const client = await testclient.create('username', 'password', getSeq.getPort(1)); await client.data.on('/mesh/schema/description', () => { schemaPublicationCount++; }); await internalInstance.stop({ reconnect: false }); await test.delay(5e3); servers.pop(); //chuck the stopped server away - await startInternal(2, 2); + await startInternal(getSeq.getCurrent(), 2); await test.delay(5e3); test.expect(schemaPublicationCount).to.be(0); }); diff --git a/test/integration/20-cluster-startup-dependencies.js b/test/integration/20-cluster-startup-dependencies.js index cc24f70..bb111fc 100644 --- a/test/integration/20-cluster-startup-dependencies.js +++ b/test/integration/20-cluster-startup-dependencies.js @@ -6,19 +6,20 @@ const helpers = { configuration: require('../_lib/helpers/configuration').create(), cluster: require('../_lib/helpers/cluster') }; - +const getSeq = require('../_lib/helpers/getSeq'); describe(helpers.test.testName(__filename, 3), function() { this.timeout(60000); it('starts up a cluster with no interdependencies, happy path, we ensure we can start and teardown the cluster', async () => { const cluster = helpers.cluster.create(); - await cluster.member.start(helpers.configuration.construct(20, 0), 2000); - await cluster.member.start(helpers.configuration.construct(20, 1), 2000); - await cluster.member.start(helpers.configuration.construct(20, 4), 3000); - await cluster.member.start(helpers.configuration.construct(20, 5), 5000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getFirst(), 0]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 1]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 4]), 3000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 5]), 5000); + + const client = await helpers.client.create(username, password, getSeq.getPort(2)); //Unlike others, membership starts at 0 here - const client = await helpers.client.create(username, password, 9501); const result = await client.exchange.component1.use(); helpers.test.expect(result).to.be(1); await helpers.client.destroy(client); @@ -28,16 +29,16 @@ describe(helpers.test.testName(__filename, 3), function() { it('starts up a cluster with interdependencies, happy path, we ensure the startup order is correct', async () => { const cluster = helpers.cluster.create(); - await cluster.member.start(helpers.configuration.construct(20, 0), 2000); - await cluster.member.start(helpers.configuration.construct(20, 1), 2000); - await cluster.member.start(helpers.configuration.construct(20, 2), 2000); - await cluster.member.start(helpers.configuration.construct(20, 3), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getFirst(), 0]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 1]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 2]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 3]), 2000); await helpers.test.delay(5000); - await cluster.member.start(helpers.configuration.construct(20, 4), 2000); - await cluster.member.start(helpers.configuration.construct(20, 5), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 4]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 5]), 2000); await helpers.test.delay(5000); //check member 2 (depending on member 4) is accessible - const client = await helpers.client.create(username, password, 9502); + const client = await helpers.client.create(username, password, getSeq.getPort(3)); const result = await client.exchange.component2.use(); helpers.test.expect(result).to.be(2); //check everything started @@ -50,11 +51,10 @@ describe(helpers.test.testName(__filename, 3), function() { .to.eql(['MESH_0', 'MESH_1', 'MESH_2', 'MESH_3', 'MESH_4', 'MESH_5']); //check the members started in the correct order //sometimes MESH_1 starts before MESH_0, slice away the first 2 - helpers.test.expect(cluster.events.data.slice(2)).to.eql([ + //sometimes MESH_5 starts before MESH_3, slice away the last 2 + helpers.test.expect(cluster.events.data.slice(2, 4)).to.eql([ { key: 'member-started', value: 'MESH_4' }, - { key: 'member-started', value: 'MESH_2' }, - { key: 'member-started', value: 'MESH_5' }, - { key: 'member-started', value: 'MESH_3' } + { key: 'member-started', value: 'MESH_2' } ]); await helpers.client.destroy(client); return cluster.destroy(); @@ -63,10 +63,10 @@ describe(helpers.test.testName(__filename, 3), function() { it('starts up a cluster with interdependencies, we ensure that members with unsatisfied dependencies are not accessible', async () => { const cluster = helpers.cluster.create(); - await cluster.member.start(helpers.configuration.construct(20, 0), 2000); - await cluster.member.start(helpers.configuration.construct(20, 1), 2000); - await cluster.member.start(helpers.configuration.construct(20, 2), 2000); - await cluster.member.start(helpers.configuration.construct(20, 3), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getFirst(), 0]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 1]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 2]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 3]), 2000); await helpers.test.delay(5000); const values = cluster.events.data.map(item => { return item.value; @@ -76,21 +76,23 @@ describe(helpers.test.testName(__filename, 3), function() { let error; try { //check member 2 is not accessible - as member 4 has not been started - await helpers.client.create(username, password, 55002); + await helpers.client.create(username, password, getSeq.getPort(3)); } catch (e) { error = e.message; } - helpers.test.expect(error).to.be('connect ECONNREFUSED 127.0.0.1:55002'); + helpers.test + .expect(error) + .to.be('connect ECONNREFUSED 127.0.0.1:' + getSeq.getPort(3).toString()); //start member 4 up - this should make member 2 available - await cluster.member.start(helpers.configuration.construct(20, 4), 5000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 4]), 5000); - const client = await helpers.client.create(username, password, 9502); + const client = await helpers.client.create(username, password, getSeq.getPort(3)); const result = await client.exchange.component2.use(); helpers.test.expect(result).to.be(2); await helpers.client.destroy(client); //start member 5 up So that we can cleanly destroy cluster - await cluster.member.start(helpers.configuration.construct(20, 5), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 5]), 2000); await helpers.test.delay(2000); return cluster.destroy(); @@ -99,14 +101,14 @@ describe(helpers.test.testName(__filename, 3), function() { it('starts up a cluster, we inject a component with dependencies - ensure it starts because its existing dependencies are there', async () => { const cluster = helpers.cluster.create(); - await cluster.member.start(helpers.configuration.construct(20, 0), 2000); - await cluster.member.start(helpers.configuration.construct(20, 1), 2000); - await cluster.member.start(helpers.configuration.construct(20, 4), 7000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getFirst(), 0]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 1]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 4]), 7000); await cluster.component.inject(1, helpers.configuration.extract(20, 2, 'component2')); await helpers.test.delay(4000); //check member 2 (depending on member 4) is accessible - const client = await helpers.client.create(username, password, 9501); + const client = await helpers.client.create(username, password, getSeq.getPort(2)); await helpers.test.delay(4000); const result = await client.exchange.component2.use(); helpers.test.expect(result).to.be(2); @@ -117,21 +119,21 @@ describe(helpers.test.testName(__filename, 3), function() { it('starts up a cluster with interdependencies, we inject a component with dependencies - ensure it start is delayed as it depends on a follow on injected component', async () => { const cluster = helpers.cluster.create(); - await cluster.member.start(helpers.configuration.construct(20, 0), 2000); - await cluster.member.start(helpers.configuration.construct(20, 1), 2000); - await cluster.member.start(helpers.configuration.construct(20, 5), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getFirst(), 0]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 1]), 2000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 5]), 2000); //dont await this - as it will hold up the test cluster.component.inject(1, helpers.configuration.extract(20, 2, 'component2')); await helpers.test.delay(2000); //check component2 (depending on member 4) is not accessible - let client = await helpers.client.create(username, password, 9501); + let client = await helpers.client.create(username, password, getSeq.getPort(2)); helpers.test.expect(client.exchange.component2).to.be(undefined); await helpers.client.destroy(client); - await cluster.member.start(helpers.configuration.construct(20, 4), 5000); + await cluster.member.start(helpers.configuration.construct(20, [getSeq.getNext(), 4]), 5000); - client = await helpers.client.create(username, password, 9501); + client = await helpers.client.create(username, password, getSeq.getPort(2)); helpers.test.expect((await client.exchange.component2.is()).initialized).to.be(true); helpers.test.expect((await client.exchange.component2.is()).started).to.be(true); await helpers.client.destroy(client); diff --git a/test/integration/21-event-propogation-from-broker.js b/test/integration/21-event-propogation-from-broker.js index fa95348..f8a998d 100644 --- a/test/integration/21-event-propogation-from-broker.js +++ b/test/integration/21-event-propogation-from-broker.js @@ -9,6 +9,7 @@ var users = require('../_lib/users'); var testclient = require('../_lib/client'); var delay = require('await-delay'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); +const getSeq = require('../_lib/helpers/getSeq'); describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(40000); @@ -107,15 +108,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterInternalFirst(replicate) { return new Promise(function(resolve, reject) { - startInternal(1, 1, replicate) + startInternal(getSeq.getFirst(), 1, replicate) .then(function(server) { servers.push(server); localInstance = server; - return startEdge(2, 2, replicate); + return startEdge(getSeq.getNext(), 2, replicate); }) .then(function(server) { servers.push(server); - return startBlank(3, 3, replicate); + return startBlank(getSeq.getNext(), 3, replicate); }) .then(function(server) { servers.push(server); @@ -128,15 +129,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterNoDataInBroker(replicate) { return new Promise(function(resolve, reject) { - startInternal(1, 1, replicate) + startInternal(getSeq.getFirst(), 1, replicate) .then(function(server) { servers.push(server); localInstance = server; - return startEdgeNoData(2, 2, replicate); + return startEdgeNoData(getSeq.getNext(), 2, replicate); }) .then(function(server) { servers.push(server); - return startBlank(3, 3, replicate); + return startBlank(getSeq.getNext(), 3, replicate); }) .then(function(server) { servers.push(server); @@ -149,10 +150,10 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { function startClusterEdgeFirst() { return new Promise(function(resolve, reject) { - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(function(server) { servers.push(server); - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function(server) { servers.push(server); @@ -176,7 +177,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { it('1. connects a client to the blank instance,checks data events', function(done) { let test1Server; let handler = sinon.stub(); - startBlank(1, 1) + startBlank(getSeq.getFirst(), 1) .then(server => { servers.push(server); test1Server = server; @@ -193,7 +194,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(test1Server, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { client.data.on('_data/data/brokered/event', handler); @@ -214,11 +215,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { let client1handler2 = sinon.stub(); let client2handler1 = sinon.stub(); let client2handler2 = sinon.stub(); - startBlank(1, 1) + startBlank(getSeq.getFirst(), 1) .then(server => { servers.push(server); test2Server1 = server; - return startBlank(2, 2); + return startBlank(getSeq.getNext(), 2); }) .then(server => { servers.push(server); @@ -240,27 +241,27 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(test2Server2, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { test2Client1 = client; - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) - .then(client => { + .then(async client => { test2Client2 = client; - test2Client1.data.on('/_data/data/test/event1', client1handler1); - test2Client2.data.on('/_data/data/test/event1', client2handler1); - test2Server1.exchange.data.set('test/event1', { data: 'data1' }, {}); + await test2Client1.data.on('/_data/data/test/event1', client1handler1); + await test2Client2.data.on('/_data/data/test/event1', client2handler1); + await test2Server1.exchange.data.set('test/event1', { data: 'data1' }, {}); return delay(4000); }) .then(() => { sinon.assert.calledOnce(client1handler1); sinon.assert.notCalled(client2handler1); }) - .then(() => { - test2Client1.data.on('/_data/data/test/event2', client1handler2); - test2Client2.data.on('/_data/data/test/event2', client2handler2); - test2Server2.exchange.data.set('test/event2', { data: 'data2' }, {}); + .then(async () => { + await test2Client1.data.on('_data/data/test/event2', client1handler2); + await test2Client2.data.on('_data/data/test/event2', client2handler2); + await test2Server2.exchange.data.set('test/event2', { data: 'data2' }, {}); return delay(4000); }) .then(() => { @@ -278,11 +279,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { let client1handler2 = sinon.stub(); let client2handler1 = sinon.stub(); let client2handler2 = sinon.stub(); - startBlank(1, 1) + startBlank(getSeq.getFirst(), 1) .then(server => { servers.push(server); test3Server1 = server; - return startBlank(2, 2); + return startBlank(getSeq.getNext(), 2); }) .then(server => { servers.push(server); @@ -304,11 +305,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(test3Server2, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { test3Client1 = client; - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(client => { test3Client2 = client; @@ -358,11 +359,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(brokerServer, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { remoteClient = client; - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(client => { brokerClient = client; @@ -411,11 +412,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(brokerServer, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { remoteClient = client; - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(client => { brokerClient = client; @@ -464,11 +465,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(brokerServer, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { remoteClient = client; - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(client => { brokerClient = client; @@ -517,11 +518,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(brokerServer, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { remoteClient = client; - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(client => { brokerClient = client; @@ -570,11 +571,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(brokerServer, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { remoteClient = client; - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(client => { brokerClient = client; @@ -616,11 +617,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return users.allowMethod(brokerServer, 'username', 'data', 'set'); }) .then(() => { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(client => { remoteClient = client; - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(client => { brokerClient = client; diff --git a/test/integration/22-happner-component-event-call-on.js b/test/integration/22-happner-component-event-call-on.js index 07c6b89..a14a22e 100644 --- a/test/integration/22-happner-component-event-call-on.js +++ b/test/integration/22-happner-component-event-call-on.js @@ -9,6 +9,7 @@ var users = require('../_lib/users'); var testclient = require('../_lib/client'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); +const getSeq = require('../_lib/helpers/getSeq'); const test = require('../_lib/test-helper'); //var log = require('why-is-node-running'); @@ -45,12 +46,12 @@ describe(test.testName(__filename, 3), function() { await test.delay(2000); await setUpSecurity(localInstance); await test.delay(2000); - thisClient = await testclient.create('username', 'password', 55001); + thisClient = await testclient.create('username', 'password', getSeq.getPort(1)); const result1 = await thisClient.exchange.$call({ component: 'brokerComponent', method: 'directMethod' }); - test.expect(result1).to.be('MESH_1:brokerComponent:directMethod'); + test.expect(result1).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); await thisClient.event.$on( { component: 'remoteComponent1', @@ -64,7 +65,7 @@ describe(test.testName(__filename, 3), function() { component: 'remoteComponent1', method: 'brokeredMethod1' }); - test.expect(result2).to.be('MESH_2:remoteComponent:brokeredMethod1'); + test.expect(result2).to.be(getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1'); await test.delay(2000); const result3 = await thisClient.exchange.$call({ @@ -72,7 +73,7 @@ describe(test.testName(__filename, 3), function() { method: 'brokeredMethod1' }); - test.expect(result3).to.be('MESH_2:prereleaseComponent:brokeredMethod1'); + test.expect(result3).to.be(getSeq.getMeshName(2) + ':prereleaseComponent:brokeredMethod1'); await thisClient.exchange.$call({ component: 'prereleaseComponent', @@ -82,7 +83,9 @@ describe(test.testName(__filename, 3), function() { expect(e.message).to.be( 'invalid endpoint options: [prereleaseComponent.unknownMethod] method does not exist on the api' ); - expect(emitted).to.eql({ topic: 'MESH_2:remoteComponent:brokeredMethod1' }); + expect(emitted).to.eql({ + topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' + }); return; } throw new Error('was not meant to happen'); @@ -95,12 +98,12 @@ describe(test.testName(__filename, 3), function() { await test.delay(2000); await setUpSecurity(localInstance); await test.delay(2000); - thisClient = await testclient.create('username', 'password', 55001); + thisClient = await testclient.create('username', 'password', getSeq.getPort(1)); const result1 = await thisClient.exchange.$call({ component: 'brokerComponent', method: 'directMethod' }); - test.expect(result1).to.be('MESH_1:brokerComponent:directMethod'); + test.expect(result1).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); await thisClient.event.$once( { component: 'remoteComponent1', @@ -119,7 +122,9 @@ describe(test.testName(__filename, 3), function() { method: 'brokeredMethod1' }); await test.delay(2000); - expect(emitted).to.eql([{ topic: 'MESH_2:remoteComponent:brokeredMethod1' }]); + expect(emitted).to.eql([ + { topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' } + ]); }); it('starts the cluster edge first, connects a client to the local instance, tests $off', async () => { @@ -129,12 +134,12 @@ describe(test.testName(__filename, 3), function() { await test.delay(2000); await setUpSecurity(localInstance); await test.delay(2000); - thisClient = await testclient.create('username', 'password', 55001); + thisClient = await testclient.create('username', 'password', getSeq.getPort(1)); const result1 = await thisClient.exchange.$call({ component: 'brokerComponent', method: 'directMethod' }); - test.expect(result1).to.be('MESH_1:brokerComponent:directMethod'); + test.expect(result1).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); const id = await thisClient.event.$on( { component: 'remoteComponent1', @@ -158,7 +163,9 @@ describe(test.testName(__filename, 3), function() { method: 'brokeredMethod1' }); await test.delay(2000); - expect(emitted).to.eql([{ topic: 'MESH_2:remoteComponent:brokeredMethod1' }]); + expect(emitted).to.eql([ + { topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' } + ]); }); it('starts the cluster edge first, connects a client to the local instance, tests $offPath', async () => { @@ -168,12 +175,12 @@ describe(test.testName(__filename, 3), function() { await test.delay(2000); await setUpSecurity(localInstance); await test.delay(2000); - thisClient = await testclient.create('username', 'password', 55001); + thisClient = await testclient.create('username', 'password', getSeq.getPort(1)); const result1 = await thisClient.exchange.$call({ component: 'brokerComponent', method: 'directMethod' }); - test.expect(result1).to.be('MESH_1:brokerComponent:directMethod'); + test.expect(result1).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); await thisClient.event.$on( { component: 'remoteComponent1', @@ -207,8 +214,8 @@ describe(test.testName(__filename, 3), function() { }); await test.delay(2000); expect(emitted).to.eql([ - { topic: 'MESH_2:remoteComponent:brokeredMethod1' }, - { topic: 'MESH_2:remoteComponent:brokeredMethod1' } + { topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' }, + { topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' } ]); }); @@ -219,12 +226,12 @@ describe(test.testName(__filename, 3), function() { await test.delay(2000); await setUpSecurity(localInstance); await test.delay(2000); - thisClient = await testclient.create('username', 'password', 55001); + thisClient = await testclient.create('username', 'password', getSeq.getPort(1)); const result1 = await thisClient.exchange.$call({ component: 'brokerComponent', method: 'directMethod' }); - test.expect(result1).to.be('MESH_1:brokerComponent:directMethod'); + test.expect(result1).to.be(getSeq.getMeshName(1) + ':brokerComponent:directMethod'); await thisClient.event.$on( { component: 'remoteComponent1', @@ -254,10 +261,10 @@ describe(test.testName(__filename, 3), function() { }); await test.delay(2000); expect(emitted).to.eql([ - { topic: 'MESH_2:remoteComponent:brokeredMethod1' }, - { topic: 'MESH_2:remoteComponent:brokeredMethod1' }, - { topic: 'MESH_2:remoteComponent:brokeredMethod1' }, - { topic: 'MESH_2:remoteComponent:brokeredMethod1' } + { topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' }, + { topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' }, + { topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' }, + { topic: getSeq.getMeshName(2) + ':remoteComponent:brokeredMethod1' } ]); }); @@ -302,7 +309,7 @@ describe(test.testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; @@ -313,7 +320,7 @@ describe(test.testName(__filename, 3), function() { }); }) .then(function(result) { - expect(result).to.be('MESH_2:brokerComponent:directMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokerComponent:directMethod'); //call to good version of method return thisClient.exchange.$call({ component: 'remoteComponent1', @@ -385,7 +392,7 @@ describe(test.testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55002); + return testclient.create('username', 'password', getSeq.getPort(2)); }) .then(function(client) { thisClient = client; @@ -415,10 +422,10 @@ describe(test.testName(__filename, 3), function() { function startClusterEdgeFirst() { return new Promise(function(resolve, reject) { - startEdge(1, 1) + startEdge(getSeq.getFirst(), 1) .then(function(server) { servers.push(server); - return startInternal(2, 2); + return startInternal(getSeq.getNext(), 2); }) .then(function(server) { servers.push(server); @@ -432,11 +439,11 @@ describe(test.testName(__filename, 3), function() { function startClusterInternalFirst() { return new Promise(function(resolve, reject) { - startInternal(1, 1) + startInternal(getSeq.getFirst(), 1) .then(function(server) { servers.push(server); localInstance = server; - return startEdge(2, 2); + return startEdge(getSeq.getNext(), 2); }) .then(function(server) { servers.push(server); diff --git a/test/integration/23-integration-security-sync-user-permissions.js b/test/integration/23-integration-security-sync-user-permissions.js index 721801f..2000d37 100644 --- a/test/integration/23-integration-security-sync-user-permissions.js +++ b/test/integration/23-integration-security-sync-user-permissions.js @@ -6,6 +6,7 @@ const clearMongoCollection = require('../_lib/clear-mongo-collection'); const users = require('../_lib/user-permissions'); const client = require('../_lib/client'); const test = require('../_lib/test-helper'); +const getSeq = require('../_lib/helpers/getSeq'); describe(test.testName(__filename, 3), function() { this.timeout(20000); @@ -36,18 +37,18 @@ describe(test.testName(__filename, 3), function() { before('start cluster', async () => { servers = []; - servers.push(await HappnerCluster.create(serverConfig(1, 1))); - servers.push(await HappnerCluster.create(serverConfig(2, 2))); + servers.push(await HappnerCluster.create(serverConfig(getSeq.getFirst(), 1))); + servers.push(await HappnerCluster.create(serverConfig(getSeq.getNext(), 2))); await users.add(servers[0], 'username', 'password'); await test.delay(5000); }); before('start client1', async () => { - client1 = await client.create('username', 'password', 55001); + client1 = await client.create('username', 'password', getSeq.getPort(1)); }); before('start client2', async () => { - client2 = await client.create('username', 'password', 55002); + client2 = await client.create('username', 'password', getSeq.getPort(2)); }); after('stop clients', async () => { diff --git a/test/integration/24-nested-permissions-events.js b/test/integration/24-nested-permissions-events.js index 6d78168..462185a 100644 --- a/test/integration/24-nested-permissions-events.js +++ b/test/integration/24-nested-permissions-events.js @@ -6,6 +6,8 @@ const users = require('../_lib/user-permissions'); const client = require('../_lib/client'); const test = require('../_lib/test-helper'); const wait = require('await-delay'); +const getSeq = require('../_lib/helpers/getSeq'); + module.exports = SecuredComponent; function SecuredComponent() {} @@ -66,8 +68,8 @@ describe(test.testName(__filename, 3), function() { before('start cluster', async () => { servers = []; - servers.push(await HappnerCluster.create(serverConfig(1, 1))); - servers.push(await HappnerCluster.create(serverConfig(2, 2))); + servers.push(await HappnerCluster.create(serverConfig(getSeq.getFirst(), 1))); + servers.push(await HappnerCluster.create(serverConfig(getSeq.getNext(), 2))); remoteServer = servers[0]; for (let user of Object.keys(permissions)) { await users.add(servers[0], user, 'password', permissions[user]); @@ -86,7 +88,7 @@ describe(test.testName(__filename, 3), function() { }); it("we add a test user that has permissions to access some of the ProtectedComponent events, subscribe on a nested-path ('**'), we test that this works", async () => { - let listenerClient = await client.create('test1User', 'password', 55002); + let listenerClient = await client.create('test1User', 'password', getSeq.getPort(2)); let receivedEvents = []; await listenerClient.event.SecuredComponent.on('**', message => { @@ -103,7 +105,7 @@ describe(test.testName(__filename, 3), function() { }); it('we add a test user that has permissions to access some of the ProtectedComponent events, including events on sub/paths, subscribe on **, we test that this works', async () => { - let listenerClient = await client.create('test2User', 'password', 55002); + let listenerClient = await client.create('test2User', 'password', getSeq.getPort(2)); let receivedEvents = []; await listenerClient.event.SecuredComponent.on('**', message => { receivedEvents.push(message.value); @@ -124,7 +126,7 @@ describe(test.testName(__filename, 3), function() { }); it('we add a test user that has permissions to access some of the ProtectedComponent events, including a permission on sub-path/* we test that this works', async () => { - let listenerClient = await client.create('test3User', 'password', 55002); + let listenerClient = await client.create('test3User', 'password', getSeq.getPort(2)); let receivedEvents = []; await listenerClient.event.SecuredComponent.on('**', message => { receivedEvents.push(message.value); @@ -147,7 +149,7 @@ describe(test.testName(__filename, 3), function() { }); it("subscription on '**' will be unauthorized if we have no permissions to any subpaths", async () => { - let listenerClient = await client.create('test4User', 'password', 55002); + let listenerClient = await client.create('test4User', 'password', getSeq.getPort(2)); let receivedEvents = []; let errorCaught = false; try { @@ -164,7 +166,7 @@ describe(test.testName(__filename, 3), function() { }); it("adding and then removing permissions with subscription on '**'", async () => { - let listenerClient = await client.create('test5User', 'password', 55002); + let listenerClient = await client.create('test5User', 'password', getSeq.getPort(2)); let receivedEvents = []; await listenerClient.event.SecuredComponent.on('**', message => { @@ -226,7 +228,7 @@ describe(test.testName(__filename, 3), function() { }); it("Removing then adding permissions with subscription on '**'", async () => { - let listenerClient = await client.create('test6User', 'password', 55002); + let listenerClient = await client.create('test6User', 'password', getSeq.getPort(2)); let receivedEvents = []; await listenerClient.event.SecuredComponent.on('**', message => { diff --git a/test/integration/25-cluster-brokering-after-member-dies.js b/test/integration/25-cluster-brokering-after-member-dies.js index 11c75ac..a702952 100644 --- a/test/integration/25-cluster-brokering-after-member-dies.js +++ b/test/integration/25-cluster-brokering-after-member-dies.js @@ -6,6 +6,7 @@ const baseConfig = require('../_lib/base-config'); const stopCluster = require('../_lib/stop-cluster'); const testclient = require('../_lib/client'); +const getSeq = require('../_lib/helpers/getSeq'); const clearMongoCollection = require('../_lib/clear-mongo-collection'); const { fork } = require('child_process'); //var log = require('why-is-node-running'); @@ -23,6 +24,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }); }); + after('Move up getSeq sequence to account for subprocesses', done => { + getSeq.getNext(); + getSeq.getNext(); + done(); + }); after('stop cluster', function(done) { this.timeout(30000); @@ -36,9 +42,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { it('starts the cluster internal first, connects a client to the local instance, and is able to access the remote component via the broker', function(done) { var thisClient; let child; - startEdge(1, 1) + let first = getSeq.getFirst(); + startEdge(first, 1) .then(() => { - child = fork(libDir + 'test-25-sub-process.js', ['2']); + // getSeq.getNext(); + child = fork(libDir + 'test-25-sub-process.js', ['2', getSeq.lookupFirst().toString()]); child.on('message', msg => { if (msg === 'kill') child.kill('SIGKILL'); }); @@ -49,14 +57,14 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { }); }) .then(function() { - return testclient.create('username', 'password', 55001); + return testclient.create('username', 'password', getSeq.getPort(1)); }) .then(function(client) { thisClient = client; return thisClient.exchange.breakingComponent.happyMethod(); }) .then(function(result) { - expect(result).to.be('MESH_2:brokenComponent:happyMethod'); + expect(result).to.be(getSeq.getMeshName(2) + ':brokenComponent:happyMethod'); return thisClient.exchange.breakingComponent.breakingMethod(1, 2); }) .then(function(result) { @@ -67,7 +75,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { expect(e).to.be('Request timed out'); }) .then(() => { - return fork(libDir + 'test-25-sub-process.js', ['3']); + return fork(libDir + 'test-25-sub-process.js', ['3', getSeq.lookupFirst().toString()]); }) .then(function(forked) { child = forked; @@ -79,7 +87,7 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { return thisClient.exchange.breakingComponent.happyMethod(); }) .then(function(result) { - expect(result).to.be('MESH_3:brokenComponent:happyMethod'); + expect(result).to.be(getSeq.getMeshName(3) + ':brokenComponent:happyMethod'); return thisClient.exchange.breakingComponent.breakingMethod(1, 2); }) .then(function(result) { diff --git a/test/integration/26-integration-components-discover.js b/test/integration/26-integration-components-discover.js index dd109f8..0ac6c10 100644 --- a/test/integration/26-integration-components-discover.js +++ b/test/integration/26-integration-components-discover.js @@ -6,6 +6,7 @@ var libDir = require('../_lib/lib-dir'); var baseConfig = require('../_lib/base-config'); var stopCluster = require('../_lib/stop-cluster'); const delay = require('await-delay'); +const getSeq = require('../_lib/helpers/getSeq'); var clearMongoCollection = require('../_lib/clear-mongo-collection'); @@ -114,9 +115,9 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { this.timeout(20000); Promise.all([ - HappnerCluster.create(localInstanceConfig(1)), - HappnerCluster.create(remoteInstance1Config(2)), - HappnerCluster.create(remoteInstance2Config(3)) + HappnerCluster.create(localInstanceConfig(getSeq.getFirst())), + HappnerCluster.create(remoteInstance1Config(getSeq.getNext())), + HappnerCluster.create(remoteInstance2Config(getSeq.getNext())) ]) .then(function(_servers) { servers = _servers; @@ -148,11 +149,11 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { results[ await localInstance.exchange.localComponent1.callDependency('remoteComponent3', 'method1') ] = 1; + let expectedResults = {}; + expectedResults[getSeq.getMeshName(2) + ':component3:method1'] = 1; + expectedResults[getSeq.getMeshName(3) + ':component3:method1'] = 1; - expect(results).to.eql({ - 'MESH_2:component3:method1': 1, - 'MESH_3:component3:method1': 1 - }); + expect(results).to.eql(expectedResults); }); it('overwrites local components that are wrong version', function(done) { @@ -190,12 +191,15 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { localInstance.exchange.localComponent2.listTestEvents(function(e, result) { if (e) return done(e); - + let expectedResults = {}; + expectedResults[ + `/_events/DOMAIN_NAME/remoteComponent3/testevent/${getSeq.getMeshName(3)}` + ] = 1; + expectedResults[ + `/_events/DOMAIN_NAME/remoteComponent3/testevent/${getSeq.getMeshName(2)}` + ] = 1; try { - expect(result).to.eql({ - '/_events/DOMAIN_NAME/remoteComponent3/testevent/MESH_3': 1, - '/_events/DOMAIN_NAME/remoteComponent3/testevent/MESH_2': 1 - }); + expect(result).to.eql(expectedResults); done(); } catch (e) { done(e); @@ -206,11 +210,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { it('does not receive events from incompatible component versions', function(done) { localInstance.exchange.localComponent2.listTestCompatibleEvents(function(e, result) { if (e) return done(e); - + let expectedResults = {}; + expectedResults[ + `/_events/DOMAIN_NAME/remoteComponent5/testevent/v2/${getSeq.getMeshName(3)}` + ] = 1; try { - expect(result).to.eql({ - '/_events/DOMAIN_NAME/remoteComponent5/testevent/v2/MESH_3': 1 - }); + expect(result).to.eql(expectedResults); done(); } catch (e) { done(e); @@ -250,8 +255,12 @@ describe(require('../_lib/test-helper').testName(__filename, 3), function() { expect(outcomes).to.eql([true, true, false, false]); servers = servers.concat( await Promise.all([ - HappnerCluster.create(remoteInstance1Config(2)), - HappnerCluster.create(remoteInstance2Config(3)) + HappnerCluster.create( + remoteInstance1Config([getSeq.lookupFirst(), getSeq.lookupFirst() + 1]) + ), + HappnerCluster.create( + remoteInstance2Config([getSeq.lookupFirst(), getSeq.lookupFirst() + 2]) + ) ]) ); await delay(5000); //wait for discvery