@elastic/makelogs
Version:
Simple log generator for testing kibana
52 lines (42 loc) • 1.24 kB
JavaScript
var eventBuffer = [];
var argv = require('../argv');
var omitFields = require('../_omitFields');
var bulkQueue = require('./_bulkQueue')(eventBuffer);
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms))
eventBuffer.push = function (event) {
// pushing false is the sign that we are done pushing
if (event === false) {
eventBuffer.final = true;
} else {
omitFields(event.body);
Array.prototype.push.call(eventBuffer, event);
}
if (eventBuffer.length === 3000 || eventBuffer.final) {
return eventBuffer.flush();
}
};
// debounced a tiny bit so that all failed events in a
// bulk response will be retried together
var pending;
eventBuffer.flush = function () {
if (pending) return pending;
pending = sleep(1)
.then(function () {
pending = null;
return new Promise(function (resolve) {
argv.log('pushing', eventBuffer.length, 'events into the bulkQueue');
bulkQueue.push([eventBuffer.splice(0)], function (err) {
if (err) {
console.error(err.resp);
console.error(err.stack);
process.exit();
} else {
resolve();
}
});
});
});
return pending;
};
module.exports = eventBuffer;
;