@trigger.dev/core 4.5.13 → 4.5.15

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 (288) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +26 -6
  2. package/dist/commonjs/v3/apiClient/index.js +56 -8
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/apiClient/refreshAccessToken.d.ts +9 -0
  5. package/dist/commonjs/v3/apiClient/refreshAccessToken.js +22 -0
  6. package/dist/commonjs/v3/apiClient/refreshAccessToken.js.map +1 -0
  7. package/dist/commonjs/v3/apiClient/runStream.d.ts +37 -0
  8. package/dist/commonjs/v3/apiClient/runStream.js +58 -8
  9. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  10. package/dist/commonjs/v3/apiClientManager/index.js +3 -2
  11. package/dist/commonjs/v3/apiClientManager/index.js.map +1 -1
  12. package/dist/commonjs/v3/apiClientManager/types.d.ts +6 -0
  13. package/dist/commonjs/v3/index.d.ts +1 -0
  14. package/dist/commonjs/v3/index.js +1 -0
  15. package/dist/commonjs/v3/index.js.map +1 -1
  16. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
  17. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
  18. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
  19. package/dist/commonjs/v3/realtimeStreams/types.d.ts +10 -0
  20. package/dist/commonjs/v3/schemas/api.js +1 -1
  21. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  22. package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
  23. package/dist/commonjs/v3/session-streams-api.js +1 -0
  24. package/dist/commonjs/v3/session-streams-api.js.map +1 -1
  25. package/dist/commonjs/v3/sessionStreams/channels.d.ts +25 -0
  26. package/dist/commonjs/v3/sessionStreams/channels.js +3 -0
  27. package/dist/commonjs/v3/sessionStreams/channels.js.map +1 -0
  28. package/dist/commonjs/v3/sessionStreams/index.d.ts +16 -16
  29. package/dist/commonjs/v3/sessionStreams/index.js +32 -32
  30. package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
  31. package/dist/commonjs/v3/sessionStreams/manager.d.ts +16 -16
  32. package/dist/commonjs/v3/sessionStreams/manager.js +48 -47
  33. package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
  34. package/dist/commonjs/v3/sessionStreams/types.d.ts +16 -16
  35. package/dist/commonjs/version.js +1 -1
  36. package/dist/esm/v3/apiClient/index.d.ts +26 -6
  37. package/dist/esm/v3/apiClient/index.js +56 -9
  38. package/dist/esm/v3/apiClient/index.js.map +1 -1
  39. package/dist/esm/v3/apiClient/refreshAccessToken.d.ts +9 -0
  40. package/dist/esm/v3/apiClient/refreshAccessToken.js +19 -0
  41. package/dist/esm/v3/apiClient/refreshAccessToken.js.map +1 -0
  42. package/dist/esm/v3/apiClient/runStream.d.ts +37 -0
  43. package/dist/esm/v3/apiClient/runStream.js +57 -7
  44. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  45. package/dist/esm/v3/apiClientManager/index.js +3 -2
  46. package/dist/esm/v3/apiClientManager/index.js.map +1 -1
  47. package/dist/esm/v3/apiClientManager/types.d.ts +6 -0
  48. package/dist/esm/v3/index.d.ts +1 -0
  49. package/dist/esm/v3/index.js +1 -0
  50. package/dist/esm/v3/index.js.map +1 -1
  51. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
  52. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
  53. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
  54. package/dist/esm/v3/realtimeStreams/types.d.ts +10 -0
  55. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +54 -54
  56. package/dist/esm/v3/schemas/api.js +1 -1
  57. package/dist/esm/v3/schemas/api.js.map +1 -1
  58. package/dist/esm/v3/session-streams-api.d.ts +1 -0
  59. package/dist/esm/v3/session-streams-api.js +1 -0
  60. package/dist/esm/v3/session-streams-api.js.map +1 -1
  61. package/dist/esm/v3/sessionStreams/channels.d.ts +25 -0
  62. package/dist/esm/v3/sessionStreams/channels.js +2 -0
  63. package/dist/esm/v3/sessionStreams/channels.js.map +1 -0
  64. package/dist/esm/v3/sessionStreams/index.d.ts +16 -16
  65. package/dist/esm/v3/sessionStreams/index.js +32 -32
  66. package/dist/esm/v3/sessionStreams/index.js.map +1 -1
  67. package/dist/esm/v3/sessionStreams/manager.d.ts +16 -16
  68. package/dist/esm/v3/sessionStreams/manager.js +48 -47
  69. package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
  70. package/dist/esm/v3/sessionStreams/types.d.ts +16 -16
  71. package/dist/esm/version.js +1 -1
  72. package/package.json +4 -1
  73. package/dist/commonjs/v3/apiClient/bulkActions.test.d.ts +0 -1
  74. package/dist/commonjs/v3/apiClient/bulkActions.test.js +0 -151
  75. package/dist/commonjs/v3/apiClient/bulkActions.test.js.map +0 -1
  76. package/dist/commonjs/v3/apiClient/runStream.test.d.ts +0 -1
  77. package/dist/commonjs/v3/apiClient/runStream.test.js +0 -546
  78. package/dist/commonjs/v3/apiClient/runStream.test.js.map +0 -1
  79. package/dist/commonjs/v3/apiClient/streamBatchItems.test.d.ts +0 -1
  80. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js +0 -408
  81. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js.map +0 -1
  82. package/dist/commonjs/v3/apiKeys.test.d.ts +0 -1
  83. package/dist/commonjs/v3/apiKeys.test.js +0 -19
  84. package/dist/commonjs/v3/apiKeys.test.js.map +0 -1
  85. package/dist/commonjs/v3/apps/exec.test.d.ts +0 -1
  86. package/dist/commonjs/v3/apps/exec.test.js +0 -23
  87. package/dist/commonjs/v3/apps/exec.test.js.map +0 -1
  88. package/dist/commonjs/v3/build/flags.test.d.ts +0 -1
  89. package/dist/commonjs/v3/build/flags.test.js +0 -50
  90. package/dist/commonjs/v3/build/flags.test.js.map +0 -1
  91. package/dist/commonjs/v3/build/runtime.test.d.ts +0 -1
  92. package/dist/commonjs/v3/build/runtime.test.js +0 -44
  93. package/dist/commonjs/v3/build/runtime.test.js.map +0 -1
  94. package/dist/commonjs/v3/errors.test.d.ts +0 -1
  95. package/dist/commonjs/v3/errors.test.js +0 -36
  96. package/dist/commonjs/v3/errors.test.js.map +0 -1
  97. package/dist/commonjs/v3/externalDeploymentId.test.d.ts +0 -1
  98. package/dist/commonjs/v3/externalDeploymentId.test.js +0 -173
  99. package/dist/commonjs/v3/externalDeploymentId.test.js.map +0 -1
  100. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
  101. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -44
  102. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
  103. package/dist/commonjs/v3/idempotencyKeys.test.d.ts +0 -1
  104. package/dist/commonjs/v3/idempotencyKeys.test.js +0 -192
  105. package/dist/commonjs/v3/idempotencyKeys.test.js.map +0 -1
  106. package/dist/commonjs/v3/isomorphic/friendlyId.test.d.ts +0 -1
  107. package/dist/commonjs/v3/isomorphic/friendlyId.test.js +0 -497
  108. package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +0 -1
  109. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
  110. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js +0 -141
  111. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js.map +0 -1
  112. package/dist/commonjs/v3/isomorphic/waitpointMint.test.d.ts +0 -1
  113. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js +0 -97
  114. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js.map +0 -1
  115. package/dist/commonjs/v3/machines/max-old-space.test.d.ts +0 -1
  116. package/dist/commonjs/v3/machines/max-old-space.test.js +0 -44
  117. package/dist/commonjs/v3/machines/max-old-space.test.js.map +0 -1
  118. package/dist/commonjs/v3/otel/tracingSDK.test.d.ts +0 -1
  119. package/dist/commonjs/v3/otel/tracingSDK.test.js +0 -174
  120. package/dist/commonjs/v3/otel/tracingSDK.test.js.map +0 -1
  121. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
  122. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js +0 -18
  123. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js.map +0 -1
  124. package/dist/commonjs/v3/realtimeStreams/manager.test.d.ts +0 -1
  125. package/dist/commonjs/v3/realtimeStreams/manager.test.js +0 -89
  126. package/dist/commonjs/v3/realtimeStreams/manager.test.js.map +0 -1
  127. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
  128. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js +0 -68
  129. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
  130. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
  131. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -674
  132. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
  133. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
  134. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -77
  135. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
  136. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
  137. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -293
  138. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
  139. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
  140. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -235
  141. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
  142. package/dist/commonjs/v3/schemas/api-type.test.d.ts +0 -1
  143. package/dist/commonjs/v3/schemas/api-type.test.js +0 -358
  144. package/dist/commonjs/v3/schemas/api-type.test.js.map +0 -1
  145. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
  146. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js +0 -79
  147. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js.map +0 -1
  148. package/dist/commonjs/v3/schemas/idempotencyKey.test.d.ts +0 -1
  149. package/dist/commonjs/v3/schemas/idempotencyKey.test.js +0 -157
  150. package/dist/commonjs/v3/schemas/idempotencyKey.test.js.map +0 -1
  151. package/dist/commonjs/v3/schemas/scheduleWindow.test.d.ts +0 -1
  152. package/dist/commonjs/v3/schemas/scheduleWindow.test.js +0 -52
  153. package/dist/commonjs/v3/schemas/scheduleWindow.test.js.map +0 -1
  154. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
  155. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js +0 -104
  156. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
  157. package/dist/commonjs/v3/serverOnly/shutdownManager.test.d.ts +0 -1
  158. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js +0 -139
  159. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js.map +0 -1
  160. package/dist/commonjs/v3/sessionStreams/manager.test.d.ts +0 -1
  161. package/dist/commonjs/v3/sessionStreams/manager.test.js +0 -375
  162. package/dist/commonjs/v3/sessionStreams/manager.test.js.map +0 -1
  163. package/dist/commonjs/v3/sessionStreams/router.test.d.ts +0 -1
  164. package/dist/commonjs/v3/sessionStreams/router.test.js +0 -463
  165. package/dist/commonjs/v3/sessionStreams/router.test.js.map +0 -1
  166. package/dist/commonjs/v3/taskContext/index.test.d.ts +0 -1
  167. package/dist/commonjs/v3/taskContext/index.test.js +0 -73
  168. package/dist/commonjs/v3/taskContext/index.test.js.map +0 -1
  169. package/dist/commonjs/v3/taskContext/otelProcessors.test.d.ts +0 -1
  170. package/dist/commonjs/v3/taskContext/otelProcessors.test.js +0 -109
  171. package/dist/commonjs/v3/taskContext/otelProcessors.test.js.map +0 -1
  172. package/dist/commonjs/v3/telnetLogServer.test.d.ts +0 -1
  173. package/dist/commonjs/v3/telnetLogServer.test.js +0 -144
  174. package/dist/commonjs/v3/telnetLogServer.test.js.map +0 -1
  175. package/dist/commonjs/v3/utils/reconnectBackoff.test.d.ts +0 -1
  176. package/dist/commonjs/v3/utils/reconnectBackoff.test.js +0 -76
  177. package/dist/commonjs/v3/utils/reconnectBackoff.test.js.map +0 -1
  178. package/dist/commonjs/v3/workloadDeploymentToken.test.d.ts +0 -1
  179. package/dist/commonjs/v3/workloadDeploymentToken.test.js +0 -110
  180. package/dist/commonjs/v3/workloadDeploymentToken.test.js.map +0 -1
  181. package/dist/esm/v3/apiClient/bulkActions.test.d.ts +0 -1
  182. package/dist/esm/v3/apiClient/bulkActions.test.js +0 -149
  183. package/dist/esm/v3/apiClient/bulkActions.test.js.map +0 -1
  184. package/dist/esm/v3/apiClient/runStream.test.d.ts +0 -1
  185. package/dist/esm/v3/apiClient/runStream.test.js +0 -544
  186. package/dist/esm/v3/apiClient/runStream.test.js.map +0 -1
  187. package/dist/esm/v3/apiClient/streamBatchItems.test.d.ts +0 -1
  188. package/dist/esm/v3/apiClient/streamBatchItems.test.js +0 -406
  189. package/dist/esm/v3/apiClient/streamBatchItems.test.js.map +0 -1
  190. package/dist/esm/v3/apiKeys.test.d.ts +0 -1
  191. package/dist/esm/v3/apiKeys.test.js +0 -17
  192. package/dist/esm/v3/apiKeys.test.js.map +0 -1
  193. package/dist/esm/v3/apps/exec.test.d.ts +0 -1
  194. package/dist/esm/v3/apps/exec.test.js +0 -21
  195. package/dist/esm/v3/apps/exec.test.js.map +0 -1
  196. package/dist/esm/v3/build/flags.test.d.ts +0 -1
  197. package/dist/esm/v3/build/flags.test.js +0 -48
  198. package/dist/esm/v3/build/flags.test.js.map +0 -1
  199. package/dist/esm/v3/build/runtime.test.d.ts +0 -1
  200. package/dist/esm/v3/build/runtime.test.js +0 -42
  201. package/dist/esm/v3/build/runtime.test.js.map +0 -1
  202. package/dist/esm/v3/errors.test.d.ts +0 -1
  203. package/dist/esm/v3/errors.test.js +0 -34
  204. package/dist/esm/v3/errors.test.js.map +0 -1
  205. package/dist/esm/v3/externalDeploymentId.test.d.ts +0 -1
  206. package/dist/esm/v3/externalDeploymentId.test.js +0 -171
  207. package/dist/esm/v3/externalDeploymentId.test.js.map +0 -1
  208. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
  209. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -42
  210. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
  211. package/dist/esm/v3/idempotencyKeys.test.d.ts +0 -1
  212. package/dist/esm/v3/idempotencyKeys.test.js +0 -190
  213. package/dist/esm/v3/idempotencyKeys.test.js.map +0 -1
  214. package/dist/esm/v3/isomorphic/friendlyId.test.d.ts +0 -1
  215. package/dist/esm/v3/isomorphic/friendlyId.test.js +0 -495
  216. package/dist/esm/v3/isomorphic/friendlyId.test.js.map +0 -1
  217. package/dist/esm/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
  218. package/dist/esm/v3/isomorphic/runOpsResidency.test.js +0 -139
  219. package/dist/esm/v3/isomorphic/runOpsResidency.test.js.map +0 -1
  220. package/dist/esm/v3/isomorphic/waitpointMint.test.d.ts +0 -1
  221. package/dist/esm/v3/isomorphic/waitpointMint.test.js +0 -95
  222. package/dist/esm/v3/isomorphic/waitpointMint.test.js.map +0 -1
  223. package/dist/esm/v3/machines/max-old-space.test.d.ts +0 -1
  224. package/dist/esm/v3/machines/max-old-space.test.js +0 -42
  225. package/dist/esm/v3/machines/max-old-space.test.js.map +0 -1
  226. package/dist/esm/v3/otel/tracingSDK.test.d.ts +0 -1
  227. package/dist/esm/v3/otel/tracingSDK.test.js +0 -172
  228. package/dist/esm/v3/otel/tracingSDK.test.js.map +0 -1
  229. package/dist/esm/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
  230. package/dist/esm/v3/otel/tracingSDKShutdown.test.js +0 -16
  231. package/dist/esm/v3/otel/tracingSDKShutdown.test.js.map +0 -1
  232. package/dist/esm/v3/realtimeStreams/manager.test.d.ts +0 -1
  233. package/dist/esm/v3/realtimeStreams/manager.test.js +0 -87
  234. package/dist/esm/v3/realtimeStreams/manager.test.js.map +0 -1
  235. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
  236. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js +0 -66
  237. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
  238. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
  239. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -672
  240. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
  241. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
  242. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -75
  243. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
  244. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
  245. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -291
  246. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
  247. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
  248. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -233
  249. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
  250. package/dist/esm/v3/schemas/api-type.test.d.ts +0 -1
  251. package/dist/esm/v3/schemas/api-type.test.js +0 -356
  252. package/dist/esm/v3/schemas/api-type.test.js.map +0 -1
  253. package/dist/esm/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
  254. package/dist/esm/v3/schemas/batchItemNDJSON.test.js +0 -77
  255. package/dist/esm/v3/schemas/batchItemNDJSON.test.js.map +0 -1
  256. package/dist/esm/v3/schemas/idempotencyKey.test.d.ts +0 -1
  257. package/dist/esm/v3/schemas/idempotencyKey.test.js +0 -155
  258. package/dist/esm/v3/schemas/idempotencyKey.test.js.map +0 -1
  259. package/dist/esm/v3/schemas/scheduleWindow.test.d.ts +0 -1
  260. package/dist/esm/v3/schemas/scheduleWindow.test.js +0 -50
  261. package/dist/esm/v3/schemas/scheduleWindow.test.js.map +0 -1
  262. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
  263. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js +0 -102
  264. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
  265. package/dist/esm/v3/serverOnly/shutdownManager.test.d.ts +0 -1
  266. package/dist/esm/v3/serverOnly/shutdownManager.test.js +0 -137
  267. package/dist/esm/v3/serverOnly/shutdownManager.test.js.map +0 -1
  268. package/dist/esm/v3/sessionStreams/manager.test.d.ts +0 -1
  269. package/dist/esm/v3/sessionStreams/manager.test.js +0 -373
  270. package/dist/esm/v3/sessionStreams/manager.test.js.map +0 -1
  271. package/dist/esm/v3/sessionStreams/router.test.d.ts +0 -1
  272. package/dist/esm/v3/sessionStreams/router.test.js +0 -461
  273. package/dist/esm/v3/sessionStreams/router.test.js.map +0 -1
  274. package/dist/esm/v3/taskContext/index.test.d.ts +0 -1
  275. package/dist/esm/v3/taskContext/index.test.js +0 -71
  276. package/dist/esm/v3/taskContext/index.test.js.map +0 -1
  277. package/dist/esm/v3/taskContext/otelProcessors.test.d.ts +0 -1
  278. package/dist/esm/v3/taskContext/otelProcessors.test.js +0 -107
  279. package/dist/esm/v3/taskContext/otelProcessors.test.js.map +0 -1
  280. package/dist/esm/v3/telnetLogServer.test.d.ts +0 -1
  281. package/dist/esm/v3/telnetLogServer.test.js +0 -139
  282. package/dist/esm/v3/telnetLogServer.test.js.map +0 -1
  283. package/dist/esm/v3/utils/reconnectBackoff.test.d.ts +0 -1
  284. package/dist/esm/v3/utils/reconnectBackoff.test.js +0 -74
  285. package/dist/esm/v3/utils/reconnectBackoff.test.js.map +0 -1
  286. package/dist/esm/v3/workloadDeploymentToken.test.d.ts +0 -1
  287. package/dist/esm/v3/workloadDeploymentToken.test.js +0 -108
  288. package/dist/esm/v3/workloadDeploymentToken.test.js.map +0 -1
@@ -1,672 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import { RunQueueConsumerPool, } from "./consumerPool.js";
3
- import { ConsumerPoolMetrics } from "./consumerPoolMetrics.js";
4
- import { Registry } from "prom-client";
5
- // Mock only the logger
6
- vi.mock("../../utils/structuredLogger.js");
7
- // Test implementation of QueueConsumer
8
- class TestQueueConsumer {
9
- started = false;
10
- stopped = false;
11
- onDequeue;
12
- metrics;
13
- constructor(opts) {
14
- this.onDequeue = opts.onDequeue;
15
- this.metrics = opts.metrics;
16
- }
17
- start() {
18
- this.started = true;
19
- this.stopped = false;
20
- }
21
- stop() {
22
- this.stopped = true;
23
- this.started = false;
24
- }
25
- }
26
- describe("RunQueueConsumerPool", () => {
27
- let mockClient;
28
- let mockOnDequeue;
29
- let pool;
30
- let defaultOptions;
31
- let testConsumers;
32
- let testConsumerFactory;
33
- beforeEach(() => {
34
- vi.clearAllMocks();
35
- vi.useFakeTimers();
36
- mockClient = {};
37
- mockOnDequeue = vi.fn();
38
- testConsumers = [];
39
- testConsumerFactory = (opts) => {
40
- const consumer = new TestQueueConsumer(opts);
41
- testConsumers.push(consumer);
42
- return consumer;
43
- };
44
- defaultOptions = {
45
- consumer: {
46
- client: mockClient,
47
- intervalMs: 0,
48
- idleIntervalMs: 1000,
49
- onDequeue: mockOnDequeue,
50
- },
51
- consumerFactory: testConsumerFactory,
52
- };
53
- });
54
- afterEach(() => {
55
- vi.useRealTimers();
56
- if (pool) {
57
- pool.stop();
58
- }
59
- });
60
- function advanceTimeAndProcessMetrics(ms) {
61
- vi.advanceTimersByTime(ms);
62
- // Trigger batch processing if ready (without adding a sample)
63
- if (pool["metricsProcessor"].shouldProcessBatch()) {
64
- pool["processMetricsBatch"]();
65
- }
66
- }
67
- describe("Static mode (strategy='none')", () => {
68
- it("should start with maxConsumerCount in static mode", async () => {
69
- pool = new RunQueueConsumerPool({
70
- ...defaultOptions,
71
- scaling: { strategy: "none", maxConsumerCount: 5 },
72
- });
73
- await pool.start();
74
- expect(pool.size).toBe(5);
75
- expect(testConsumers.length).toBe(5);
76
- });
77
- it("should not scale in static mode even with queue length updates", async () => {
78
- pool = new RunQueueConsumerPool({
79
- ...defaultOptions,
80
- scaling: { strategy: "none", maxConsumerCount: 3 },
81
- });
82
- await pool.start();
83
- const initialCount = pool.size;
84
- pool.updateQueueLength(100);
85
- vi.advanceTimersByTime(2000);
86
- expect(pool.size).toBe(initialCount);
87
- expect(pool.size).toBe(3);
88
- });
89
- });
90
- describe("Smooth scaling strategy", () => {
91
- it("should scale smoothly with damping", async () => {
92
- pool = new RunQueueConsumerPool({
93
- ...defaultOptions,
94
- scaling: {
95
- strategy: "smooth",
96
- minConsumerCount: 1,
97
- maxConsumerCount: 10,
98
- scaleUpCooldownMs: 0,
99
- disableJitter: true,
100
- },
101
- });
102
- await pool.start();
103
- expect(pool.size).toBe(1);
104
- pool.updateQueueLength(5);
105
- advanceTimeAndProcessMetrics(1100);
106
- expect(pool.size).toBe(4); // Damped scaling
107
- pool.updateQueueLength(5);
108
- advanceTimeAndProcessMetrics(1100);
109
- expect(pool.size).toBe(5); // Gradually approaches target
110
- });
111
- it("should respect max consumer count", async () => {
112
- pool = new RunQueueConsumerPool({
113
- ...defaultOptions,
114
- scaling: {
115
- strategy: "smooth",
116
- minConsumerCount: 1,
117
- maxConsumerCount: 5,
118
- scaleUpCooldownMs: 0,
119
- disableJitter: true,
120
- },
121
- });
122
- await pool.start();
123
- expect(pool.size).toBe(1);
124
- pool.updateQueueLength(100);
125
- advanceTimeAndProcessMetrics(1100);
126
- expect(pool.size).toBe(5);
127
- pool.updateQueueLength(100);
128
- advanceTimeAndProcessMetrics(1100);
129
- expect(pool.size).toBe(5);
130
- });
131
- });
132
- describe("Aggressive scaling strategy", () => {
133
- it("should scale up quickly based on queue pressure", async () => {
134
- pool = new RunQueueConsumerPool({
135
- ...defaultOptions,
136
- scaling: {
137
- strategy: "aggressive",
138
- minConsumerCount: 2,
139
- maxConsumerCount: 10,
140
- scaleUpCooldownMs: 0,
141
- disableJitter: true,
142
- },
143
- });
144
- await pool.start();
145
- expect(pool.size).toBe(2);
146
- pool.updateQueueLength(10);
147
- advanceTimeAndProcessMetrics(1100);
148
- expect(pool.size).toBe(3);
149
- pool.updateQueueLength(20);
150
- advanceTimeAndProcessMetrics(1100);
151
- expect(pool.size).toBe(4);
152
- });
153
- it("should scale down cautiously when queue is small", async () => {
154
- pool = new RunQueueConsumerPool({
155
- ...defaultOptions,
156
- scaling: {
157
- strategy: "aggressive",
158
- minConsumerCount: 1,
159
- maxConsumerCount: 10,
160
- scaleUpCooldownMs: 0,
161
- scaleDownCooldownMs: 0,
162
- disableJitter: true,
163
- },
164
- });
165
- await pool.start();
166
- expect(pool.size).toBe(1);
167
- pool.updateQueueLength(10);
168
- advanceTimeAndProcessMetrics(1100);
169
- expect(pool.size).toBe(2);
170
- pool.updateQueueLength(0.5);
171
- advanceTimeAndProcessMetrics(1100);
172
- expect(pool.size).toBe(3); // EWMA smoothing delays scale down
173
- pool.updateQueueLength(0.5);
174
- advanceTimeAndProcessMetrics(1100);
175
- expect(pool.size).toBeGreaterThanOrEqual(3); // Stays in optimal zone
176
- });
177
- it("should maintain current level in optimal zone", async () => {
178
- pool = new RunQueueConsumerPool({
179
- ...defaultOptions,
180
- scaling: {
181
- strategy: "aggressive",
182
- minConsumerCount: 3,
183
- maxConsumerCount: 10,
184
- scaleUpCooldownMs: 0,
185
- disableJitter: true,
186
- },
187
- });
188
- await pool.start();
189
- expect(pool.size).toBe(3);
190
- pool.updateQueueLength(3);
191
- advanceTimeAndProcessMetrics(1100);
192
- expect(pool.size).toBe(3);
193
- pool.updateQueueLength(4);
194
- advanceTimeAndProcessMetrics(1100);
195
- expect(pool.size).toBe(3);
196
- });
197
- });
198
- describe("Smooth scaling with EWMA", () => {
199
- it("should use exponential smoothing for stable scaling", async () => {
200
- pool = new RunQueueConsumerPool({
201
- ...defaultOptions,
202
- scaling: {
203
- strategy: "smooth",
204
- minConsumerCount: 1,
205
- maxConsumerCount: 10,
206
- disableJitter: true,
207
- },
208
- });
209
- await pool.start();
210
- const queueLengths = [10, 2, 8, 3, 9, 1, 7];
211
- for (const length of queueLengths) {
212
- pool.updateQueueLength(length);
213
- vi.advanceTimersByTime(200);
214
- }
215
- vi.advanceTimersByTime(900);
216
- const metrics = pool.getMetrics();
217
- expect(metrics.smoothedQueueLength).toBeGreaterThan(0);
218
- expect(metrics.smoothedQueueLength).toBeLessThan(10);
219
- });
220
- it("should apply damping factor to avoid rapid changes", async () => {
221
- pool = new RunQueueConsumerPool({
222
- ...defaultOptions,
223
- scaling: {
224
- strategy: "smooth",
225
- minConsumerCount: 1,
226
- maxConsumerCount: 10,
227
- disableJitter: true,
228
- },
229
- });
230
- await pool.start();
231
- pool.updateQueueLength(2);
232
- advanceTimeAndProcessMetrics(1100);
233
- const metrics1 = pool.getMetrics();
234
- expect(metrics1.smoothedQueueLength).toBe(2);
235
- pool.updateQueueLength(20);
236
- advanceTimeAndProcessMetrics(1100);
237
- const metrics2 = pool.getMetrics();
238
- expect(metrics2.smoothedQueueLength).toBeGreaterThan(2);
239
- expect(metrics2.smoothedQueueLength).toBeLessThan(20);
240
- });
241
- });
242
- describe("High throughput parallel dequeuing", () => {
243
- it("should handle rapid parallel queue updates", async () => {
244
- pool = new RunQueueConsumerPool({
245
- ...defaultOptions,
246
- scaling: {
247
- strategy: "aggressive",
248
- minConsumerCount: 1,
249
- maxConsumerCount: 20,
250
- disableJitter: true,
251
- },
252
- });
253
- await pool.start();
254
- const updates = [];
255
- for (let i = 0; i < 100; i++) {
256
- updates.push(Math.floor(Math.random() * 50) + 10);
257
- }
258
- updates.forEach((length, index) => {
259
- setTimeout(() => pool.updateQueueLength(length), index * 10);
260
- });
261
- advanceTimeAndProcessMetrics(1100);
262
- const metrics = pool.getMetrics();
263
- expect(metrics.queueLength).toBeDefined();
264
- });
265
- it("should batch metrics updates to avoid excessive scaling", async () => {
266
- pool = new RunQueueConsumerPool({
267
- ...defaultOptions,
268
- scaling: {
269
- strategy: "smooth",
270
- minConsumerCount: 1,
271
- maxConsumerCount: 10,
272
- disableJitter: true,
273
- },
274
- });
275
- await pool.start();
276
- const evaluateScalingSpy = vi.spyOn(pool, "evaluateScaling");
277
- pool.updateQueueLength(10);
278
- for (let i = 1; i < 50; i++) {
279
- pool.updateQueueLength(Math.floor(Math.random() * 20) + 5);
280
- }
281
- expect(evaluateScalingSpy).not.toHaveBeenCalled();
282
- advanceTimeAndProcessMetrics(1000);
283
- expect(evaluateScalingSpy).toHaveBeenCalledTimes(1);
284
- });
285
- it("should use median to filter outliers in high-frequency updates", async () => {
286
- pool = new RunQueueConsumerPool({
287
- ...defaultOptions,
288
- scaling: {
289
- strategy: "aggressive",
290
- minConsumerCount: 1,
291
- maxConsumerCount: 10,
292
- disableJitter: true,
293
- },
294
- });
295
- await pool.start();
296
- const updates = [10, 11, 9, 12, 10, 100, 11, 10, 9, 11, 1];
297
- updates.forEach((length) => pool.updateQueueLength(length));
298
- advanceTimeAndProcessMetrics(1100);
299
- const metrics = pool.getMetrics();
300
- expect(metrics.queueLength).toBeGreaterThanOrEqual(9);
301
- expect(metrics.queueLength).toBeLessThanOrEqual(12);
302
- });
303
- });
304
- describe("Scaling cooldowns and jitter", () => {
305
- it("should respect scale-up cooldown", async () => {
306
- pool = new RunQueueConsumerPool({
307
- ...defaultOptions,
308
- scaling: {
309
- strategy: "smooth",
310
- scaleUpCooldownMs: 5000,
311
- minConsumerCount: 1,
312
- maxConsumerCount: 10,
313
- disableJitter: true,
314
- },
315
- });
316
- await pool.start();
317
- pool["scaleToTarget"](5);
318
- const scaleToTargetSpy = vi.spyOn(pool, "scaleToTarget");
319
- pool.updateQueueLength(10);
320
- advanceTimeAndProcessMetrics(1100);
321
- expect(scaleToTargetSpy).not.toHaveBeenCalled();
322
- vi.advanceTimersByTime(10000);
323
- pool.updateQueueLength(20);
324
- advanceTimeAndProcessMetrics(1100);
325
- });
326
- it("should respect scale-down cooldown (longer than scale-up)", async () => {
327
- pool = new RunQueueConsumerPool({
328
- ...defaultOptions,
329
- scaling: {
330
- strategy: "aggressive",
331
- minConsumerCount: 1,
332
- maxConsumerCount: 10,
333
- disableJitter: true,
334
- },
335
- });
336
- await pool.start();
337
- for (let i = 0; i < 4; i++) {
338
- pool["addConsumers"](1);
339
- }
340
- pool["scaleToTarget"](5);
341
- pool["metrics"].lastScaleTime = new Date(Date.now() - 70000);
342
- pool.updateQueueLength(1);
343
- advanceTimeAndProcessMetrics(1100);
344
- const metrics = pool.getMetrics();
345
- expect(metrics.queueLength).toBe(1);
346
- });
347
- it("should add random jitter to prevent thundering herd", async () => {
348
- const pools = [];
349
- const scaleTimes = [];
350
- for (let i = 0; i < 3; i++) {
351
- const p = new RunQueueConsumerPool({
352
- ...defaultOptions,
353
- scaling: {
354
- strategy: "smooth",
355
- minConsumerCount: 1,
356
- maxConsumerCount: 10,
357
- disableJitter: true,
358
- },
359
- });
360
- const originalScale = p["scaleToTarget"];
361
- p["scaleToTarget"] = vi.fn(async (target) => {
362
- scaleTimes.push(Date.now());
363
- return originalScale.call(p, target);
364
- });
365
- pools.push(p);
366
- await p.start();
367
- }
368
- pools.forEach((p) => p.updateQueueLength(20));
369
- advanceTimeAndProcessMetrics(1100);
370
- vi.advanceTimersByTime(15000);
371
- await Promise.all(pools.map((p) => p.stop()));
372
- });
373
- });
374
- describe("Consumer lifecycle management", () => {
375
- it("should properly start and stop consumers", async () => {
376
- pool = new RunQueueConsumerPool({
377
- ...defaultOptions,
378
- scaling: {
379
- strategy: "none",
380
- maxConsumerCount: 3,
381
- disableJitter: true,
382
- },
383
- });
384
- await pool.start();
385
- expect(pool.size).toBe(3);
386
- expect(testConsumers.length).toBe(3);
387
- testConsumers.forEach((consumer) => {
388
- expect(consumer.started).toBe(true);
389
- });
390
- await pool.stop();
391
- testConsumers.forEach((consumer) => {
392
- expect(consumer.stopped).toBe(true);
393
- });
394
- });
395
- it("should forward dequeue messages with queue length updates", async () => {
396
- pool = new RunQueueConsumerPool({
397
- ...defaultOptions,
398
- scaling: {
399
- strategy: "aggressive",
400
- maxConsumerCount: 2,
401
- disableJitter: true,
402
- },
403
- });
404
- await pool.start();
405
- const messages = [{ workerQueueLength: 15 }];
406
- if (testConsumers[0]?.onDequeue) {
407
- await testConsumers[0].onDequeue(messages);
408
- }
409
- expect(mockOnDequeue).toHaveBeenCalledWith(messages, undefined);
410
- advanceTimeAndProcessMetrics(1100);
411
- const metrics = pool.getMetrics();
412
- expect(metrics.queueLength).toBe(15);
413
- });
414
- });
415
- describe("Memory leak prevention", () => {
416
- it("should collect all samples within batch window without limit", async () => {
417
- pool = new RunQueueConsumerPool({
418
- ...defaultOptions,
419
- scaling: {
420
- strategy: "aggressive",
421
- minConsumerCount: 1,
422
- maxConsumerCount: 10,
423
- disableJitter: true,
424
- },
425
- });
426
- await pool.start();
427
- for (let i = 0; i < 100; i++) {
428
- pool.updateQueueLength(i);
429
- }
430
- const metrics = pool.getMetrics();
431
- expect(metrics.queueLength).toBeUndefined();
432
- });
433
- it("should clear consumer map on stop", async () => {
434
- pool = new RunQueueConsumerPool({
435
- ...defaultOptions,
436
- scaling: {
437
- strategy: "none",
438
- maxConsumerCount: 5,
439
- disableJitter: true,
440
- },
441
- });
442
- await pool.start();
443
- expect(pool.size).toBe(5);
444
- await pool.stop();
445
- expect(pool.size).toBe(0);
446
- });
447
- it("should clear recentQueueLengths after processing batch", async () => {
448
- pool = new RunQueueConsumerPool({
449
- ...defaultOptions,
450
- scaling: { strategy: "smooth" },
451
- });
452
- await pool.start();
453
- for (let i = 0; i < 5; i++) {
454
- pool.updateQueueLength(10 + i);
455
- }
456
- advanceTimeAndProcessMetrics(1100);
457
- const metrics = pool.getMetrics();
458
- expect(metrics.queueLength).toBeDefined();
459
- });
460
- it("should not accumulate scaling operations in memory", async () => {
461
- pool = new RunQueueConsumerPool({
462
- ...defaultOptions,
463
- scaling: {
464
- strategy: "aggressive",
465
- scaleUpCooldownMs: 100,
466
- scaleDownCooldownMs: 100,
467
- minConsumerCount: 1,
468
- maxConsumerCount: 10,
469
- disableJitter: true,
470
- },
471
- });
472
- await pool.start();
473
- for (let i = 0; i < 5; i++) {
474
- pool["metrics"].lastScaleTime = new Date(0);
475
- pool.updateQueueLength(i % 2 === 0 ? 50 : 1);
476
- vi.advanceTimersByTime(1100);
477
- }
478
- expect(pool.size).toBeGreaterThanOrEqual(1);
479
- expect(pool.size).toBeLessThanOrEqual(10);
480
- });
481
- });
482
- describe("Edge cases", () => {
483
- it("should handle empty recent queue lengths", async () => {
484
- pool = new RunQueueConsumerPool({
485
- ...defaultOptions,
486
- scaling: { strategy: "aggressive" },
487
- });
488
- await pool.start();
489
- const metrics = pool.getMetrics();
490
- expect(metrics.queueLength).toBeUndefined();
491
- });
492
- it("should clamp consumer count to min/max bounds", async () => {
493
- pool = new RunQueueConsumerPool({
494
- ...defaultOptions,
495
- scaling: {
496
- strategy: "smooth",
497
- minConsumerCount: 2,
498
- maxConsumerCount: 5,
499
- disableJitter: true,
500
- },
501
- });
502
- await pool.start();
503
- expect(pool.size).toBe(2);
504
- pool.updateQueueLength(100);
505
- advanceTimeAndProcessMetrics(1100);
506
- expect(pool.size).toBeLessThanOrEqual(5);
507
- });
508
- it("should respect custom targetRatio with smooth strategy", async () => {
509
- pool = new RunQueueConsumerPool({
510
- ...defaultOptions,
511
- scaling: {
512
- strategy: "smooth",
513
- targetRatio: 5,
514
- scaleUpCooldownMs: 0,
515
- minConsumerCount: 1,
516
- maxConsumerCount: 10,
517
- disableJitter: true,
518
- },
519
- });
520
- await pool.start();
521
- expect(pool.size).toBe(1);
522
- pool.updateQueueLength(10);
523
- advanceTimeAndProcessMetrics(1100);
524
- const firstSize = pool.size;
525
- expect(firstSize).toBeGreaterThanOrEqual(1);
526
- expect(firstSize).toBeLessThanOrEqual(2);
527
- pool.updateQueueLength(10);
528
- advanceTimeAndProcessMetrics(1100);
529
- expect(pool.size).toBeLessThanOrEqual(2);
530
- });
531
- it("should respect custom targetRatio with aggressive strategy", async () => {
532
- pool = new RunQueueConsumerPool({
533
- ...defaultOptions,
534
- scaling: {
535
- strategy: "aggressive",
536
- targetRatio: 5,
537
- scaleUpCooldownMs: 0,
538
- minConsumerCount: 1,
539
- maxConsumerCount: 10,
540
- disableJitter: true,
541
- },
542
- });
543
- await pool.start();
544
- expect(pool.size).toBe(1);
545
- pool.updateQueueLength(20);
546
- advanceTimeAndProcessMetrics(1100);
547
- const sizeAfterFirstScale = pool.size;
548
- expect(sizeAfterFirstScale).toBeGreaterThanOrEqual(1);
549
- pool.updateQueueLength(20);
550
- advanceTimeAndProcessMetrics(1100);
551
- expect(pool.size).toBeLessThanOrEqual(6);
552
- });
553
- it("should scale down when no items are dequeued (zero queue length)", async () => {
554
- pool = new RunQueueConsumerPool({
555
- ...defaultOptions,
556
- scaling: {
557
- strategy: "smooth",
558
- minConsumerCount: 1,
559
- maxConsumerCount: 10,
560
- scaleUpCooldownMs: 0,
561
- scaleDownCooldownMs: 0,
562
- disableJitter: true,
563
- },
564
- });
565
- await pool.start();
566
- expect(pool.size).toBe(1);
567
- // Scale up first
568
- pool.updateQueueLength(20);
569
- advanceTimeAndProcessMetrics(1100);
570
- expect(pool.size).toBeGreaterThan(1);
571
- const sizeAfterScaleUp = pool.size;
572
- // Now send multiple zero queue lengths to converge EWMA to 0
573
- // The EWMA needs time to converge due to exponential smoothing
574
- for (let i = 0; i < 5; i++) {
575
- pool.updateQueueLength(0);
576
- advanceTimeAndProcessMetrics(1100);
577
- }
578
- // After multiple iterations with zero queue, should scale down but not to minimum yet
579
- expect(pool.size).toBeLessThan(sizeAfterScaleUp);
580
- expect(pool.size).toBeGreaterThan(1);
581
- // Continue until we reach minimum
582
- for (let i = 0; i < 5; i++) {
583
- pool.updateQueueLength(0);
584
- advanceTimeAndProcessMetrics(1100);
585
- }
586
- // Should eventually reach minimum
587
- expect(pool.size).toBe(1);
588
- });
589
- });
590
- describe("Metrics wiring", () => {
591
- it("injects the pool's shared ConsumerPoolMetrics into every consumer when a registry is provided", async () => {
592
- pool = new RunQueueConsumerPool({
593
- ...defaultOptions,
594
- metricsRegistry: new Registry(),
595
- scaling: { strategy: "none", maxConsumerCount: 3 },
596
- });
597
- await pool.start();
598
- expect(testConsumers.length).toBe(3);
599
- const poolMetrics = pool["promMetrics"];
600
- expect(poolMetrics).toBeInstanceOf(ConsumerPoolMetrics);
601
- testConsumers.forEach((consumer) => {
602
- expect(consumer.metrics).toBe(poolMetrics);
603
- });
604
- });
605
- it("preserves a caller-supplied consumer metrics instance when no registry is provided", async () => {
606
- const callerMetrics = new ConsumerPoolMetrics({ register: new Registry() });
607
- pool = new RunQueueConsumerPool({
608
- ...defaultOptions,
609
- consumer: { ...defaultOptions.consumer, metrics: callerMetrics },
610
- scaling: { strategy: "none", maxConsumerCount: 1 },
611
- });
612
- await pool.start();
613
- expect(testConsumers[0]?.metrics).toBe(callerMetrics);
614
- });
615
- });
616
- describe("Backpressure scale-up freeze", () => {
617
- it("freezes scale-up while shouldPauseScaling returns true, then resumes", async () => {
618
- let paused = true;
619
- pool = new RunQueueConsumerPool({
620
- ...defaultOptions,
621
- scaling: {
622
- strategy: "smooth",
623
- minConsumerCount: 1,
624
- maxConsumerCount: 10,
625
- scaleUpCooldownMs: 0,
626
- disableJitter: true,
627
- shouldPauseScaling: () => paused,
628
- },
629
- });
630
- await pool.start();
631
- expect(pool.size).toBe(1);
632
- // A high queue would normally scale up, but backpressure freezes it.
633
- pool.updateQueueLength(10);
634
- advanceTimeAndProcessMetrics(1100);
635
- expect(pool.size).toBe(1);
636
- // Once backpressure releases, scaling resumes.
637
- paused = false;
638
- pool.updateQueueLength(10);
639
- advanceTimeAndProcessMetrics(1100);
640
- expect(pool.size).toBeGreaterThan(1);
641
- });
642
- it("still allows scale-down while paused", async () => {
643
- let paused = false;
644
- pool = new RunQueueConsumerPool({
645
- ...defaultOptions,
646
- scaling: {
647
- strategy: "smooth",
648
- minConsumerCount: 1,
649
- maxConsumerCount: 10,
650
- scaleUpCooldownMs: 0,
651
- scaleDownCooldownMs: 0,
652
- disableJitter: true,
653
- shouldPauseScaling: () => paused,
654
- },
655
- });
656
- await pool.start();
657
- pool.updateQueueLength(10);
658
- advanceTimeAndProcessMetrics(1100);
659
- const scaledUp = pool.size;
660
- expect(scaledUp).toBeGreaterThan(1);
661
- // Pausing must not block shrinking - we want to drain down, just not grow.
662
- // Loop to let the EWMA-smoothed queue length fall (one batch isn't enough).
663
- paused = true;
664
- for (let i = 0; i < 5; i++) {
665
- pool.updateQueueLength(0);
666
- advanceTimeAndProcessMetrics(1100);
667
- }
668
- expect(pool.size).toBeLessThan(scaledUp);
669
- });
670
- });
671
- });
672
- //# sourceMappingURL=consumerPool.test.js.map