added unit testing, and started implementing unit tests...phew
This commit is contained in:
153
node_modules/winston/test/transports/00-file-stress.test.js
generated
vendored
Normal file
153
node_modules/winston/test/transports/00-file-stress.test.js
generated
vendored
Normal file
@ -0,0 +1,153 @@
|
||||
'use strict';
|
||||
|
||||
/*
|
||||
* file-stress.test.js: Tests for stressing File transport: volume, ambient event loop lag.
|
||||
*
|
||||
* (C) 2016 Charlie Robbins
|
||||
* MIT LICENSE
|
||||
*
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const assume = require('assume');
|
||||
const helpers = require('../helpers');
|
||||
const split = require('split2');
|
||||
const winston = require('../../lib/winston');
|
||||
|
||||
describe('File (stress)', function () {
|
||||
this.timeout(30 * 1000);
|
||||
|
||||
const logPath = path.resolve(__dirname, '../fixtures/logs/file-stress-test.log');
|
||||
beforeEach(function () {
|
||||
try {
|
||||
fs.unlinkSync(logPath);
|
||||
} catch (ex) {
|
||||
if (ex && ex.code !== 'ENOENT') { return done(ex); }
|
||||
}
|
||||
});
|
||||
|
||||
it('should handle a high volume of writes', function (done) {
|
||||
const logger = winston.createLogger({
|
||||
transports: [new winston.transports.File({
|
||||
filename: logPath
|
||||
})]
|
||||
});
|
||||
|
||||
const counters = {
|
||||
write: 0,
|
||||
read: 0
|
||||
};
|
||||
|
||||
const interval = setInterval(function () {
|
||||
logger.info(++counters.write);
|
||||
}, 0);
|
||||
|
||||
setTimeout(function () {
|
||||
clearInterval(interval);
|
||||
|
||||
helpers.tryRead(logPath)
|
||||
.on('error', function (err) {
|
||||
assume(err).false();
|
||||
logger.close();
|
||||
done();
|
||||
})
|
||||
.pipe(split())
|
||||
.on('data', function (d) {
|
||||
const json = JSON.parse(d);
|
||||
assume(json.level).equal('info');
|
||||
assume(json.message).equal(++counters.read);
|
||||
})
|
||||
.on('end', function () {
|
||||
assume(counters.write).equal(counters.read);
|
||||
logger.close();
|
||||
done();
|
||||
});
|
||||
}, 10000);
|
||||
});
|
||||
|
||||
it('should handle a high volume of large writes', function (done) {
|
||||
const logger = winston.createLogger({
|
||||
transports: [new winston.transports.File({
|
||||
filename: logPath
|
||||
})]
|
||||
});
|
||||
|
||||
const counters = {
|
||||
write: 0,
|
||||
read: 0
|
||||
};
|
||||
|
||||
const interval = setInterval(function () {
|
||||
const msg = {
|
||||
counter: ++counters.write,
|
||||
message: 'a'.repeat(16384 - os.EOL.length - 1)
|
||||
};
|
||||
logger.info(msg);
|
||||
}, 0);
|
||||
|
||||
setTimeout(function () {
|
||||
clearInterval(interval);
|
||||
|
||||
helpers.tryRead(logPath)
|
||||
.on('error', function (err) {
|
||||
assume(err).false();
|
||||
logger.close();
|
||||
done();
|
||||
})
|
||||
.pipe(split())
|
||||
.on('data', function (d) {
|
||||
const json = JSON.parse(d);
|
||||
assume(json.level).equal('info');
|
||||
assume(json.message).equal('a'.repeat(16384 - os.EOL.length - 1));
|
||||
assume(json.counter).equal(++counters.read);
|
||||
})
|
||||
.on('end', function () {
|
||||
assume(counters.write).equal(counters.read);
|
||||
logger.close();
|
||||
done();
|
||||
});
|
||||
}, 10000);
|
||||
});
|
||||
|
||||
it('should handle a high volume of large writes synchronous', function (done) {
|
||||
const logger = winston.createLogger({
|
||||
transports: [new winston.transports.File({
|
||||
filename: logPath
|
||||
})]
|
||||
});
|
||||
|
||||
const counters = {
|
||||
write: 0,
|
||||
read: 0
|
||||
};
|
||||
|
||||
const msgs = new Array(10).fill().map(() => ({
|
||||
counter: ++counters.write,
|
||||
message: 'a'.repeat(16384 - os.EOL.length - 1)
|
||||
}));
|
||||
msgs.forEach(msg => logger.info(msg));
|
||||
|
||||
setTimeout(function () {
|
||||
helpers.tryRead(logPath)
|
||||
.on('error', function (err) {
|
||||
assume(err).false();
|
||||
logger.close();
|
||||
done();
|
||||
})
|
||||
.pipe(split())
|
||||
.on('data', function (d) {
|
||||
const json = JSON.parse(d);
|
||||
assume(json.level).equal('info');
|
||||
assume(json.message).equal('a'.repeat(16384 - os.EOL.length - 1));
|
||||
assume(json.counter).equal(++counters.read);
|
||||
})
|
||||
.on('end', function () {
|
||||
assume(counters.write).equal(counters.read);
|
||||
logger.close();
|
||||
done();
|
||||
});
|
||||
}, 10000);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user