nope/test/testAmqpServer.ts

70 lines
2.0 KiB
TypeScript
Raw Normal View History

2020-09-30 06:25:03 +00:00
import 'reflect-metadata';
2020-11-09 14:28:09 +00:00
import { promisify } from 'util';
import { AmqpLayer } from "../lib/communication/amqpLayer";
2020-09-30 06:25:03 +00:00
import { nopeDispatcher } from "../lib/dispatcher/nopeDispatcher";
2020-11-09 14:28:09 +00:00
import { getNopeLogger } from "../lib/logger/getLogger";
import { NopeObservable } from "../lib/observables/nopeObservable";
import { generateBenchmarkFunction } from "../modules/funcs/generateBenchmarkFunction";
2020-09-30 06:25:03 +00:00
const client = new AmqpLayer('localhost');
const sleep = promisify(setTimeout)
2020-11-09 14:28:09 +00:00
const logger = getNopeLogger('dispatcher','info')
2020-09-30 06:25:03 +00:00
function genFunc(name, delay) {
2020-11-09 14:28:09 +00:00
const logger = getNopeLogger('debug',name)
2020-09-30 06:25:03 +00:00
return (idx: number) => {
return new Promise((resolve, reject) => {
try {
logger.info('started ' + idx.toString());
setTimeout(() => {
logger.info('finished ' + idx.toString());
resolve();
}, delay);
} catch(e){
reject(e)
}
})
}
}
const main = async () => {
await sleep(1000);
2020-11-09 14:28:09 +00:00
const dispatcher = new nopeDispatcher({ communicator: client, logger }, () => new NopeObservable());
2020-09-30 06:25:03 +00:00
const benchmarkFunction = generateBenchmarkFunction(1000, 'Function');
const benchmarkDirect = generateBenchmarkFunction(1000, 'Direct');
const benchmarkObservable = generateBenchmarkFunction(1000, 'Observable');
// Register Functions
dispatcher.registerFunction(genFunc('dispatcher-1-slow', 2000), {
id: 'func'
});
dispatcher.registerFunction(async () => benchmarkFunction(), {
id: 'benchmark'
});
await client.on('subscribe','benchmark', benchmarkDirect);
await sleep(500);
2020-11-09 14:28:09 +00:00
const obs01 = new NopeObservable<number>();
2020-09-30 06:25:03 +00:00
obs01.subscribe(benchmarkObservable);
dispatcher.registerObservable(obs01, {
mode: 'subscribe',
topic: 'test.var'
});
dispatcher.registerObservable(obs01, {
mode: 'subscribe',
topic: 'test.var'
});
}
main();