nope/test/testAmqpServer.ts

65 lines
1.8 KiB
TypeScript

/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2021-06-04 19:18:50
* @modify date 2021-06-04 19:18:50
* @desc [description]
*/
import "reflect-metadata";
import { promisify } from "util";
import { runNopeBackend } from "../lib/cli/runNopeBackend";
import { getNopeLogger } from "../lib/logger/getLogger";
import { NopeObservable } from "../lib/observables/nopeObservable";
import { generateBenchmarkFunction } from "../modules/funcs/generateBenchmarkFunction";
const sleep = promisify(setTimeout);
const logger = getNopeLogger("dispatcher","info");
/**
* Helper that will create a Sleep Function
* @param name
* @param delay
* @returns
*/
function genFunc(name, delay) {
const logger = getNopeLogger("debug",name);
return async (idx: number) => {
logger.info("started",name,"with input=",idx);
await sleep(delay);
logger.info("waited",name,"with input=",idx);
};
}
const main = async () => {
await sleep(1000);
logger.info("Creating Dispatcher");
const dispatcher = await runNopeBackend({skipLoadingConfig: true, channel:"amqp", log: "info"});
logger.info("Dispatcher ready");
const benchmarkFunction = generateBenchmarkFunction(1000, "Function");
const benchmarkObservable = generateBenchmarkFunction(1000, "Observable");
// Register Functions
dispatcher.registerFunction(genFunc("dispatcher-1-slow", 2000), {
id: "func"
});
dispatcher.registerFunction(async () => benchmarkFunction(), {
id: "benchmark"
});
await sleep(500);
const obs01 = new NopeObservable<number>();
obs01.subscribe(benchmarkObservable);
dispatcher.registerObservable(obs01, {
mode: "subscribe",
topic: "test.var",
schema: {}
});
};
main();