@nsshunt/stsappframework 2.19.235 → 2.19.239

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/serverprocessbase.js +7 -7
  2. package/dist/serverprocessbase.js.map +1 -1
  3. package/dist/singleprocessbase.js +3 -3
  4. package/dist/singleprocessbase.js.map +1 -1
  5. package/dist/stslatencycontroller.js +5 -1
  6. package/dist/stslatencycontroller.js.map +1 -1
  7. package/dist/tcpserver/app.js +3 -2
  8. package/dist/tcpserver/app.js.map +1 -1
  9. package/dist/tcpserver/appConfig.js +2 -1
  10. package/dist/tcpserver/appConfig.js.map +1 -1
  11. package/dist/testing/app.js +4 -3
  12. package/dist/testing/app.js.map +1 -1
  13. package/dist/testing/appConfig.js +7 -4
  14. package/dist/testing/appConfig.js.map +1 -1
  15. package/dist/testing/appWorkerWSS.js +137 -0
  16. package/dist/testing/appWorkerWSS.js.map +1 -0
  17. package/dist/testing/singleservertest.test.js +107 -3
  18. package/dist/testing/singleservertest.test.js.map +1 -1
  19. package/dist/workerprocessbase.js.map +1 -1
  20. package/package.json +2 -1
  21. package/src/kafkatesting/produce.js +0 -1
  22. package/src/processoptions.ts +5 -0
  23. package/src/serverprocessbase.ts +7 -7
  24. package/src/singleprocessbase.ts +3 -3
  25. package/src/stslatencycontroller.ts +5 -1
  26. package/src/tcpserver/app.ts +2 -2
  27. package/src/tcpserver/appConfig.ts +2 -1
  28. package/src/testing/app.ts +4 -3
  29. package/src/testing/appConfig.ts +9 -5
  30. package/src/testing/appWorkerWSS.ts +153 -0
  31. package/src/testing/docker-compose.yml +20 -0
  32. package/src/testing/singleservertest.test.ts +131 -4
  33. package/src/workerprocessbase.ts +0 -1
  34. package/types/processoptions.d.ts +4 -0
  35. package/types/processoptions.d.ts.map +1 -1
  36. package/types/serverprocessbase.d.ts +1 -1
  37. package/types/serverprocessbase.d.ts.map +1 -1
  38. package/types/stslatencycontroller.d.ts.map +1 -1
  39. package/types/tcpserver/appConfig.d.ts +1 -1
  40. package/types/tcpserver/appConfig.d.ts.map +1 -1
  41. package/types/testing/appConfig.d.ts +1 -1
  42. package/types/testing/appConfig.d.ts.map +1 -1
  43. package/types/testing/appWorkerWSS.d.ts +26 -0
  44. package/types/testing/appWorkerWSS.d.ts.map +1 -0
  45. package/types/workerprocessbase.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"workerprocessbase.js","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA+B;AAC/B,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAGjD,oEAA6E;AAG7E,+CAAiH;AACjH,qCAA4C;AAC5C,2DAAuD;AAEvD,+BAAoC;AAEpC,oDAA2B;AAE3B;;;;GAIG;AACH,MAAa,iBAAkB,SAAQ,qCAAiB;IAEpD,gBAAgB,GAAgB,EAAG,CAAA;IACnC,8BAA8B,GAAG,IAAI,CAAC,CAAC,WAAW;IAElD,YAAY,OAAuB;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kGAAkG;IAClG,yBAAyB,CAAC,GAAQ;QAC9B,mCAAmC;IACvC,CAAC;IAEQ,0BAA0B;QAC/B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAU,EAAE,KAAU,EAAE,EAAE;YACtD,+DAA+D;YAC/D,IAAI,CAAC,gBAAgB,CAAC,0BAAK,CAAC,sBAAsB,EAAE;gBAChD,GAAG,EAAE,KAAK;aACe,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,2BAA2B,GAAG,CAAC,OAA0B,EAAuB,EAAE;QAC9E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBACnC,MAAM,CAAC,qBAAqB,OAAO,CAAC,EAAE,+DAA+D,CAAC,CAAC;aAC1G;iBAAM;gBACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;oBAChC,iBAAiB,EAAE,EAAE,GAAG,OAAO,EAAE;oBACjC,EAAE,EAAE,GAAG,EAAE;wBACL,MAAM,MAAM,GAAe,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,cAA4B,CAAA;wBAC3G,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;wBACxD,UAAU,CAAC,GAAG,EAAE;4BACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBAC7C,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBACd,KAAK,CAAC,wCAAwC,OAAO,CAAC,EAAE,4CAA4C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAClL,OAAO,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC;oBACD,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE;wBACrB,UAAU,CAAC,GAAG,EAAE;4BACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBAC7C,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBACd,KAAK,CAAC,gCAAgC,IAAI,CAAC,8BAA8B,yBAAyB,OAAO,CAAC,EAAE,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACxM,MAAM,CAAC,+CAA+C,CAAC,CAAC;oBAC5D,CAAC,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,8BAA8B;iBACzE,CAAA;gBACD,KAAK,CAAC,6BAA6B,OAAO,CAAC,EAAE,0CAA0C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACrK,OAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAA;IAED,+DAA+D;IAC/D,SAAS,GAAG,KAAK,EAAE,OAAY,EAAmB,EAAE;QAChD,MAAM,cAAc,GAAe,MAAM,IAAI,CAAC,2BAA2B,CAAC;YACtE,eAAe,EAAE,IAAI;YACrB,EAAE,EAAE,IAAA,SAAM,GAAE;YACZ,OAAO,EAAE,+BAAiB,CAAC,SAAS;YACpC,aAAa,EAAE;gBACX,OAAO;aACV;SACJ,CAAC,CAAC;QACH,OAAO,cAAc,CAAC,QAAQ,CAAC;IACnC,CAAC,CAAA;IAED,+DAA+D;IAC/D,YAAY,GAAG,KAAK,EAAE,QAAgB,EAAE,OAAY,EAAuB,EAAE;QACzE,MAAM,cAAc,GAAe,MAAM,IAAI,CAAC,2BAA2B,CAAC;YACtE,eAAe,EAAE,IAAI;YACrB,EAAE,EAAE,IAAA,SAAM,GAAE;YACZ,OAAO,EAAE,+BAAiB,CAAC,YAAY;YACvC,aAAa,EAAE;gBACX,OAAO;gBACP,QAAQ;aACX;SACJ,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IAC1B,CAAC,CAAA;IAED,kBAAkB,GAAG,KAAK,IAAmB,EAAE;QAC3C,OAAO;IACX,CAAC,CAAA;IAED,WAAW,GAAG,KAAK,IAAI,EAAE;QAErB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC,CAAA;IAED,aAAa,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE;YACxF,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACjE;QAED,IAAI,CAAC,KAAK,CAAC,mDAAmD,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAEjG,+DAA+D;QAC/D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACrC,IAAI,GAAG,CAAC,eAAe,EAAE;gBACrB,MAAM,iBAAiB,GAAsB,GAAwB,CAAC;gBACtE,IAAI,iBAAiB,CAAC,EAAE,EAAE;oBACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;wBAC7C,MAAM,eAAe,GAAe,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;wBAChF,eAAe,CAAC,iBAAiB,CAAC,cAAc,GAAG,EAAE,GAAG,iBAAiB,CAAC,cAAc,EAAE,CAAA;wBAC1F,eAAe,CAAC,EAAE,EAAE,CAAC;qBACxB;yBAAM;wBACH,MAAM,IAAI,KAAK,CAAC,qDAAqD,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC;qBACjG;iBACJ;qBAAM;oBACH,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;iBACjG;gBACD,OAAO;aACV;YACD,IAAI,GAAG,CAAC,OAAO,EAAE,cAAc;aAC/B;gBACI,QAAQ,GAAG,CAAC,OAAO,EACnB;oBACA,KAAK,WAAW;wBACZ,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,gBAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC;wBACjG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,2EAA2E;wBAC9G,MAAM;oBACV,KAAK,kBAAkB;wBACnB,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,gBAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC;wBACjG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBACjC,MAAM;oBACV,KAAK,SAAS;wBACV,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC;wBAC/F,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACzC,MAAM;oBACV,KAAK,UAAU,EAAG,iDAAiD;wBAC/D,GAAG,CAAC,OAAO,CAAA;iBACd;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,6CAA6C;QAC7C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAE7B,IAAI,CAAC,KAAK,CAAC,uCAAuC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAE5B,IAAI,CAAC,KAAK,CAAC,sCAAsC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC;CACL;AApKD,8CAoKC"}
1
+ {"version":3,"file":"workerprocessbase.js","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA+B;AAC/B,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEjD,oEAA6E;AAG7E,+CAAiH;AACjH,qCAA4C;AAC5C,2DAAuD;AAEvD,+BAAoC;AAEpC,oDAA2B;AAE3B;;;;GAIG;AACH,MAAa,iBAAkB,SAAQ,qCAAiB;IAEpD,gBAAgB,GAAgB,EAAG,CAAA;IACnC,8BAA8B,GAAG,IAAI,CAAC,CAAC,WAAW;IAElD,YAAY,OAAuB;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kGAAkG;IAClG,yBAAyB,CAAC,GAAQ;QAC9B,mCAAmC;IACvC,CAAC;IAEQ,0BAA0B;QAC/B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAU,EAAE,KAAU,EAAE,EAAE;YACtD,+DAA+D;YAC/D,IAAI,CAAC,gBAAgB,CAAC,0BAAK,CAAC,sBAAsB,EAAE;gBAChD,GAAG,EAAE,KAAK;aACe,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,2BAA2B,GAAG,CAAC,OAA0B,EAAuB,EAAE;QAC9E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBACnC,MAAM,CAAC,qBAAqB,OAAO,CAAC,EAAE,+DAA+D,CAAC,CAAC;aAC1G;iBAAM;gBACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;oBAChC,iBAAiB,EAAE,EAAE,GAAG,OAAO,EAAE;oBACjC,EAAE,EAAE,GAAG,EAAE;wBACL,MAAM,MAAM,GAAe,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,cAA4B,CAAA;wBAC3G,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;wBACxD,UAAU,CAAC,GAAG,EAAE;4BACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBAC7C,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBACd,KAAK,CAAC,wCAAwC,OAAO,CAAC,EAAE,4CAA4C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAClL,OAAO,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC;oBACD,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE;wBACrB,UAAU,CAAC,GAAG,EAAE;4BACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBAC7C,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBACd,KAAK,CAAC,gCAAgC,IAAI,CAAC,8BAA8B,yBAAyB,OAAO,CAAC,EAAE,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACxM,MAAM,CAAC,+CAA+C,CAAC,CAAC;oBAC5D,CAAC,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC,8BAA8B;iBACzE,CAAA;gBACD,KAAK,CAAC,6BAA6B,OAAO,CAAC,EAAE,0CAA0C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACrK,OAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAA;IAED,+DAA+D;IAC/D,SAAS,GAAG,KAAK,EAAE,OAAY,EAAmB,EAAE;QAChD,MAAM,cAAc,GAAe,MAAM,IAAI,CAAC,2BAA2B,CAAC;YACtE,eAAe,EAAE,IAAI;YACrB,EAAE,EAAE,IAAA,SAAM,GAAE;YACZ,OAAO,EAAE,+BAAiB,CAAC,SAAS;YACpC,aAAa,EAAE;gBACX,OAAO;aACV;SACJ,CAAC,CAAC;QACH,OAAO,cAAc,CAAC,QAAQ,CAAC;IACnC,CAAC,CAAA;IAED,+DAA+D;IAC/D,YAAY,GAAG,KAAK,EAAE,QAAgB,EAAE,OAAY,EAAuB,EAAE;QACzE,MAAM,cAAc,GAAe,MAAM,IAAI,CAAC,2BAA2B,CAAC;YACtE,eAAe,EAAE,IAAI;YACrB,EAAE,EAAE,IAAA,SAAM,GAAE;YACZ,OAAO,EAAE,+BAAiB,CAAC,YAAY;YACvC,aAAa,EAAE;gBACX,OAAO;gBACP,QAAQ;aACX;SACJ,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IAC1B,CAAC,CAAA;IAED,kBAAkB,GAAG,KAAK,IAAmB,EAAE;QAC3C,OAAO;IACX,CAAC,CAAA;IAED,WAAW,GAAG,KAAK,IAAI,EAAE;QAErB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC,CAAA;IAED,aAAa,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE;YACxF,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACjE;QAED,IAAI,CAAC,KAAK,CAAC,mDAAmD,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAEjG,+DAA+D;QAC/D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACrC,IAAI,GAAG,CAAC,eAAe,EAAE;gBACrB,MAAM,iBAAiB,GAAsB,GAAwB,CAAC;gBACtE,IAAI,iBAAiB,CAAC,EAAE,EAAE;oBACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;wBAC7C,MAAM,eAAe,GAAe,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;wBAChF,eAAe,CAAC,iBAAiB,CAAC,cAAc,GAAG,EAAE,GAAG,iBAAiB,CAAC,cAAc,EAAE,CAAA;wBAC1F,eAAe,CAAC,EAAE,EAAE,CAAC;qBACxB;yBAAM;wBACH,MAAM,IAAI,KAAK,CAAC,qDAAqD,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC;qBACjG;iBACJ;qBAAM;oBACH,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;iBACjG;gBACD,OAAO;aACV;YACD,IAAI,GAAG,CAAC,OAAO,EAAE,cAAc;aAC/B;gBACI,QAAQ,GAAG,CAAC,OAAO,EACnB;oBACA,KAAK,WAAW;wBACZ,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,gBAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC;wBACjG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,2EAA2E;wBAC9G,MAAM;oBACV,KAAK,kBAAkB;wBACnB,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,gBAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC;wBACjG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBACjC,MAAM;oBACV,KAAK,SAAS;wBACV,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC,CAAC,IAAI,CAAC,CAAC;wBAC/F,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACzC,MAAM;oBACV,KAAK,UAAU,EAAG,iDAAiD;wBAC/D,GAAG,CAAC,OAAO,CAAA;iBACd;aACJ;QACL,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,6CAA6C;QAC7C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAE7B,IAAI,CAAC,KAAK,CAAC,uCAAuC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAE5B,IAAI,CAAC,KAAK,CAAC,sCAAsC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC;CACL;AApKD,8CAoKC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "2.19.235",
3
+ "version": "2.19.239",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -50,6 +50,7 @@
50
50
  "@nsshunt/stsdatamanagement": "^1.17.99",
51
51
  "@nsshunt/stsinstrumentation": "^6.11.87",
52
52
  "@nsshunt/stspublisherserver": "^1.15.84",
53
+ "@nsshunt/stssocketio-client": "^0.0.9",
53
54
  "@nsshunt/stsutils": "^1.16.6",
54
55
  "@socket.io/cluster-adapter": "^0.2.2",
55
56
  "@socket.io/redis-streams-adapter": "^0.1.0",
@@ -12,7 +12,6 @@ const kafka = new Kafka({
12
12
 
13
13
  const runme = async () => {
14
14
  const producer = kafka.producer()
15
-
16
15
  await producer.connect()
17
16
 
18
17
  const count = 100000;
@@ -161,4 +161,9 @@ export interface ProcessOptions {
161
161
  redisInstrumentationTransportUrl?: string
162
162
 
163
163
  workerExec?: string
164
+
165
+ /**
166
+ * Is this application using nodejs cluster mode?
167
+ */
168
+ clusterMode: boolean
164
169
  }
@@ -155,7 +155,7 @@ export class ServerProcessBase extends ProcessBase
155
155
  });
156
156
  }
157
157
 
158
- #SetupWSSServer = async (clusterMode: boolean): Promise<void> => {
158
+ #SetupWSSServer = async (): Promise<void> => {
159
159
  // socket.io
160
160
  // WebSocket
161
161
  const options: Partial<ServerOptions> = {
@@ -168,7 +168,7 @@ export class ServerProcessBase extends ProcessBase
168
168
  //this.#io = require("socket.io")(this.#httpServer, options);
169
169
  this.#io = new Server(this.#httpServer, options);
170
170
 
171
- if (clusterMode) {
171
+ if (this.options.clusterMode) {
172
172
  if (this.options.useRedisAdaptor) {
173
173
  this.LogEx(`Using Redis for socket.io cluster management (worker)`);
174
174
  if (this.options.redisAdaptorUrl) {
@@ -220,7 +220,7 @@ export class ServerProcessBase extends ProcessBase
220
220
  this.#SetupPrometheusEndPoints((this.#expressServer as STSExpressServer).App);
221
221
  }
222
222
  if (this.options.wssServer === true) {
223
- await this.#SetupWSSServer(true);
223
+ await this.#SetupWSSServer();
224
224
  }
225
225
  // https://stackoverflow.com/questions/21342828/node-express-unix-domain-socket-permissions
226
226
  //@@httpServer.listen('/tmp/stsrest01.sock').on('listening', () =>
@@ -271,7 +271,7 @@ export class ServerProcessBase extends ProcessBase
271
271
  // instrument timers (gauge etc.)
272
272
  // publisher
273
273
  // terminate UI (if loaded)
274
- Terminate = async (clusterMode: boolean, clusterPerformExit: boolean, signal?: any): Promise<void> => {
274
+ Terminate = async (clusterPerformExit: boolean, signal?: any): Promise<void> => {
275
275
  if (this.#shuttingDown === false) {
276
276
  this.#shuttingDown = true;
277
277
 
@@ -279,7 +279,7 @@ export class ServerProcessBase extends ProcessBase
279
279
 
280
280
  await this.ProcessTerminating();
281
281
 
282
- if (!clusterMode) {
282
+ if (!this.options.clusterMode) {
283
283
  if (this.GetUIController() !== null)
284
284
  {
285
285
  this.LogEx('Destroy the user interface controller.');
@@ -324,7 +324,7 @@ export class ServerProcessBase extends ProcessBase
324
324
  //await this.accessLayer.enddatabase();
325
325
  }
326
326
 
327
- if (clusterMode) {
327
+ if (this.options.clusterMode) {
328
328
  this.LogEx(`Performing exit value: [${clusterPerformExit}]`);
329
329
  if (clusterPerformExit) {
330
330
  this.LogEx(`Process will self terminate with process.exit(0).`);
@@ -350,7 +350,7 @@ export class ServerProcessBase extends ProcessBase
350
350
 
351
351
  await Sleep(1000); // Allow socket.io time to clean-up
352
352
 
353
- if (clusterMode) {
353
+ if (this.options.clusterMode) {
354
354
  if (clusterPerformExit) {
355
355
  setTimeout(() => {
356
356
  process.exit(0);
@@ -87,11 +87,11 @@ export class SingleProcessBase extends ServerProcessBase implements ISingleProce
87
87
  this.LogSystemTelemetry();
88
88
 
89
89
  process.on('SIGINT', async () => {
90
- await this.Terminate(false, false, 'SIGINT');
90
+ await this.Terminate(false, 'SIGINT');
91
91
  });
92
92
 
93
93
  process.on('SIGTERM', async () => {
94
- await this.Terminate(false, false, 'SIGTERM');
94
+ await this.Terminate(false, 'SIGTERM');
95
95
  });
96
96
 
97
97
  process.on('exit', (code) => {
@@ -111,6 +111,6 @@ export class SingleProcessBase extends ServerProcessBase implements ISingleProce
111
111
 
112
112
  async TerminateApplication()
113
113
  {
114
- await this.Terminate(false, false, 'SIGINT');
114
+ await this.Terminate(false, 'SIGINT');
115
115
  }
116
116
  }
@@ -12,7 +12,11 @@ export class STSLatencyController extends STSControllerBase
12
12
  async stslatency(req: any, res: any)
13
13
  {
14
14
  try {
15
- const retVal = { data: `Ping Completed At: ${Date.now()}` };
15
+ const retVal = {
16
+ data: `Ping Completed At: ${Date.now()}`,
17
+ pid: process.pid,
18
+ ppid: process.ppid
19
+ };
16
20
  return res.status(StatusCodes.OK).send(retVal);
17
21
  } catch (error) {
18
22
  console.error(error);
@@ -5,7 +5,7 @@ import { AppMaster } from './appmaster'
5
5
  import cluster from 'cluster';
6
6
 
7
7
  if (cluster.isPrimary) {
8
- new AppMaster(ServiceConfigOptions(cluster.isPrimary)).SetupServer();
8
+ new AppMaster(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
9
9
  } else {
10
- //new WorkerProcessBase(ServiceConfigOptions(cluster.isPrimary)).SetupServer();
10
+ new WorkerProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
11
11
  }
@@ -24,12 +24,13 @@ ${process.pid}${ModelDelimeter.COMPONENT_SEPERATOR}${(isMaster ? process.pid : p
24
24
  }
25
25
  */
26
26
 
27
- export function ServiceConfigOptions(isMaster: boolean): ProcessOptions {
27
+ export function ServiceConfigOptions(clusterMode: boolean, isMaster: boolean): ProcessOptions {
28
28
  if (isMaster === true) {
29
29
  const serviceInstanceId = uuidv4();
30
30
  const data: ProcessOptions = {
31
31
  serverType: STSServerType.TCPRAW_TLS,
32
32
 
33
+ clusterMode: clusterMode,
33
34
  wssServer: false,
34
35
  useLatency: false,
35
36
  httpsServerKeyPath: goptions.httpsserverkeypath,
@@ -1,10 +1,11 @@
1
- import { ServiceConfigOptions } from './appConfig.js'
1
+ import { ServiceConfigOptions } from './appConfig'
2
2
  import { MasterProcessBase, WorkerProcessBase } from './..'
3
+ import { WorkerProcess } from './appWorkerWSS'
3
4
 
4
5
  import cluster from 'cluster';
5
6
 
6
7
  if (cluster.isPrimary) {
7
- new MasterProcessBase(ServiceConfigOptions(cluster.isPrimary)).SetupServer();
8
+ new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
8
9
  } else {
9
- new WorkerProcessBase(ServiceConfigOptions(cluster.isPrimary)).SetupServer();
10
+ new WorkerProcess(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
10
11
  }
@@ -26,11 +26,12 @@ ${process.pid}${ModelDelimeter.COMPONENT_SEPERATOR}${(isMaster ? process.pid : p
26
26
  }
27
27
  */
28
28
 
29
- export function ServiceConfigOptions(isMaster: boolean): ProcessOptions {
29
+ export function ServiceConfigOptions(clusterMode: boolean, isMaster: boolean): ProcessOptions {
30
30
  if (isMaster === true) {
31
31
  const serviceInstanceId = uuidv4();
32
32
  const data: ProcessOptions = {
33
33
  serverType: STSServerType.EXPRESS_TLS,
34
+ clusterMode: clusterMode,
34
35
  wssServer: true,
35
36
  useLatency: true,
36
37
  httpsServerKeyPath: goptions.httpsserverkeypath,
@@ -51,10 +52,6 @@ export function ServiceConfigOptions(isMaster: boolean): ProcessOptions {
51
52
  serviceVersion: goptions.rest01serviceversion,
52
53
  consoleLogging: true,
53
54
  instrumentLogging: true,
54
-
55
- expressServerRouteFactory: (app: express.Express, stsApp: IProcessBase) => {
56
- return new STSExpressRouteFactory(app, stsApp);
57
- },
58
55
 
59
56
  instrumentationObservationInterval: goptions.instrumentationObservationInterval,
60
57
  instrumentationTimeWindow: goptions.instrumentationTimeWindow,
@@ -62,6 +59,13 @@ export function ServiceConfigOptions(isMaster: boolean): ProcessOptions {
62
59
  useRedisAdaptor: false,
63
60
  workerExec: './dist/testing/app.js'
64
61
  }
62
+
63
+ if (!clusterMode) {
64
+ data.expressServerRouteFactory = (app: express.Express, stsApp: IProcessBase) => {
65
+ return new STSExpressRouteFactory(app, stsApp);
66
+ }
67
+ }
68
+
65
69
  return data;
66
70
  } else {
67
71
  const data: ProcessOptions = JSON.parse(process.env['STS_GSD_SII'] as string) as ProcessOptions;
@@ -0,0 +1,153 @@
1
+ import debugModule from 'debug'
2
+ const debug = debugModule(`proc:${process.pid}`);
3
+
4
+ import { Socket } from 'socket.io'
5
+ import cluster from 'node:cluster';
6
+
7
+ import { WorkerProcessBase, STSNamespace, STSRoom, SocketIoServerHelper, ServerSocketEvent,
8
+ STSEvent, IProcessBase, STSSocketIONamespace } from './../index'
9
+
10
+ import { Sleep } from '@nsshunt/stsutils';
11
+
12
+ export enum InstrumentManagerEventName {
13
+ CONNECT = 'connect', //@@ should come from socketiohelper
14
+
15
+ SUBSCRIBE = 'stsInstrumentManager-Subscribe',
16
+ UNSUBSCRIBE = 'stsInstrumentManager-Unsubscribe',
17
+ SUBSCRIBE_KEEP_ALIVE = 'stsInstrumentManager-Subscribe-KeepAlive'
18
+ }
19
+
20
+ export interface IIPCSocketMessage {
21
+ socketId: string
22
+ workerId: number
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ data: any
25
+ }
26
+
27
+ export enum InstrumentManagerSubCommand {
28
+ OUTPUT_SUBSCRIPTION = 'stsInstrumentManager-OutputSubscriptions'
29
+ }
30
+
31
+ export enum IPCCommands {
32
+ PUBLISH_INSTRUMENT_DATA = 'PUBLISH_INSTRUMENT_DATA'
33
+ }
34
+
35
+ export class WorkerProcess extends WorkerProcessBase
36
+ {
37
+ #terminate = false;
38
+
39
+ constructor(options: any)
40
+ {
41
+ super(options);
42
+
43
+ //this.socketIoHelper = new SocketIoHelper(this as IProcessBase);
44
+ this.socketIoServerHelper = new SocketIoServerHelper({
45
+ logger: this.LogEx
46
+ });
47
+ }
48
+
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ ReceivedMessageFromMaster = async (messageData: any) => {
51
+ // Only response to these message types (note should be part of generic pub/sub pattern in framework)
52
+ if (messageData.subCommand) {
53
+ if (messageData.subCommand.localeCompare(InstrumentManagerSubCommand.OUTPUT_SUBSCRIPTION) === 0) {
54
+ //console.log(`WorkerProcess.ReceivedMessageFromMaster: messageData: [${JSON.stringify(messageData)}]`.grey);
55
+ console.log(`WorkerProcess.ReceivedMessageFromMaster`.grey);
56
+ const { socketId, workerId, model } = messageData; //@@ type
57
+
58
+ if (cluster.worker && cluster.worker.id !== workerId) {
59
+ // Invalid data - this workerId must match
60
+ console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid workerId: [${workerId}]. Should have been: [${cluster.worker.id}].`.red);
61
+ } else {
62
+ const workerProcess: WorkerProcess = this as WorkerProcess;
63
+ if (workerProcess.stsMonitorNamespace !== null) {
64
+ const stsMonitorNamespace = workerProcess.stsMonitorNamespace.socketionamespace;
65
+ const sockets = await stsMonitorNamespace.fetchSockets();
66
+ for (const socket of sockets) {
67
+ if (socket.id.localeCompare(socketId) === 0) {
68
+ console.log(`WorkerProcess.ReceivedMessageFromMaster: Sending payload to subscribed client.`.green);
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ socket.emit(STSEvent.STSSubInstrumentData as any, model);
71
+ return;
72
+ }
73
+ }
74
+ console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid socketId. Expecting socket to existing in socket namespace collection.`.red);
75
+ // Invalid - could not find matching socketid to send to
76
+ } else {
77
+ console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid workerProcess.stsMonitorNamespace is null. Expecting non-null value.`.red);
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+
84
+ #SendIPCMessageToMaster(socket: Socket, eventName: any, data: any): void {
85
+ try {
86
+ if (cluster.worker) {
87
+ console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${eventName}]`.grey);
88
+ const payload: IIPCSocketMessage = {
89
+ socketId: socket.id,
90
+ workerId: cluster.worker.id,
91
+ data: data
92
+ }
93
+ //console.log(`WorkerProcess.#SendIPCMessageToMaster: payload: [${JSON.stringify(payload)}]`.grey);
94
+ console.log(`WorkerProcess.#SendIPCMessageToMaster`.grey);
95
+ (process as any).send( { command: eventName, payload }, null, { swallowErrors: true }, (error: any) => {
96
+ if (error) {
97
+ console.error(`Error with WorkerProcess:SendIPCMessageToMaster(1): [${error}]`.red);
98
+ }
99
+ });
100
+ }
101
+ } catch (error) {
102
+ console.error(`Error with WorkerProcess:SendIPCMessageToMaster(2): [${error}]`.red);
103
+ }
104
+ }
105
+
106
+ #GetServerSocketEvent(eventName: any): ServerSocketEvent {
107
+ return {
108
+ serverEventName: eventName,
109
+ serverEventCb: (socket, data): void => this.#SendIPCMessageToMaster(socket, eventName, data)
110
+ }
111
+ }
112
+
113
+ WorkerStarted(): any
114
+ {
115
+ let socketIoNamespace: STSSocketIONamespace | null = null;
116
+ if (this.socketIoServerHelper) {
117
+ socketIoNamespace = this.socketIoServerHelper.SetupNamespace(this.io as any, STSNamespace.STSMonitor, [
118
+ STSRoom.STSInstrumentDataRoom,
119
+ STSRoom.STSRunnerRoom
120
+ ],
121
+ false,
122
+ [
123
+ this.#GetServerSocketEvent(InstrumentManagerEventName.SUBSCRIBE),
124
+ this.#GetServerSocketEvent(InstrumentManagerEventName.UNSUBSCRIBE),
125
+ this.#GetServerSocketEvent(InstrumentManagerEventName.SUBSCRIBE_KEEP_ALIVE),
126
+ {
127
+ serverEventName: InstrumentManagerEventName.CONNECT,
128
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
129
+ serverEventCb: (socket, data): void => {
130
+ console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${ InstrumentManagerEventName.CONNECT}]`.grey);
131
+ }
132
+ },
133
+ {
134
+ serverEventName: 'sts_connect',
135
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
136
+ serverEventCb: (socket, data): void => {
137
+ console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${ InstrumentManagerEventName.CONNECT}]`.grey);
138
+ socket.emit('sts_connect_reply', { someData: 'hello world'});
139
+ }
140
+ }
141
+ ]);
142
+ } else {
143
+ throw new Error('WorkerProcess:WorkerStarted(): this.socketIoHelper is null')
144
+ }
145
+ }
146
+
147
+ get stsMonitorNamespace(): STSSocketIONamespace | null {
148
+ if (this.socketIoServerHelper !== null) {
149
+ return this.socketIoServerHelper.GetNamespace(STSNamespace.STSMonitor);
150
+ }
151
+ return null;
152
+ }
153
+ }
@@ -0,0 +1,20 @@
1
+ version: '2'
2
+ services:
3
+ zookeeper:
4
+ image: wurstmeister/zookeeper
5
+ ports:
6
+ - "2181:2181"
7
+ restart: unless-stopped
8
+
9
+ kafka:
10
+ image: wurstmeister/kafka
11
+ ports:
12
+ - "9092:9092"
13
+ environment:
14
+ DOCKER_API_VERSION: 1.22
15
+ KAFKA_ADVERTISED_HOST_NAME: 192.168.14.92
16
+ KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
17
+ KAFKA_CREATE_TOPICS: "topic-name2:3:1"
18
+ volumes:
19
+ - /var/run/docker.sock:/var/run/docker.sock
20
+ restart: unless-stopped
@@ -15,13 +15,48 @@ import * as https from 'node:https'
15
15
 
16
16
  import { it, beforeAll, afterAll, test, describe, expect } from 'vitest';
17
17
 
18
+ import { ISocketDetail, SocketIoClientHelper, ISocketIoClientHelperOptions } from '@nsshunt/stssocketio-client'
19
+
20
+ import { WorkerProcessBase, STSNamespace, STSRoom, SocketIoServerHelper, ServerSocketEvent,
21
+ STSEvent, IProcessBase, STSSocketIONamespace, STSClientSocket } from './../index'
22
+
23
+ //const { Kafka } = require('kafkajs')
24
+
25
+ import { DockerComposeEnvironment, Wait, AlwaysPullPolicy } from 'testcontainers'
26
+
18
27
  describe("Single Server Test", () =>
19
28
  {
29
+ /*
30
+ const kafka = new Kafka({
31
+ clientId: 'my-app',
32
+ brokers: ['192.168.14.92:9092']
33
+ //brokers: ['localhost:9092', 'kafka2:9092'],
34
+ })
35
+ let producer: any;
36
+ let environment: any;
37
+ */
38
+
20
39
  let app: SingleProcessBase | MasterProcessBase | null = null;
21
40
  let httpsAgent: https.Agent | null = null;
22
41
 
23
42
  const endpoint = 'https://localhost'
24
43
 
44
+ const socketUtilsoptions: ISocketIoClientHelperOptions = {
45
+ agentOptions: {
46
+ keepAlive: goptions.keepAlive,
47
+ maxSockets: goptions.maxSockets,
48
+ maxTotalSockets: goptions.maxTotalSockets,
49
+ maxFreeSockets: goptions.maxFreeSockets,
50
+ timeout: 30000, //@@ config
51
+ rejectUnauthorized: goptions.isProduction // Allows self signed certs in non production mode(s)
52
+ }
53
+ }
54
+
55
+ const socketUtils = new SocketIoClientHelper(socketUtilsoptions);
56
+
57
+ const instrumentManagerAddress =
58
+ `${endpoint}:${goptions.rest01port}/${STSNamespace.STSMonitor}/`;
59
+
25
60
  const HandleError = (error: any) => {
26
61
  debug(`Error: [${error}]`.red)
27
62
  if (axios.isAxiosError(error)) {
@@ -69,8 +104,6 @@ describe("Single Server Test", () =>
69
104
  ,httpsAgent: httpsAgent
70
105
  });
71
106
 
72
- //debug(retVal.data);
73
-
74
107
  return retVal;
75
108
  } catch (error: any) {
76
109
  HandleError(error);
@@ -78,10 +111,63 @@ describe("Single Server Test", () =>
78
111
  }
79
112
  }
80
113
 
114
+ /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars */
115
+ /*
116
+ const socketDetail: ISocketDetail = socketUtils.SetupClientSideSocket('STSUITerm', instrumentManagerAddress, [
117
+ {
118
+ eventName: 'hello',
119
+ eventCb: (socket: any, data: any): void => {
120
+ debug(`Received: [hello:${data}]`);
121
+ }
122
+ },
123
+ {
124
+ eventName: 'goodbye',
125
+ eventCb: (socket: any, data: any) => {
126
+ debug(`Received: [goodbye:${data}]`);
127
+ }
128
+ },
129
+ {
130
+ eventName: 'registerEcho',
131
+ eventCb: (socket: any, data: any) => {
132
+ debug(`Received: [registerEcho:${JSON.stringify(data)}]`);
133
+ }
134
+ },
135
+ {
136
+ eventName: STSEvent.connect,
137
+ eventCb: (socket: STSClientSocket, data: any) => {
138
+ socket.emit('joinRoom', STSRoom.STSInstrumentDataRoom);
139
+ }
140
+ },
141
+ {
142
+ eventName: 'sts_connect_reply',
143
+ eventCb: (socket: STSClientSocket, data: any) => {
144
+ debug(`Received: [sts_connect_reply:${JSON.stringify(data)}]`);
145
+ }
146
+ }
147
+ ]);
148
+ */
81
149
 
82
150
  beforeAll(async () =>
83
151
  {
84
- debugModule.enable('proc*');
152
+ /*
153
+ const composeFilePath = "/home/marcusbettens/projects/stsappframework/src/testing";
154
+ const composeFile = "docker-compose.yml";
155
+ try {
156
+ environment = await new DockerComposeEnvironment(composeFilePath, composeFile)
157
+ .withWaitStrategy("kafka", Wait.forLogMessage("[KafkaServer id=1001] started (kafka.server.KafkaServer)"))
158
+ .withPullPolicy(new AlwaysPullPolicy())
159
+ .up()
160
+ } catch (error) {
161
+ console.error(error)
162
+ throw error;
163
+ }
164
+
165
+ */
166
+
167
+ /*
168
+ producer = kafka.producer()
169
+ await producer.connect()
170
+ */
85
171
 
86
172
  /*
87
173
  process.env.AS_ENDPOINT = testHelper.authHost;
@@ -95,7 +181,7 @@ describe("Single Server Test", () =>
95
181
  //goptions.asport = testHelper.authPort;
96
182
  */
97
183
 
98
- const appOptions = ServiceConfigOptions(true);
184
+ const appOptions = ServiceConfigOptions(true, true);
99
185
  appOptions.processExitOnTerminate = false;
100
186
  //app = new SingleProcessBase(appOptions)
101
187
  app = new MasterProcessBase(appOptions)
@@ -107,6 +193,11 @@ describe("Single Server Test", () =>
107
193
  {
108
194
  await Sleep(500);
109
195
 
196
+ // Kafka disconnect
197
+ //await producer.disconnect()
198
+
199
+ //@@await environment.down();
200
+
110
201
  //await (app as SingleProcessBase).TerminateApplication();
111
202
  await Sleep(1000);
112
203
  app = null;
@@ -131,11 +222,47 @@ describe("Single Server Test", () =>
131
222
  const num = 50;
132
223
  expect.assertions(num * 2);
133
224
  for (let i=0; i < num; i++) {
225
+
226
+ /*
227
+ const retValKafka = await producer.send({
228
+ topic: 'topic-name2',
229
+ messages: [
230
+ { key: 'key1', value: `hello world - ${i}` },
231
+ ],
232
+ })
233
+ */
234
+
134
235
  const retVal = await getLatency();
135
236
  const retValObj = retVal?.data.data;
136
237
  expect(retValObj).toMatch('Ping Completed At:');
137
238
  expect(retVal && retVal.status).toEqual(200);
138
239
  }
139
240
  }, 10000);
241
+
242
+ test('client socket testing', async () =>
243
+ {
244
+ expect.assertions(1);
245
+
246
+ let complete = false;
247
+
248
+ const socketDetail: ISocketDetail = socketUtils.SetupClientSideSocket('STSUITerm', instrumentManagerAddress, [
249
+ {
250
+ eventName: 'sts_connect_reply',
251
+ eventCb: (socket: STSClientSocket, data: any) => {
252
+ debug(`Received: [sts_connect_reply:${JSON.stringify(data)}]`);
253
+ expect(1).toEqual(1);
254
+ complete = true;
255
+ }
256
+ }
257
+ ]);
258
+
259
+ socketDetail.socket?.emit('sts_connect')
260
+
261
+ while (!complete) {
262
+ await Sleep(100);
263
+ }
264
+
265
+ //expect(1).toEqual(1);
266
+ }, 3000);
140
267
  });
141
268
 
@@ -1,7 +1,6 @@
1
1
  import debugModule from 'debug'
2
2
  const debug = debugModule(`proc:${process.pid}`);
3
3
 
4
-
5
4
  import { Gauge, InstrumentGaugeTelemetry } from '@nsshunt/stsinstrumentation'
6
5
  import { JSONObject } from '@nsshunt/stsutils'
7
6
  import { ProcessOptions } from './processoptions'
@@ -121,5 +121,9 @@ export interface ProcessOptions {
121
121
  useRedisInstrumentationTransport?: boolean;
122
122
  redisInstrumentationTransportUrl?: string;
123
123
  workerExec?: string;
124
+ /**
125
+ * Is this application using nodejs cluster mode?
126
+ */
127
+ clusterMode: boolean;
124
128
  }
125
129
  //# sourceMappingURL=processoptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processoptions.d.ts","sourceRoot":"","sources":["../src/processoptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAChC,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;AAEtF,oBAAY,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC9B,UAAU,eAAe;IACtB,YAAY,gBAAgB;CAC/B;AAGD,MAAM,WAAW,cAAc;IACvB;;GAED;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACN,iBAAiB,EAAE,MAAM,CAAA;IAItB,UAAU,EAAE,aAAa,CAAA;IAE5B;;OAEG;IACA,kBAAkB,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACA,0BAA0B,EAAE,MAAM,CAAA;IAElC;;OAEG;IACH,sBAAsB,EAAE,OAAO,CAAA;IAE/B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAErB;;OAEG;IACA,iBAAiB,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACA,QAAQ,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACA,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEf;;OAEG;IACA,qBAAqB,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACA,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEA;IACA,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAI1B,qBAAqB,CAAC,EAAE,sBAAsB,CAAA;IAE9C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,mBAAmB,CAAA;IAE/C;;;OAGG;IACH,+BAA+B,CAAC,EAAE,mBAAmB,CAAA;IAErD;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IAEpB;;OAEG;IACH,yBAAyB,EAAE,OAAO,CAAA;IAElC,kCAAkC,EAAE,MAAM,CAAA;IAE1C,yBAAyB,EAAE,MAAM,CAAA;IAEjC,eAAe,EAAE,OAAO,CAAA;IAExB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,gCAAgC,CAAC,EAAE,OAAO,CAAA;IAE1C,gCAAgC,CAAC,EAAE,MAAM,CAAA;IAEzC,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB"}
1
+ {"version":3,"file":"processoptions.d.ts","sourceRoot":"","sources":["../src/processoptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAChC,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;AAEtF,oBAAY,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC9B,UAAU,eAAe;IACtB,YAAY,gBAAgB;CAC/B;AAGD,MAAM,WAAW,cAAc;IACvB;;GAED;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACN,iBAAiB,EAAE,MAAM,CAAA;IAItB,UAAU,EAAE,aAAa,CAAA;IAE5B;;OAEG;IACA,kBAAkB,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACA,0BAA0B,EAAE,MAAM,CAAA;IAElC;;OAEG;IACH,sBAAsB,EAAE,OAAO,CAAA;IAE/B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAErB;;OAEG;IACA,iBAAiB,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACA,QAAQ,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACA,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEf;;OAEG;IACA,qBAAqB,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACA,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEA;IACA,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAI1B,qBAAqB,CAAC,EAAE,sBAAsB,CAAA;IAE9C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,mBAAmB,CAAA;IAE/C;;;OAGG;IACH,+BAA+B,CAAC,EAAE,mBAAmB,CAAA;IAErD;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IAEpB;;OAEG;IACH,yBAAyB,EAAE,OAAO,CAAA;IAElC,kCAAkC,EAAE,MAAM,CAAA;IAE1C,yBAAyB,EAAE,MAAM,CAAA;IAEjC,eAAe,EAAE,OAAO,CAAA;IAExB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,gCAAgC,CAAC,EAAE,OAAO,CAAA;IAE1C,gCAAgC,CAAC,EAAE,MAAM,CAAA;IAEzC,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;CACvB"}
@@ -15,7 +15,7 @@ export declare class ServerProcessBase extends ProcessBase {
15
15
  get expressServer(): STSExpressServer | null;
16
16
  set expressServer(val: STSExpressServer | null);
17
17
  ProcessTerminating: () => Promise<void>;
18
- Terminate: (clusterMode: boolean, clusterPerformExit: boolean, signal?: any) => Promise<void>;
18
+ Terminate: (clusterPerformExit: boolean, signal?: any) => Promise<void>;
19
19
  SetupSTSServer: () => Promise<void>;
20
20
  }
21
21
  //# sourceMappingURL=serverprocessbase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serverprocessbase.d.ts","sourceRoot":"","sources":["../src/serverprocessbase.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS5C,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAC;AAKlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;;gBAUlC,OAAO,EAAE,cAAc;IAInC,IAAI,UAAU,QAEb;IAED,IAAI,EAAE,+LAEL;IAED,IAAI,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAE3C;IACD,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,EAE7C;IAiMD,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IASD,SAAS,gBAAuB,OAAO,sBAAsB,OAAO,WAAW,GAAG,KAAG,QAAQ,IAAI,CAAC,CAkGjG;IAED,cAAc,QAAY,QAAQ,IAAI,CAAC,CAetC;CACJ"}
1
+ {"version":3,"file":"serverprocessbase.d.ts","sourceRoot":"","sources":["../src/serverprocessbase.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS5C,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAC;AAKlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;;gBAUlC,OAAO,EAAE,cAAc;IAInC,IAAI,UAAU,QAEb;IAED,IAAI,EAAE,+LAEL;IAED,IAAI,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAE3C;IACD,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,EAE7C;IAiMD,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IASD,SAAS,uBAA8B,OAAO,WAAW,GAAG,KAAG,QAAQ,IAAI,CAAC,CAkG3E;IAED,cAAc,QAAY,QAAQ,IAAI,CAAC,CAetC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"stslatencycontroller.d.ts","sourceRoot":"","sources":["../src/stslatencycontroller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,qBAAa,oBAAqB,SAAQ,iBAAiB;gBAE3C,MAAM,EAAE,YAAY;IAK1B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAUtC"}
1
+ {"version":3,"file":"stslatencycontroller.d.ts","sourceRoot":"","sources":["../src/stslatencycontroller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,qBAAa,oBAAqB,SAAQ,iBAAiB;gBAE3C,MAAM,EAAE,YAAY;IAK1B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CActC"}