index.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const Eventual = require('./lib/eventual.js');
  2. const Benchmark = require('../../lib/utils/benchmark');
  3. function makeid()
  4. {
  5. var text = "";
  6. var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  7. for( var i=0; i < 5; i++ )
  8. text += possible.charAt(Math.floor(Math.random() * possible.length));
  9. return text;
  10. }
  11. var events = new Eventual();
  12. var cevt= events.createContext();
  13. var ctx2 = events.createContext();
  14. function stressEvents() {
  15. // 1 million
  16. var ncount = 1000000;
  17. console.log("Adding",ncount,"events");
  18. for(var i = 0;i<ncount;i++) {
  19. // Create random contexts too
  20. var evtName = makeid() + ":test";
  21. cevt.on(evtName,(a,b,c,evt) => {
  22. console.log("evt: " , evt);
  23. console.log("Args: " + a,b,c);
  24. });
  25. }
  26. // Second context
  27. console.log("Adding events to second context");
  28. for(var i = 0;i<ncount;i++) {
  29. ctx2.on('test:test',(a,b,c) => { });
  30. };
  31. }
  32. stressEvents();
  33. ctx2.on('c1:ping',() => {
  34. console.log("Pong from ctx2");
  35. });
  36. var pingbm = new Benchmark();
  37. var pctx = events.createContext();
  38. pctx .on('c1:ping',() => {
  39. console.log("Pong: " + pingbm.mark(), "Contexts:",events._events.ctx.length);
  40. })
  41. var test = 0;
  42. setInterval(() => {
  43. pingbm.start();
  44. console.log("Sending ping");
  45. pctx.broadcast('c1:ping');
  46. if( test > 5) {
  47. cevt.destroy();
  48. ctx2.destroy();
  49. }
  50. test++;
  51. },1000);