123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- const Eventual = require('../../lib/eventual');
- const Benchmark = require('../../lib/utils/benchmark');
- var events = new Eventual();
- function ntokb(n) {
- var suffix = ["B","KB","MB","GB"];
- var si = 0;
- while( n> 1024 && si< suffix.length) {
- n/=1024;
- si++;
- }
- return n.toFixed(2) + " " +suffix[si];
- }
- var test = new Set();
- test.add("hello:world");
- if(test.has("hello:world")) {
- console.log("True is not reference");
- };
- function makeid()
- {
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for( var i=0; i < 5; i++ )
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- return text;
- }
- var g = events.createContext();
- console.log("Context MODEL: " + g.version);
- function createContexts() {
- var ncount = 1000000;
- var r= [];
- console.log("Adding",ncount,"contexts");
- for(var i = 0;i<ncount;i++) {
- r.push(events.createContext());
- }
- return r;
- }
- function stressEvents() {
- var ctx = events.createContext();
- var ctx2 = events.createContext();
-
- // 1 million
- var ncount = 100;
- console.log("Adding",ncount * ncount*ncount,"events in 2 contexts");
- for(var i = 0;i<ncount;i++) {
- // Create random contexts too
- var evtName = makeid();
- for(var j = 0;j<ncount;j++) {
- var n2 = evtName + ":" + makeid();
- for(var k = 0;k<ncount;k++) {
- var n3 = n2+":"+k;
- ctx.on(evtName,(a,b,c,evt) => {
- console.log("evt: " , evt);
- console.log("Args: " + a,b,c);
- });
- }
- }
- }
- // Second context
- console.log("Adding events to second context");
- for(var i = 0;i<ncount;i++) {
- ctx2.on('test:test',(a,b,c) => { });
- };
- return [ctx,ctx2];
- }
- function pinger() {
- var pingbm = new Benchmark();
- var pctx = events.createContext();
-
- pctx.on('c1:ping',(e) => {
- console.log("Pong: " + pingbm.mark(), "Contexts:",events._events.ctx.size,"Memory:",ntokb(process.memoryUsage().heapTotal));
- })
- setInterval(() => {
- pingbm.start();
- pctx.emit('c1:ping');
- },500);
- }
- function sequential() {
- // Testing done
- var cc = events.createContext();
- var cc2 = events.createContext();
- cc.on('hello',(e) => {
- e.wait();
- console.log("CC1 Hello will wait 1s");
- setTimeout(() => {
- e.done()
- },1000);
- });
- cc2.on('hello',(e) => {
- e.wait();
- console.log("cc2 Hello");
- setTimeout(() => {
- e.done();
- },2000);
- });
- console.log("Broadcasting hello");
- cc.emit('hello').done(() => {
- console.log("Hello called");
- });
- }
- pinger();
- console.log("Turning on stress in 10s");
- var contextList;
- setTimeout(() => {
- console.log("Stressing events");
- contextList = stressEvents();
- },10000);
- setTimeout(() => {
- console.log("Clearing events context");
- contextList.forEach(c => c.destroy())
- contextList = null;
- },20000);
- setTimeout(() => {
- contextList = createContexts();
- },30000);
- setTimeout(() => stressEvents(),40000);
|