summaryrefslogtreecommitdiff
path: root/node_modules/forever/test/helpers
diff options
context:
space:
mode:
authoryo mama <pepper@scannerjammer.com>2015-04-04 01:00:59 -0700
committeryo mama <pepper@scannerjammer.com>2015-04-04 01:00:59 -0700
commitc7c22e3db1c826bcfb2bc66651ec480aae0d4ae0 (patch)
tree8546df448afef40d3814d2581f4dacff7cebb87f /node_modules/forever/test/helpers
Diffstat (limited to 'node_modules/forever/test/helpers')
-rw-r--r--node_modules/forever/test/helpers/macros.js93
-rw-r--r--node_modules/forever/test/helpers/mocks/child-process.js12
-rw-r--r--node_modules/forever/test/helpers/mocks/monitor.js25
-rw-r--r--node_modules/forever/test/helpers/mocks/stream.js19
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;
+};
+