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 { console.log("evt: " , evt); console.log("Args: " + a,b,c); }); } } } // Second context console.log("Adding events to second context"); for(var i = 0;i { }); }; 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);