describe('Master start fail', () => { let master; after(() => master.close()); it('should master exit with 1', done => { mm.consoleLevel('NONE'); master = utils.cluster('apps/worker-die'); master.coverage(false); master.expect('code', 1).ready(done); }); });
describe('--cluster', () => { let app; before(() => { mm.consoleLevel('NONE'); app = utils.cluster('apps/cluster_mod_app'); app.coverage(false); return app.ready(); }); after(() => app.close()); it('should online cluster mode startup success', () => { return app.httpRequest() .get('/') .expect('hi cluster') .expect(200); }); it('should assign a free port by master', () => { return app.httpRequest() .get('/clusterPort') .expect(/\d+/) .expect(200); }); });
it('env=prod: level => info', async () => { mm.env('unittest'); mm.consoleLevel('NONE'); app = utils.app('apps/demo', { cache: false }); await app.ready(); const logdir = app.config.logger.dir; await app.httpRequest() .get('/logger?message=foo') .expect('logger'); await sleep(5000); const errorContent = fs.readFileSync(path.join(logdir, 'common-error.log'), 'utf8'); assert(errorContent.includes('nodejs.Error: error foo')); assert(errorContent.includes('nodejs.Error: core error foo')); const loggerContent = fs.readFileSync(path.join(logdir, 'demo-web.log'), 'utf8'); assert(!loggerContent.includes('debug foo')); assert(loggerContent.includes('info foo')); assert(loggerContent.includes('warn foo')); const coreLoggerContent = fs.readFileSync(path.join(logdir, 'egg-web.log'), 'utf8'); assert(!coreLoggerContent.includes('core debug foo')); assert(coreLoggerContent.includes('core info foo')); assert(coreLoggerContent.includes('core warn foo')); });
describe('Master started log', () => { let app; afterEach(() => app.close()); it('should dev env stdout message include "Egg started"', done => { app = utils.cluster('apps/master-worker-started'); app.coverage(false); app.expect('stdout', /Egg started/).ready(done); }); it('should production env stdout message include "Egg started"', done => { mm.env('prod'); mm.consoleLevel('NONE'); mm.home(utils.getFilepath('apps/mock-production-app/config')); app = utils.cluster('apps/mock-production-app'); app.coverage(true); app.expect('stdout', /Egg started/).ready(done); }); });
it('env=unittest: level => info', async () => { mm.env('unittest'); mm.consoleLevel('NONE'); app = utils.app('apps/demo', { cache: false }); await app.ready();
mm.consoleLevel('NONE');
mm.consoleLevel('NONE');
describe('test/lib/cluster/cluster-client.test.js', () => { describe('common mode', () => { before(async () => { mm.consoleLevel('NONE'); app = utils.app('apps/cluster_mod_app'); await app.ready(); mm.consoleLevel('NONE'); app = await utils.singleProcessApp('apps/cluster_mod_app'); });
let app2; before(async () => { mm.consoleLevel('NONE'); app1 = utils.cluster('apps/cluster_mod_app'); app1.coverage(false);
it('env=local: level => info', async () => { mm.env('local'); mm.consoleLevel('NONE'); app = utils.app('apps/demo', { cache: false }); await app.ready(); const logdir = app.config.logger.dir; await app.httpRequest() .get('/logger?message=foo') .expect('logger'); await sleep(5000); const errorContent = fs.readFileSync(path.join(logdir, 'common-error.log'), 'utf8'); assert(errorContent.includes('nodejs.Error: error foo')); assert(errorContent.includes('nodejs.Error: core error foo')); const loggerContent = fs.readFileSync(path.join(logdir, 'demo-web.log'), 'utf8'); // loggerContent.should.containEql('debug foo'); assert(loggerContent.includes('info foo')); assert(loggerContent.includes('warn foo')); const coreLoggerContent = fs.readFileSync(path.join(logdir, 'egg-web.log'), 'utf8'); // coreLoggerContent.should.containEql('core debug foo'); assert(coreLoggerContent.includes('core info foo')); assert(coreLoggerContent.includes('core warn foo')); });