daily-storage
Version:
daily - The LevelDB storage abstaction
208 lines (189 loc) • 5.49 kB
JavaScript
var test = require('tap').test;
var endpoint = require('endpoint');
var setup = require('../setup.js')();
var CURRENT_SECOND = Math.floor(Date.now() / 1000);
setup.open();
test('write a few messages', function (t) {
var writeRequest = {
'type': 'write',
'id': 0,
'seconds': 0,
'milliseconds': 500,
'level': 1,
'message': new Buffer(0)
};
t.test('message 1', function (t) {
writeRequest.level = 1;
writeRequest.seconds = CURRENT_SECOND + 2000;
writeRequest.message = new Buffer('message - 1');
setup.storage.write(writeRequest, function (err, response) {
t.equal(err, null);
t.equal(response.error, null);
t.end();
});
});
t.test('message 2', function (t) {
writeRequest.level = 2;
writeRequest.seconds = CURRENT_SECOND + 2001;
writeRequest.message = new Buffer('message - 2');
setup.storage.write(writeRequest, function (err, response) {
t.equal(err, null);
t.equal(response.error, null);
t.end();
});
});
t.test('message 3', function (t) {
writeRequest.level = 3;
writeRequest.seconds = CURRENT_SECOND + 2999;
writeRequest.message = new Buffer('message - 3');
setup.storage.write(writeRequest, function (err, response) {
t.equal(err, null);
t.equal(response.error, null);
t.end();
});
});
t.test('message 4', function (t) {
writeRequest.level = 4;
writeRequest.seconds = CURRENT_SECOND + 3000;
writeRequest.message = new Buffer('message - 4');
setup.storage.write(writeRequest, function (err, response) {
t.equal(err, null);
t.equal(response.error, null);
t.end();
});
});
});
test('no interval', function (t) {
setup.storage.reader({
startSeconds: null,
startMilliseconds: null,
endSeconds: null,
endMilliseconds: null,
levels: [1, 9]
}).pipe(endpoint({ objectMode: true }, function (err, items) {
t.equal(err, null);
items = items.slice(0, -1).map(function (item) { return item.message.toString(); });
t.deepEqual(items, [
'message - 4',
'message - 3',
'message - 2',
'message - 1'
]);
t.end();
}));
});
test('no range level interval', function (t) {
setup.storage.reader({
startSeconds: null,
startMilliseconds: null,
endSeconds: null,
endMilliseconds: null,
levels: [1, 1]
}).pipe(endpoint({ objectMode: true }, function (err, items) {
t.equal(err, null);
items = items.slice(0, -1).map(function (item) { return item.message.toString(); });
t.deepEqual(items, [
'message - 1'
]);
t.end();
}));
});
test('half range level interval', function (t) {
setup.storage.reader({
startSeconds: null,
startMilliseconds: null,
endSeconds: null,
endMilliseconds: null,
levels: [2, 3]
}).pipe(endpoint({ objectMode: true }, function (err, items) {
t.equal(err, null);
items = items.slice(0, -1).map(function (item) { return item.message.toString(); });
t.deepEqual(items, [
'message - 3',
'message - 2'
]);
t.end();
}));
});
test('outside level interval', function (t) {
setup.storage.reader({
startSeconds: null,
startMilliseconds: null,
endSeconds: null,
endMilliseconds: null,
levels: [8, 9]
}).pipe(endpoint({ objectMode: true }, function (err, items) {
t.equal(err, null);
items = items.slice(0, -1).map(function (item) { return item.message.toString(); });
t.deepEqual(items, []);
t.end();
}));
});
test('simple time interval', function (t) {
setup.storage.reader({
startSeconds: CURRENT_SECOND + 1000,
startMilliseconds: 0,
endSeconds: CURRENT_SECOND + 2500,
endMilliseconds: 0,
levels: [1, 9]
}).pipe(endpoint({ objectMode: true }, function (err, items) {
t.equal(err, null);
items = items.slice(0, -1).map(function (item) { return item.message.toString(); });
t.deepEqual(items, [
'message - 2',
'message - 1'
]);
t.end();
}));
});
test('single timestamp interval', function (t) {
setup.storage.reader({
startSeconds: CURRENT_SECOND + 2000,
startMilliseconds: 500,
endSeconds: CURRENT_SECOND + 2000,
endMilliseconds: 500,
levels: [1, 9]
}).pipe(endpoint({ objectMode: true }, function (err, items) {
t.equal(err, null);
items = items.slice(0, -1).map(function (item) { return item.message.toString(); });
t.deepEqual(items, [
'message - 1'
]);
t.end();
}));
});
test('no start time interval', function (t) {
setup.storage.reader({
startSeconds: null,
startMilliseconds: null,
endSeconds: CURRENT_SECOND + 2500,
endMilliseconds: 0,
levels: [1, 9]
}).pipe(endpoint({ objectMode: true }, function (err, items) {
t.equal(err, null);
items = items.slice(0, -1).map(function (item) { return item.message.toString(); });
t.deepEqual(items, [
'message - 2',
'message - 1'
]);
t.end();
}));
});
test('no end time interval', function (t) {
setup.storage.reader({
startSeconds: CURRENT_SECOND + 2500,
startMilliseconds: 0,
endSeconds: null,
endMilliseconds: null,
levels: [1, 9]
}).pipe(endpoint({ objectMode: true }, function (err, items) {
t.equal(err, null);
items = items.slice(0, -1).map(function (item) { return item.message.toString(); });
t.deepEqual(items, [
'message - 4',
'message - 3'
]);
t.end();
}));
});
setup.close();