Skip to content

Commit

Permalink
Tests for open/stress fix
Browse files Browse the repository at this point in the history
  • Loading branch information
compulim committed Sep 12, 2014
1 parent 0c28041 commit 47d8857
Show file tree
Hide file tree
Showing 2 changed files with 137 additions and 0 deletions.
61 changes: 61 additions & 0 deletions test/transports/file-open-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* file-open-test.js: Tests for File transport "open" event
*
* (C) 2014 William Wong
* MIT LICENSE
*
*/

!function (assert, fs, os, path, vows, winston) {
'use strict';

vows.describe('winston/transports/file').addBatch({
'An instance of the File Transport': {
topic: function () {
var callback = this.callback.bind(this),
logPath = path.resolve(process.cwd(), '../fixtures/logs/file-open-test.log');

try {
fs.unlinkSync(logPath);
} catch (ex) {
if (ex && ex.code !== 'ENOENT') { return callback(ex); }
}

var fileTransport = new (winston.transports.File)({
filename: logPath
}),
logger = new (winston.Logger)({
transports: [fileTransport]
}),
timeline = {};

fileTransport.open(function () {
timeline.open = Date.now();

setTimeout(function () {
logger.info('Hello, World!', function () {
timeline.logged = Date.now();
});
}, 100);

setTimeout(function () {
callback(null, timeline);
}, 1000);
});
},
'should fire "open" event': function (results) {
assert.isTrue(!!results.open);
},
'should fire "logged" event': function (results) {
assert.isTrue(!!results.logged);
}
}
}).export(module);
}(
require('assert'),
require('fs'),
require('os'),
require('path'),
require('vows'),
require('../../lib/winston')
);
76 changes: 76 additions & 0 deletions test/transports/file-stress-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
* file-stress-test.js: Tests for stressing File transport
*
* (C) 2014 William Wong
* MIT LICENSE
*
*/

!function (assert, fs, os, path, vows, winston) {
'use strict';

vows.describe('winston/transports/file').addBatch({
'A stressed instance of the File Transport': {
topic: function () {
var callback = this.callback.bind(this),
logPath = path.resolve(process.cwd(), '../fixtures/logs/file-stress-test.log');

try {
fs.unlinkSync(logPath);
} catch (ex) {
if (ex && ex.code !== 'ENOENT') { return callback(ex); }
}

var fileTransport = new (winston.transports.File)({
filename: logPath
}),
logger = new (winston.Logger)({
transports: [fileTransport]
});

fileTransport.on('open', function () {
setTimeout(function () {
clearInterval(interval);

logger.query({ order: 'asc' }, function (err, results) {
callback(null, results);
});
}, 100);
});

var logIndex = 0,
interval = setInterval(function () {
logger.info(++logIndex);
stress(200);
}, 0);

logger.info(++logIndex);
stress(200);

function stress(duration) {
var startTime = Date.now();

while (Date.now() - startTime < duration) {
Math.sqrt(Math.PI);
}
}
},
'should not skip any log lines': function (results) {
var testIndex = 0;

results.file.forEach(function (log) {
if (+log.message !== ++testIndex) {
throw new Error('Number skipped');
}
});
}
}
}).export(module);
}(
require('assert'),
require('fs'),
require('os'),
require('path'),
require('vows'),
require('../../lib/winston')
);

0 comments on commit 47d8857

Please sign in to comment.