@betit/orion
Version:
Pluggable microservice framework
49 lines (41 loc) • 1.35 kB
JavaScript
const orion = require('..');
const codec = new orion.MsgPackCodec();
const server = new orion.NatsTransport();
const client = new orion.NatsTransport();
///////////////////////////////////////
// Request Performance
///////////////////////////////////////
const timeout = 20000;
const loop = 100000;
const hash = 1000;
let received = 0;
console.log('Request Performance Test');
let start = new Date();
server.handle('echo', 'perf', (req, reply) => {
const request = codec.decode(req);
const res = codec.encode(request);
reply(res);
});
server.listen(() => {
const req = codec.encode({ a: 2, b: 3 });
for (let i = 0; i < loop; i++) {
client.request('echo', req, res => {
if (res instanceof Error) {
console.log('Error:', res.message);
process.exit();
}
const response = codec.decode(res);
received += 1;
if (received === loop) {
let stop = new Date();
let rps = parseInt(loop / ((stop - start) / 1000));
console.log('\n' + rps + ' request-responses/sec');
let lat = parseInt(((stop - start) * 1000) / (loop * 2)); // Request=2, Reponse=2 RTs
console.log('Avg roundtrip latency: ' + lat + ' microseconds');
process.exit();
} else if (received % hash === 0) {
process.stdout.write('+');
}
}, timeout);
}
});