const displayNumberOfEventProcessedBySeconds = (time) => { const elapsed = process.hrtime(time)[1] / 1000000; // divide by a million to get nano to milli const perSecond = (1000 * NUMBER_OF_EVENTS_TO_THROW) / elapsed; const millionEventProcessedPerSecond = perSecond / 1000000; const millionEventProcessedPerSecondBeautiful = Math.round(millionEventProcessedPerSecond * 100) / 100; logger.info( `Processed 1 million events in ${elapsed} ms, so ${millionEventProcessedPerSecondBeautiful}M events/per second`, ); }
const bench = async () => { const start = process.hrtime(); for (let i = 0; i < NUMBER_OF_SCENE_TO_REGISTER; i += 1) { sceneManager.execute(String(i)); } sceneManager.queue.start(() => { displayNumberOfEventProcessedBySeconds(start); bench(); }); }
it("should decrement the timeout with elapsed time", () => { broker.mcall.mockClear(); let ctx = new Context(broker); ctx.startHrTime = process.hrtime(); ctx.options.timeout = 1000; clock.tick(300); let p = { id: 5 }; let a = [ { action: "posts.find", params: p }, { action: "posts.list", params: p } ]; let opts = {}; ctx.mcall(a, opts); expect(broker.mcall).toHaveBeenCalledTimes(1); let bopts = broker.mcall.mock.calls[0][1]; expect(bopts.timeout).toBe(700); });
ping(target, port, local) { return new Promise((resolve, reject) => { let s = new require("net").Socket(); let start = process.hrtime(); s.connect({ port, host: target, localAddress: local, family: 4 }, () => { let time_arr = process.hrtime(start); let time = (time_arr[0] * 1e9 + time_arr[1]) / 1e6; resolve(time); s.destroy(); }); s.on('error', e => { s.destroy(); reject(e); }); s.setTimeout(1900, function() { s.destroy(); reject(new Error("Socket timeout")); }); }); }
it("should throw RequestSkippedError with array", () => { broker.mcall.mockClear(); let ctx = new Context(broker); ctx.startHrTime = process.hrtime(); ctx.options.timeout = 200; clock.tick(300); let p = { id: 5 }; let a = [ { action: "posts.find", params: p }, { action: "posts.list", params: p } ]; let opts = {}; return ctx.mcall(a, opts).then(protectReject).catch(err => { expect(broker.mcall).toHaveBeenCalledTimes(0); expect(err).toBeInstanceOf(RequestSkippedError); expect(err.data.action).toBe("posts.find, posts.list"); }); });
function reportEventloopLag(start, gauge) { const delta = process.hrtime(start); const nanosec = delta[0] * 1e9 + delta[1]; const seconds = nanosec / 1e9; gauge.set(seconds); }
const displayNumberOfEventProcessedBySeconds = (time) => { const seconds = process.hrtime(time)[0]; const elapsed = seconds + process.hrtime(time)[1] / 1000000 / 1000; const perSecond = (NUMBER_OF_SCENE_TO_REGISTER * NUMBER_OF_ACTIONS_PER_SCENE) / elapsed; const millionsEventProcessedPerSecond = perSecond / 1000000; const millionsEventProcessedPerSecondBeautiful = Math.round(millionsEventProcessedPerSecond * 100) / 100; logger.info( `Executed 1 million actions in ${elapsed} s, so ${millionsEventProcessedPerSecondBeautiful}M actions/per second`, ); }
function getNanoSeconds() { const time = process.hrtime(); return time[0] * 1e9 + time[1]; }
const displayNumberOfEventProcessedBySeconds = (time) => { const elapsed = process.hrtime(time)[1] / 1000000; // divide by a million to get nano to milli const perSecond = (1000 * NUMBER_OF_EVENTS_TO_THROW) / elapsed; const millionEventProcessedPerSecond = perSecond / 1000000; const millionEventProcessedPerSecondBeautiful = Math.round(millionEventProcessedPerSecond * 100) / 100; logger.info( `Processed 1 million events in ${elapsed} ms, so ${millionEventProcessedPerSecondBeautiful}M events/per second`, ); }
const bench = async () => { const start = process.hrtime(); for (let i = 0; i < NUMBER_OF_SCENE_TO_REGISTER; i += 1) { sceneManager.execute(String(i)); } sceneManager.queue.start(() => { displayNumberOfEventProcessedBySeconds(start); bench(); }); }
const displayNumberOfEventProcessedBySeconds = (time) => { const seconds = process.hrtime(time)[0]; const elapsed = seconds + process.hrtime(time)[1] / 1000000 / 1000; const perSecond = (NUMBER_OF_SCENE_TO_REGISTER * NUMBER_OF_ACTIONS_PER_SCENE) / elapsed; const millionsEventProcessedPerSecond = perSecond / 1000000; const millionsEventProcessedPerSecondBeautiful = Math.round(millionsEventProcessedPerSecond * 100) / 100; logger.info( `Executed 1 million actions in ${elapsed} s, so ${millionsEventProcessedPerSecondBeautiful}M actions/per second`, ); }
it("should throw RequestSkippedError with object", () => { broker.mcall.mockClear(); let ctx = new Context(broker); ctx.startHrTime = process.hrtime(); ctx.options.timeout = 200; clock.tick(300); let p = { id: 5 }; let a = { find: { action: "posts.find", params: p }, list: { action: "posts.list", params: p } }; let opts = {}; return ctx.mcall(a, opts).then(protectReject).catch(err => { expect(broker.mcall).toHaveBeenCalledTimes(0); expect(err).toBeInstanceOf(RequestSkippedError); expect(err.data.action).toBe("posts.find, posts.list"); }); });