index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. const Eventual = require('../../lib/eventual');
  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. function pinger() {
  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',(e) => {
  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.emit('c1:ping').done((e) => {
  46. console.log("executed");
  47. });
  48. if( test > 10) { // 10 second
  49. cevt.destroy();
  50. ctx2.destroy();
  51. }
  52. test++;
  53. },1000);
  54. }
  55. function sequential() {
  56. // Testing done
  57. var cc = events.createContext();
  58. var cc2 = events.createContext();
  59. cc.on('hello',(e) => {
  60. e.wait();
  61. console.log("CC1 Hello will wait 1s");
  62. setTimeout(() => {
  63. e.done()
  64. },1000);
  65. });
  66. cc2.on('hello',(e) => {
  67. e.wait();
  68. console.log("cc2 Hello");
  69. setTimeout(() => {
  70. e.done();
  71. },2000);
  72. });
  73. console.log("Broadcasting hello");
  74. cc.broadcast('hello').done(() => {
  75. console.log("Hello called");
  76. });
  77. }
  78. //stressEvents();
  79. //pinger();
  80. //sequential();
  81. //
  82. // State changes
  83. var cc = events.createContext();
  84. var cc2 = events.createContext();
  85. //cc.emit('test');
  86. //cc.state('test',1);
  87. // call this
  88. cc2.on('test:test2',() => { // Should be calling it self
  89. console.log("Ok2");
  90. });
  91. cc.on('test:test2:test3',() => { // Should be calling it self
  92. console.log("ok3");
  93. });
  94. cc.onMatch('test.*',() => {
  95. console.log("Event matched");
  96. });
  97. cc2.broadcast('test:test2:test3');