@trigger.dev/core 4.5.14 → 4.5.16

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 (271) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +8 -2
  2. package/dist/commonjs/v3/apiClient/index.js +19 -6
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/build/extensions.d.ts +8 -0
  5. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
  6. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
  7. package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
  8. package/dist/commonjs/v3/schemas/api.d.ts +1 -0
  9. package/dist/commonjs/v3/schemas/api.js +17 -1
  10. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  11. package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
  12. package/dist/commonjs/v3/session-streams-api.js +1 -0
  13. package/dist/commonjs/v3/session-streams-api.js.map +1 -1
  14. package/dist/commonjs/v3/sessionStreams/channels.d.ts +25 -0
  15. package/dist/commonjs/v3/sessionStreams/channels.js +3 -0
  16. package/dist/commonjs/v3/sessionStreams/channels.js.map +1 -0
  17. package/dist/commonjs/v3/sessionStreams/index.d.ts +16 -16
  18. package/dist/commonjs/v3/sessionStreams/index.js +32 -32
  19. package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
  20. package/dist/commonjs/v3/sessionStreams/manager.d.ts +16 -16
  21. package/dist/commonjs/v3/sessionStreams/manager.js +48 -47
  22. package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
  23. package/dist/commonjs/v3/sessionStreams/types.d.ts +16 -16
  24. package/dist/commonjs/version.js +1 -1
  25. package/dist/esm/v3/apiClient/index.d.ts +8 -2
  26. package/dist/esm/v3/apiClient/index.js +19 -6
  27. package/dist/esm/v3/apiClient/index.js.map +1 -1
  28. package/dist/esm/v3/build/extensions.d.ts +8 -0
  29. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
  30. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
  31. package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
  32. package/dist/esm/v3/schemas/api.d.ts +1 -0
  33. package/dist/esm/v3/schemas/api.js +16 -1
  34. package/dist/esm/v3/schemas/api.js.map +1 -1
  35. package/dist/esm/v3/session-streams-api.d.ts +1 -0
  36. package/dist/esm/v3/session-streams-api.js +1 -0
  37. package/dist/esm/v3/session-streams-api.js.map +1 -1
  38. package/dist/esm/v3/sessionStreams/channels.d.ts +25 -0
  39. package/dist/esm/v3/sessionStreams/channels.js +2 -0
  40. package/dist/esm/v3/sessionStreams/channels.js.map +1 -0
  41. package/dist/esm/v3/sessionStreams/index.d.ts +16 -16
  42. package/dist/esm/v3/sessionStreams/index.js +32 -32
  43. package/dist/esm/v3/sessionStreams/index.js.map +1 -1
  44. package/dist/esm/v3/sessionStreams/manager.d.ts +16 -16
  45. package/dist/esm/v3/sessionStreams/manager.js +48 -47
  46. package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
  47. package/dist/esm/v3/sessionStreams/types.d.ts +16 -16
  48. package/dist/esm/version.js +1 -1
  49. package/package.json +4 -1
  50. package/dist/commonjs/v3/apiClient/bulkActions.test.d.ts +0 -1
  51. package/dist/commonjs/v3/apiClient/bulkActions.test.js +0 -151
  52. package/dist/commonjs/v3/apiClient/bulkActions.test.js.map +0 -1
  53. package/dist/commonjs/v3/apiClient/refreshAccessToken.test.d.ts +0 -1
  54. package/dist/commonjs/v3/apiClient/refreshAccessToken.test.js +0 -55
  55. package/dist/commonjs/v3/apiClient/refreshAccessToken.test.js.map +0 -1
  56. package/dist/commonjs/v3/apiClient/runStream.test.d.ts +0 -1
  57. package/dist/commonjs/v3/apiClient/runStream.test.js +0 -825
  58. package/dist/commonjs/v3/apiClient/runStream.test.js.map +0 -1
  59. package/dist/commonjs/v3/apiClient/streamBatchItems.test.d.ts +0 -1
  60. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js +0 -408
  61. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js.map +0 -1
  62. package/dist/commonjs/v3/apiKeys.test.d.ts +0 -1
  63. package/dist/commonjs/v3/apiKeys.test.js +0 -19
  64. package/dist/commonjs/v3/apiKeys.test.js.map +0 -1
  65. package/dist/commonjs/v3/apps/exec.test.d.ts +0 -1
  66. package/dist/commonjs/v3/apps/exec.test.js +0 -23
  67. package/dist/commonjs/v3/apps/exec.test.js.map +0 -1
  68. package/dist/commonjs/v3/build/flags.test.d.ts +0 -1
  69. package/dist/commonjs/v3/build/flags.test.js +0 -50
  70. package/dist/commonjs/v3/build/flags.test.js.map +0 -1
  71. package/dist/commonjs/v3/build/runtime.test.d.ts +0 -1
  72. package/dist/commonjs/v3/build/runtime.test.js +0 -44
  73. package/dist/commonjs/v3/build/runtime.test.js.map +0 -1
  74. package/dist/commonjs/v3/errors.test.d.ts +0 -1
  75. package/dist/commonjs/v3/errors.test.js +0 -36
  76. package/dist/commonjs/v3/errors.test.js.map +0 -1
  77. package/dist/commonjs/v3/externalDeploymentId.test.d.ts +0 -1
  78. package/dist/commonjs/v3/externalDeploymentId.test.js +0 -173
  79. package/dist/commonjs/v3/externalDeploymentId.test.js.map +0 -1
  80. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
  81. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -44
  82. package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
  83. package/dist/commonjs/v3/idempotencyKeys.test.d.ts +0 -1
  84. package/dist/commonjs/v3/idempotencyKeys.test.js +0 -192
  85. package/dist/commonjs/v3/idempotencyKeys.test.js.map +0 -1
  86. package/dist/commonjs/v3/isomorphic/friendlyId.test.d.ts +0 -1
  87. package/dist/commonjs/v3/isomorphic/friendlyId.test.js +0 -497
  88. package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +0 -1
  89. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
  90. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js +0 -141
  91. package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js.map +0 -1
  92. package/dist/commonjs/v3/isomorphic/waitpointMint.test.d.ts +0 -1
  93. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js +0 -97
  94. package/dist/commonjs/v3/isomorphic/waitpointMint.test.js.map +0 -1
  95. package/dist/commonjs/v3/machines/max-old-space.test.d.ts +0 -1
  96. package/dist/commonjs/v3/machines/max-old-space.test.js +0 -44
  97. package/dist/commonjs/v3/machines/max-old-space.test.js.map +0 -1
  98. package/dist/commonjs/v3/otel/tracingSDK.test.d.ts +0 -1
  99. package/dist/commonjs/v3/otel/tracingSDK.test.js +0 -174
  100. package/dist/commonjs/v3/otel/tracingSDK.test.js.map +0 -1
  101. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
  102. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js +0 -18
  103. package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js.map +0 -1
  104. package/dist/commonjs/v3/realtimeStreams/manager.test.d.ts +0 -1
  105. package/dist/commonjs/v3/realtimeStreams/manager.test.js +0 -89
  106. package/dist/commonjs/v3/realtimeStreams/manager.test.js.map +0 -1
  107. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
  108. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js +0 -68
  109. package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
  110. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
  111. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -674
  112. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
  113. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
  114. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -77
  115. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
  116. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
  117. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -293
  118. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
  119. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
  120. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -235
  121. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
  122. package/dist/commonjs/v3/schemas/api-type.test.d.ts +0 -1
  123. package/dist/commonjs/v3/schemas/api-type.test.js +0 -358
  124. package/dist/commonjs/v3/schemas/api-type.test.js.map +0 -1
  125. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
  126. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js +0 -79
  127. package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js.map +0 -1
  128. package/dist/commonjs/v3/schemas/idempotencyKey.test.d.ts +0 -1
  129. package/dist/commonjs/v3/schemas/idempotencyKey.test.js +0 -157
  130. package/dist/commonjs/v3/schemas/idempotencyKey.test.js.map +0 -1
  131. package/dist/commonjs/v3/schemas/scheduleWindow.test.d.ts +0 -1
  132. package/dist/commonjs/v3/schemas/scheduleWindow.test.js +0 -52
  133. package/dist/commonjs/v3/schemas/scheduleWindow.test.js.map +0 -1
  134. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
  135. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js +0 -104
  136. package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
  137. package/dist/commonjs/v3/serverOnly/shutdownManager.test.d.ts +0 -1
  138. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js +0 -139
  139. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js.map +0 -1
  140. package/dist/commonjs/v3/sessionStreams/manager.test.d.ts +0 -1
  141. package/dist/commonjs/v3/sessionStreams/manager.test.js +0 -375
  142. package/dist/commonjs/v3/sessionStreams/manager.test.js.map +0 -1
  143. package/dist/commonjs/v3/sessionStreams/router.test.d.ts +0 -1
  144. package/dist/commonjs/v3/sessionStreams/router.test.js +0 -463
  145. package/dist/commonjs/v3/sessionStreams/router.test.js.map +0 -1
  146. package/dist/commonjs/v3/taskContext/index.test.d.ts +0 -1
  147. package/dist/commonjs/v3/taskContext/index.test.js +0 -73
  148. package/dist/commonjs/v3/taskContext/index.test.js.map +0 -1
  149. package/dist/commonjs/v3/taskContext/otelProcessors.test.d.ts +0 -1
  150. package/dist/commonjs/v3/taskContext/otelProcessors.test.js +0 -109
  151. package/dist/commonjs/v3/taskContext/otelProcessors.test.js.map +0 -1
  152. package/dist/commonjs/v3/telnetLogServer.test.d.ts +0 -1
  153. package/dist/commonjs/v3/telnetLogServer.test.js +0 -144
  154. package/dist/commonjs/v3/telnetLogServer.test.js.map +0 -1
  155. package/dist/commonjs/v3/utils/reconnectBackoff.test.d.ts +0 -1
  156. package/dist/commonjs/v3/utils/reconnectBackoff.test.js +0 -76
  157. package/dist/commonjs/v3/utils/reconnectBackoff.test.js.map +0 -1
  158. package/dist/commonjs/v3/workloadDeploymentToken.test.d.ts +0 -1
  159. package/dist/commonjs/v3/workloadDeploymentToken.test.js +0 -110
  160. package/dist/commonjs/v3/workloadDeploymentToken.test.js.map +0 -1
  161. package/dist/esm/v3/apiClient/bulkActions.test.d.ts +0 -1
  162. package/dist/esm/v3/apiClient/bulkActions.test.js +0 -149
  163. package/dist/esm/v3/apiClient/bulkActions.test.js.map +0 -1
  164. package/dist/esm/v3/apiClient/refreshAccessToken.test.d.ts +0 -1
  165. package/dist/esm/v3/apiClient/refreshAccessToken.test.js +0 -53
  166. package/dist/esm/v3/apiClient/refreshAccessToken.test.js.map +0 -1
  167. package/dist/esm/v3/apiClient/runStream.test.d.ts +0 -1
  168. package/dist/esm/v3/apiClient/runStream.test.js +0 -823
  169. package/dist/esm/v3/apiClient/runStream.test.js.map +0 -1
  170. package/dist/esm/v3/apiClient/streamBatchItems.test.d.ts +0 -1
  171. package/dist/esm/v3/apiClient/streamBatchItems.test.js +0 -406
  172. package/dist/esm/v3/apiClient/streamBatchItems.test.js.map +0 -1
  173. package/dist/esm/v3/apiKeys.test.d.ts +0 -1
  174. package/dist/esm/v3/apiKeys.test.js +0 -17
  175. package/dist/esm/v3/apiKeys.test.js.map +0 -1
  176. package/dist/esm/v3/apps/exec.test.d.ts +0 -1
  177. package/dist/esm/v3/apps/exec.test.js +0 -21
  178. package/dist/esm/v3/apps/exec.test.js.map +0 -1
  179. package/dist/esm/v3/build/flags.test.d.ts +0 -1
  180. package/dist/esm/v3/build/flags.test.js +0 -48
  181. package/dist/esm/v3/build/flags.test.js.map +0 -1
  182. package/dist/esm/v3/build/runtime.test.d.ts +0 -1
  183. package/dist/esm/v3/build/runtime.test.js +0 -42
  184. package/dist/esm/v3/build/runtime.test.js.map +0 -1
  185. package/dist/esm/v3/errors.test.d.ts +0 -1
  186. package/dist/esm/v3/errors.test.js +0 -34
  187. package/dist/esm/v3/errors.test.js.map +0 -1
  188. package/dist/esm/v3/externalDeploymentId.test.d.ts +0 -1
  189. package/dist/esm/v3/externalDeploymentId.test.js +0 -171
  190. package/dist/esm/v3/externalDeploymentId.test.js.map +0 -1
  191. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
  192. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -42
  193. package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
  194. package/dist/esm/v3/idempotencyKeys.test.d.ts +0 -1
  195. package/dist/esm/v3/idempotencyKeys.test.js +0 -190
  196. package/dist/esm/v3/idempotencyKeys.test.js.map +0 -1
  197. package/dist/esm/v3/isomorphic/friendlyId.test.d.ts +0 -1
  198. package/dist/esm/v3/isomorphic/friendlyId.test.js +0 -495
  199. package/dist/esm/v3/isomorphic/friendlyId.test.js.map +0 -1
  200. package/dist/esm/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
  201. package/dist/esm/v3/isomorphic/runOpsResidency.test.js +0 -139
  202. package/dist/esm/v3/isomorphic/runOpsResidency.test.js.map +0 -1
  203. package/dist/esm/v3/isomorphic/waitpointMint.test.d.ts +0 -1
  204. package/dist/esm/v3/isomorphic/waitpointMint.test.js +0 -95
  205. package/dist/esm/v3/isomorphic/waitpointMint.test.js.map +0 -1
  206. package/dist/esm/v3/machines/max-old-space.test.d.ts +0 -1
  207. package/dist/esm/v3/machines/max-old-space.test.js +0 -42
  208. package/dist/esm/v3/machines/max-old-space.test.js.map +0 -1
  209. package/dist/esm/v3/otel/tracingSDK.test.d.ts +0 -1
  210. package/dist/esm/v3/otel/tracingSDK.test.js +0 -172
  211. package/dist/esm/v3/otel/tracingSDK.test.js.map +0 -1
  212. package/dist/esm/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
  213. package/dist/esm/v3/otel/tracingSDKShutdown.test.js +0 -16
  214. package/dist/esm/v3/otel/tracingSDKShutdown.test.js.map +0 -1
  215. package/dist/esm/v3/realtimeStreams/manager.test.d.ts +0 -1
  216. package/dist/esm/v3/realtimeStreams/manager.test.js +0 -87
  217. package/dist/esm/v3/realtimeStreams/manager.test.js.map +0 -1
  218. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
  219. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js +0 -66
  220. package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
  221. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
  222. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -672
  223. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
  224. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
  225. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -75
  226. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
  227. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
  228. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -291
  229. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
  230. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
  231. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -233
  232. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
  233. package/dist/esm/v3/schemas/api-type.test.d.ts +0 -1
  234. package/dist/esm/v3/schemas/api-type.test.js +0 -356
  235. package/dist/esm/v3/schemas/api-type.test.js.map +0 -1
  236. package/dist/esm/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
  237. package/dist/esm/v3/schemas/batchItemNDJSON.test.js +0 -77
  238. package/dist/esm/v3/schemas/batchItemNDJSON.test.js.map +0 -1
  239. package/dist/esm/v3/schemas/idempotencyKey.test.d.ts +0 -1
  240. package/dist/esm/v3/schemas/idempotencyKey.test.js +0 -155
  241. package/dist/esm/v3/schemas/idempotencyKey.test.js.map +0 -1
  242. package/dist/esm/v3/schemas/scheduleWindow.test.d.ts +0 -1
  243. package/dist/esm/v3/schemas/scheduleWindow.test.js +0 -50
  244. package/dist/esm/v3/schemas/scheduleWindow.test.js.map +0 -1
  245. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
  246. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js +0 -102
  247. package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
  248. package/dist/esm/v3/serverOnly/shutdownManager.test.d.ts +0 -1
  249. package/dist/esm/v3/serverOnly/shutdownManager.test.js +0 -137
  250. package/dist/esm/v3/serverOnly/shutdownManager.test.js.map +0 -1
  251. package/dist/esm/v3/sessionStreams/manager.test.d.ts +0 -1
  252. package/dist/esm/v3/sessionStreams/manager.test.js +0 -373
  253. package/dist/esm/v3/sessionStreams/manager.test.js.map +0 -1
  254. package/dist/esm/v3/sessionStreams/router.test.d.ts +0 -1
  255. package/dist/esm/v3/sessionStreams/router.test.js +0 -461
  256. package/dist/esm/v3/sessionStreams/router.test.js.map +0 -1
  257. package/dist/esm/v3/taskContext/index.test.d.ts +0 -1
  258. package/dist/esm/v3/taskContext/index.test.js +0 -71
  259. package/dist/esm/v3/taskContext/index.test.js.map +0 -1
  260. package/dist/esm/v3/taskContext/otelProcessors.test.d.ts +0 -1
  261. package/dist/esm/v3/taskContext/otelProcessors.test.js +0 -107
  262. package/dist/esm/v3/taskContext/otelProcessors.test.js.map +0 -1
  263. package/dist/esm/v3/telnetLogServer.test.d.ts +0 -1
  264. package/dist/esm/v3/telnetLogServer.test.js +0 -139
  265. package/dist/esm/v3/telnetLogServer.test.js.map +0 -1
  266. package/dist/esm/v3/utils/reconnectBackoff.test.d.ts +0 -1
  267. package/dist/esm/v3/utils/reconnectBackoff.test.js +0 -74
  268. package/dist/esm/v3/utils/reconnectBackoff.test.js.map +0 -1
  269. package/dist/esm/v3/workloadDeploymentToken.test.d.ts +0 -1
  270. package/dist/esm/v3/workloadDeploymentToken.test.js +0 -108
  271. 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