diff options
Diffstat (limited to 'node_modules/forever/test/helpers')
| -rw-r--r-- | node_modules/forever/test/helpers/macros.js | 93 | ||||
| -rw-r--r-- | node_modules/forever/test/helpers/mocks/child-process.js | 12 | ||||
| -rw-r--r-- | node_modules/forever/test/helpers/mocks/monitor.js | 25 | ||||
| -rw-r--r-- | node_modules/forever/test/helpers/mocks/stream.js | 19 |
4 files changed, 149 insertions, 0 deletions
diff --git a/node_modules/forever/test/helpers/macros.js b/node_modules/forever/test/helpers/macros.js new file mode 100644 index 0000000..47471f4 --- /dev/null +++ b/node_modules/forever/test/helpers/macros.js @@ -0,0 +1,93 @@ +/* + * macros.js: Test macros for the forever module + * + * (C) 2010 Nodejitsu Inc. + * MIT LICENCE + * + */ + +var assert = require('assert'), + path = require('path'), + spawn = require('child_process').spawn, + nssocket = require('nssocket'), + forever = require('../../lib/forever'), + Worker = require('../../lib/forever/worker').Worker; + +var macros = exports; + +macros.assertTimes = function (script, times, options) { + options.max = times; + + return { + topic: function () { + var child = new (forever.Monitor)(script, options); + child.on('exit', this.callback.bind({}, null)); + child.start(); + }, + "should emit 'exit' when completed": function (err, child) { + assert.equal(child.times, times); + } + } +}; + +macros.spawn = function (args, options) { + options.topic = function () { + var self = this; + + args = [path.join(__dirname, '..', 'bin', 'forever')].concat(args); + + var child = spawn(process.argv[0], args), + stdout = '', + stderr = ''; + + child.stdout.on('data', function (data) { + stdout += data; + }); + child.stderr.on('data', function (data) { + stderr += data; + }); + child.once('exit', function (exitCode) { + // + // Remark: We wait 200 ms because of forever boot up time (master + // doesn't wait for slave to start up after it's forked, it just quits) + // + setTimeout(function () { + self.callback(null, exitCode, stdout, stderr); + }, 200); + }); + }; + return options; +}; + +macros.list = function (options) { + options.topic = function () { + forever.list(false, this.callback) + }; + return options; +}; + +macros.assertStartsWith = function (string, substring) { + assert.equal(string.slice(0, substring.length), substring); +}; + +macros.assertList = function (list) { + assert.isNotNull(list); + assert.lengthOf(list, 1); +}; + +macros.assertWorkerConnected = function (workerOptions, batch) { + return { + topic: function () { + var self = this, + reader = new nssocket.NsSocket(), + worker = new Worker(workerOptions); + + worker.start(function (err, sock) { + reader.connect(sock, function () { + self.callback(null, reader, worker, workerOptions); + }); + }); + }, + 'worker should connect': batch + }; +}; diff --git a/node_modules/forever/test/helpers/mocks/child-process.js b/node_modules/forever/test/helpers/mocks/child-process.js new file mode 100644 index 0000000..5b96147 --- /dev/null +++ b/node_modules/forever/test/helpers/mocks/child-process.js @@ -0,0 +1,12 @@ +var util = require('util'), + EventEmitter2 = require('eventemitter2').EventEmitter2, + StreamMock = require('./stream').StreamMock; + +var ChildProcessMock = exports.ChildProcessMock = function () { + EventEmitter2.call(this); + + this.stdout = new StreamMock(); + this.stderr = new StreamMock(); +}; +util.inherits(ChildProcessMock, EventEmitter2); + diff --git a/node_modules/forever/test/helpers/mocks/monitor.js b/node_modules/forever/test/helpers/mocks/monitor.js new file mode 100644 index 0000000..411780d --- /dev/null +++ b/node_modules/forever/test/helpers/mocks/monitor.js @@ -0,0 +1,25 @@ +var util = require('util'), + broadway = require('broadway'), + ChildProcessMock = require('./child-process').ChildProcessMock; + +var MonitorMock = exports.MonitorMock = function (options) { + broadway.App.call(this, options); + + this.child = new ChildProcessMock(); + this.running = false; +}; +util.inherits(MonitorMock, broadway.App); + +MonitorMock.prototype.__defineGetter__('data', function () { + return { + uid: '_uid', + command: 'node' + } +}); + +MonitorMock.prototype.kill = MonitorMock.prototype.stop = function (forceStop) { + this.running = false; + + this.emit('stop'); +}; + diff --git a/node_modules/forever/test/helpers/mocks/stream.js b/node_modules/forever/test/helpers/mocks/stream.js new file mode 100644 index 0000000..17b04e2 --- /dev/null +++ b/node_modules/forever/test/helpers/mocks/stream.js @@ -0,0 +1,19 @@ +var util = require('util'), + EventEmitter2 = require('eventemitter2').EventEmitter2; + +var StreamMock = exports.StreamMock = function () { + EventEmitter2.call(this); + + this.contents = []; + this.closed = false; +}; +util.inherits(StreamMock, EventEmitter2); + +StreamMock.prototype.write = function (data) { + this.contents.push(data); +}; + +StreamMock.prototype.close = StreamMock.prototype.end = function () { + this.closed = true; +}; + |
