mirror of
https://github.com/Unitech/pm2.git
synced 2025-12-08 20:35:53 +00:00
315 lines
7.7 KiB
JavaScript
315 lines
7.7 KiB
JavaScript
|
|
process.chdir(__dirname);
|
|
|
|
var PM2 = require('../..');
|
|
var should = require('should');
|
|
|
|
describe('API checks', function() {
|
|
this.timeout(1000);
|
|
|
|
describe('PM2 API case#1', function() {
|
|
before(function(done) {
|
|
PM2.delete('all', function() { done() });
|
|
});
|
|
|
|
after(function(done) {
|
|
PM2.kill(done);
|
|
});
|
|
|
|
it('should instanciate a new pm2 with old api', function() {
|
|
should.exists(PM2.pm2_home);
|
|
should(PM2.daemon_mode).be.true();
|
|
PM2.cwd.should.eql(process.cwd());
|
|
should.exists(PM2.Client);
|
|
});
|
|
|
|
it('should connect to PM2', function(done) {
|
|
PM2.connect(done);
|
|
});
|
|
|
|
it('should start a script', function(done) {
|
|
PM2.start('./../fixtures/child.js', function(err) {
|
|
should(err).be.null();
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(1);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should stop app by id', function(done) {
|
|
PM2.stop(0, done);
|
|
});
|
|
|
|
it('should start app by id', function(done) {
|
|
PM2.restart(0, done);
|
|
});
|
|
|
|
|
|
it('should fail if starting same script again', function(done) {
|
|
PM2.start('./../fixtures/child.js', function(err) {
|
|
should(err).not.be.null();
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(1);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should FORCE starting same script again', function(done) {
|
|
PM2.start('./../fixtures/child.js', {force :true }, function(err) {
|
|
should(err).be.null();
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(2);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should delete ALL', function(done) {
|
|
PM2.delete('all', function(err) {
|
|
should(err).be.null();
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(0);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('PM2 API case#2 (JSON style)', function() {
|
|
before(function(done) {
|
|
PM2.delete('all', function() { done() });
|
|
});
|
|
|
|
after(function(done) {
|
|
PM2.kill(done);
|
|
});
|
|
|
|
it('should start script in cluster mode, 4 instances', function(done) {
|
|
PM2.start({
|
|
script : './../fixtures/child.js',
|
|
instances : 4,
|
|
name : 'http-test'
|
|
}, function(err) {
|
|
should(err).be.null();
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(4);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should stop app', function(done) {
|
|
PM2.stop('http-test', function(err, procs) {
|
|
should(err).be.null();
|
|
procs.length.should.eql(4);
|
|
PM2.list(function(err, list) {
|
|
should(list.length).eql(4);
|
|
list.forEach(function(proc) {
|
|
proc.pm2_env.status.should.eql('stopped');
|
|
});
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should restart all apps', function(done) {
|
|
PM2.restart('http-test', function(err, procs) {
|
|
should(err).be.null();
|
|
PM2.list(function(err, list) {
|
|
should(list.length).eql(4);
|
|
list.forEach(function(proc) {
|
|
proc.pm2_env.status.should.eql('online');
|
|
});
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('Issue #2337', function() {
|
|
before(function(done) {
|
|
PM2.delete('all', function() { done() });
|
|
});
|
|
|
|
after(function(done) {
|
|
PM2.kill(done);
|
|
});
|
|
|
|
it('should start two app with same name', function(done) {
|
|
PM2.start({
|
|
script : './../fixtures/child.js',
|
|
instances : 2,
|
|
exec_mode : 'fork',
|
|
name : 'http-test'
|
|
}, function(err) {
|
|
should(err).be.null();
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
list.forEach(function(proc) {
|
|
proc.pm2_env.exec_mode.should.eql('fork_mode');
|
|
});
|
|
should(list.length).eql(2);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should stop first app', function(done) {
|
|
PM2.stop(0, done);
|
|
});
|
|
|
|
it('should force start a 3rd script', function(done) {
|
|
PM2.start('./../fixtures/child.js', {
|
|
force : true,
|
|
name : 'toto'
|
|
}, function() {
|
|
PM2.list(function(err, list) {
|
|
list.length.should.eql(3);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
describe('PM2 auto connect feature', function() {
|
|
after(function(done) {
|
|
PM2.kill(function() {
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should instanciate a new pm2 with old api', function() {
|
|
should.exists(PM2.pm2_home);
|
|
should(PM2.daemon_mode).be.true();
|
|
PM2.cwd.should.eql(process.cwd());
|
|
should.exists(PM2.Client);
|
|
});
|
|
|
|
it('should be able to start a script without connect', function(done) {
|
|
PM2.start('./../fixtures/child.js', function(err) {
|
|
should(err).be.null();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should do random commands', function(done) {
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(1);
|
|
PM2.delete('all', function(err) {
|
|
should(err).be.null();
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(0);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
describe('Custom PM2 instance', function() {
|
|
var pm2;
|
|
|
|
after(function(done) {
|
|
pm2.destroy(done);
|
|
});
|
|
|
|
it('should create new custom PM2 instance', function() {
|
|
pm2 = new PM2.custom({
|
|
independent : true,
|
|
daemon_mode : true
|
|
});
|
|
should.exists(pm2.pm2_home);
|
|
should(pm2.daemon_mode).be.true();
|
|
pm2.cwd.should.eql(process.cwd());
|
|
should.exists(pm2.Client);
|
|
});
|
|
|
|
it('should be able to start a script without connect', function(done) {
|
|
pm2.start('./../fixtures/child.js', function(err) {
|
|
should(err).be.null();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should do random commands', function(done) {
|
|
pm2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(1);
|
|
pm2.delete('all', function(err) {
|
|
should(err).be.null();
|
|
pm2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list.length).eql(0);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('Should start pm2 in do daemon mode', function() {
|
|
var pm2;
|
|
|
|
after(function(done) {
|
|
pm2.destroy(done);
|
|
});
|
|
|
|
it('should create new custom PM2 instance', function() {
|
|
pm2 = new PM2.custom({
|
|
independent : true,
|
|
daemon_mode : false
|
|
});
|
|
|
|
should.exists(pm2.pm2_home);
|
|
should(pm2.daemon_mode).be.false();
|
|
pm2.cwd.should.eql(process.cwd());
|
|
should.exists(pm2.Client);
|
|
});
|
|
});
|
|
|
|
describe('Launch modules', function() {
|
|
var Modularizer = require('../../lib/API/Modules/Modularizer');
|
|
var module = 'pm2-server-monit';
|
|
|
|
after(function(done) {
|
|
Modularizer.uninstall(PM2, module, done);
|
|
});
|
|
|
|
it('Should start up modules', function(done) {
|
|
this.timeout(5000);
|
|
PM2.connect(true, function(err) {
|
|
should(err).be.null();
|
|
|
|
Modularizer.install(PM2, module, function() {
|
|
PM2.stop(module, function() {
|
|
should(err).be.null();
|
|
|
|
PM2.launchModules(function(err) {
|
|
should(err).be.null();
|
|
|
|
PM2.list(function(err, list) {
|
|
should(err).be.null();
|
|
should(list[0].name).eql(module);
|
|
should(list[0].pm2_env.status).eql('online');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
});
|