@tdengine/websocket 3.2.2 → 3.3.0

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 (275) hide show
  1. package/lib/package.json +64 -0
  2. package/lib/src/client/retryConfig.d.ts +10 -0
  3. package/lib/src/client/retryConfig.d.ts.map +1 -0
  4. package/lib/src/client/retryConfig.js +46 -0
  5. package/lib/src/client/wsClient.d.ts +24 -7
  6. package/lib/src/client/wsClient.d.ts.map +1 -1
  7. package/lib/src/client/wsClient.js +164 -137
  8. package/lib/src/client/wsConnector.d.ts +55 -9
  9. package/lib/src/client/wsConnector.d.ts.map +1 -1
  10. package/lib/src/client/wsConnector.js +522 -102
  11. package/lib/src/client/wsConnectorPool.d.ts +5 -1
  12. package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
  13. package/lib/src/client/wsConnectorPool.js +67 -52
  14. package/lib/src/client/wsEventCallback.d.ts +3 -0
  15. package/lib/src/client/wsEventCallback.d.ts.map +1 -1
  16. package/lib/src/client/wsEventCallback.js +67 -8
  17. package/lib/src/client/wsResponse.d.ts +0 -3
  18. package/lib/src/client/wsResponse.d.ts.map +1 -1
  19. package/lib/src/client/wsResponse.js +0 -3
  20. package/lib/src/common/addressConnectionTracker.d.ts +11 -0
  21. package/lib/src/common/addressConnectionTracker.d.ts.map +1 -0
  22. package/lib/src/common/addressConnectionTracker.js +53 -0
  23. package/lib/src/common/config.d.ts +3 -0
  24. package/lib/src/common/config.d.ts.map +1 -1
  25. package/lib/src/common/config.js +6 -0
  26. package/lib/src/common/constant.d.ts +1 -0
  27. package/lib/src/common/constant.d.ts.map +1 -1
  28. package/lib/src/common/constant.js +6 -1
  29. package/lib/src/common/dsn.d.ts +30 -0
  30. package/lib/src/common/dsn.d.ts.map +1 -0
  31. package/lib/src/common/dsn.js +221 -0
  32. package/lib/src/common/taosResult.d.ts.map +1 -1
  33. package/lib/src/common/taosResult.js +0 -5
  34. package/lib/src/common/urlParser.d.ts +32 -0
  35. package/lib/src/common/urlParser.d.ts.map +1 -0
  36. package/lib/src/common/urlParser.js +201 -0
  37. package/lib/src/common/utils.d.ts +6 -1
  38. package/lib/src/common/utils.d.ts.map +1 -1
  39. package/lib/src/common/utils.js +74 -22
  40. package/lib/src/index.d.ts.map +1 -1
  41. package/lib/src/sql/wsSql.d.ts.map +1 -1
  42. package/lib/src/sql/wsSql.js +2 -2
  43. package/lib/src/stmt/FieldBindParams.d.ts.map +1 -1
  44. package/lib/src/stmt/wsColumnInfo.d.ts.map +1 -1
  45. package/lib/src/stmt/wsParams1.d.ts.map +1 -1
  46. package/lib/src/stmt/wsParams1.js +26 -26
  47. package/lib/src/stmt/wsParams2.d.ts.map +1 -1
  48. package/lib/src/stmt/wsParams2.js +0 -3
  49. package/lib/src/stmt/wsParamsBase.d.ts.map +1 -1
  50. package/lib/src/stmt/wsProto.d.ts.map +1 -1
  51. package/lib/src/stmt/wsProto.js +16 -16
  52. package/lib/src/stmt/wsStmt1.d.ts.map +1 -1
  53. package/lib/src/stmt/wsStmt2.d.ts +12 -4
  54. package/lib/src/stmt/wsStmt2.d.ts.map +1 -1
  55. package/lib/src/stmt/wsStmt2.js +182 -64
  56. package/lib/src/stmt/wsTableInfo.d.ts.map +1 -1
  57. package/lib/src/tmq/config.d.ts +4 -2
  58. package/lib/src/tmq/config.d.ts.map +1 -1
  59. package/lib/src/tmq/config.js +30 -13
  60. package/lib/src/tmq/constant.d.ts +4 -0
  61. package/lib/src/tmq/constant.d.ts.map +1 -1
  62. package/lib/src/tmq/constant.js +4 -0
  63. package/lib/src/tmq/tmqResponse.d.ts.map +1 -1
  64. package/lib/src/tmq/tmqResponse.js +1 -4
  65. package/lib/src/tmq/wsTmq.d.ts +4 -1
  66. package/lib/src/tmq/wsTmq.d.ts.map +1 -1
  67. package/lib/src/tmq/wsTmq.js +55 -27
  68. package/lib/test/bulkPulling/a.test.d.ts +2 -0
  69. package/lib/test/bulkPulling/a.test.d.ts.map +1 -0
  70. package/lib/test/bulkPulling/a.test.js +166 -0
  71. package/lib/test/bulkPulling/cloud.tmq.test.js +3 -2
  72. package/lib/test/bulkPulling/decimal.test.js +8 -8
  73. package/lib/test/bulkPulling/dsn.test.d.ts +2 -0
  74. package/lib/test/bulkPulling/dsn.test.d.ts.map +1 -0
  75. package/lib/test/bulkPulling/dsn.test.js +397 -0
  76. package/lib/test/bulkPulling/queryTables.test.js +1 -1
  77. package/lib/test/bulkPulling/retryConfig.test.d.ts +2 -0
  78. package/lib/test/bulkPulling/retryConfig.test.d.ts.map +1 -0
  79. package/lib/test/bulkPulling/retryConfig.test.js +34 -0
  80. package/lib/test/bulkPulling/schemaless.test.js +15 -14
  81. package/lib/test/bulkPulling/sql.failover.test.d.ts +2 -0
  82. package/lib/test/bulkPulling/sql.failover.test.d.ts.map +1 -0
  83. package/lib/test/bulkPulling/sql.failover.test.js +338 -0
  84. package/lib/test/bulkPulling/sql.test.js +116 -44
  85. package/lib/test/bulkPulling/stmt1.func.test.js +31 -30
  86. package/lib/test/bulkPulling/stmt1.type.test.js +1 -1
  87. package/lib/test/bulkPulling/stmt2.failover.test.d.ts +2 -0
  88. package/lib/test/bulkPulling/stmt2.failover.test.d.ts.map +1 -0
  89. package/lib/test/bulkPulling/stmt2.failover.test.js +313 -0
  90. package/lib/test/bulkPulling/stmt2.func.test.js +37 -36
  91. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts +2 -0
  92. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts.map +1 -0
  93. package/lib/test/bulkPulling/stmt2.init.failover.test.js +50 -0
  94. package/lib/test/bulkPulling/stmt2.type.test.js +1 -1
  95. package/lib/test/bulkPulling/tmq.config.test.d.ts +2 -0
  96. package/lib/test/bulkPulling/tmq.config.test.d.ts.map +1 -0
  97. package/lib/test/bulkPulling/tmq.config.test.js +77 -0
  98. package/lib/test/bulkPulling/tmq.failover.test.d.ts +2 -0
  99. package/lib/test/bulkPulling/tmq.failover.test.d.ts.map +1 -0
  100. package/lib/test/bulkPulling/tmq.failover.test.js +404 -0
  101. package/lib/test/bulkPulling/tmq.test.js +135 -14
  102. package/lib/test/bulkPulling/urlParser.test.d.ts +2 -0
  103. package/lib/test/bulkPulling/urlParser.test.d.ts.map +1 -0
  104. package/lib/test/bulkPulling/urlParser.test.js +452 -0
  105. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts +2 -0
  106. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.d.ts.map +1 -0
  107. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.js +184 -0
  108. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts +2 -0
  109. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts.map +1 -0
  110. package/lib/test/bulkPulling/wsClient.recovery.test.js +104 -0
  111. package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts +2 -0
  112. package/lib/test/bulkPulling/wsConfig.dsn.test.d.ts.map +1 -0
  113. package/lib/test/bulkPulling/wsConfig.dsn.test.js +39 -0
  114. package/lib/test/bulkPulling/wsConnectPool.test.js +7 -7
  115. package/lib/test/bulkPulling/wsConnector.failover.test.d.ts +2 -0
  116. package/lib/test/bulkPulling/wsConnector.failover.test.d.ts.map +1 -0
  117. package/lib/test/bulkPulling/wsConnector.failover.test.js +497 -0
  118. package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts +2 -0
  119. package/lib/test/bulkPulling/wsConnectorPool.key.test.d.ts.map +1 -0
  120. package/lib/test/bulkPulling/wsConnectorPool.key.test.js +52 -0
  121. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts +2 -0
  122. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts.map +1 -0
  123. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.js +28 -0
  124. package/lib/test/bulkPulling/wsEventCallback.test.d.ts +2 -0
  125. package/lib/test/bulkPulling/wsEventCallback.test.d.ts.map +1 -0
  126. package/lib/test/bulkPulling/wsEventCallback.test.js +54 -0
  127. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts +2 -0
  128. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts.map +1 -0
  129. package/lib/test/bulkPulling/wsProxy.failover.integration.test.js +120 -0
  130. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts +2 -0
  131. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts.map +1 -0
  132. package/lib/test/bulkPulling/wsProxy.failover.test.js +465 -0
  133. package/lib/test/client/wsClient.recovery.test.d.ts +2 -0
  134. package/lib/test/client/wsClient.recovery.test.d.ts.map +1 -0
  135. package/lib/test/client/wsClient.recovery.test.js +122 -0
  136. package/lib/test/client/wsConnectPool.test.d.ts +2 -0
  137. package/lib/test/client/wsConnectPool.test.d.ts.map +1 -0
  138. package/lib/test/client/wsConnectPool.test.js +147 -0
  139. package/lib/test/client/wsConnector.failover.test.d.ts +2 -0
  140. package/lib/test/client/wsConnector.failover.test.d.ts.map +1 -0
  141. package/lib/test/client/wsConnector.failover.test.js +681 -0
  142. package/lib/test/client/wsConnector.leastConnections.test.d.ts +2 -0
  143. package/lib/test/client/wsConnector.leastConnections.test.d.ts.map +1 -0
  144. package/lib/test/client/wsConnector.leastConnections.test.js +71 -0
  145. package/lib/test/client/wsConnectorPool.key.test.d.ts +2 -0
  146. package/lib/test/client/wsConnectorPool.key.test.d.ts.map +1 -0
  147. package/lib/test/client/wsConnectorPool.key.test.js +127 -0
  148. package/lib/test/client/wsEventCallback.test.d.ts +2 -0
  149. package/lib/test/client/wsEventCallback.test.d.ts.map +1 -0
  150. package/lib/test/client/wsEventCallback.test.js +98 -0
  151. package/lib/test/common/addressConnectionTracker.test.d.ts +2 -0
  152. package/lib/test/common/addressConnectionTracker.test.d.ts.map +1 -0
  153. package/lib/test/common/addressConnectionTracker.test.js +74 -0
  154. package/lib/test/common/dsn.test.d.ts +2 -0
  155. package/lib/test/common/dsn.test.d.ts.map +1 -0
  156. package/lib/test/common/dsn.test.js +406 -0
  157. package/lib/test/common/log.test.d.ts +2 -0
  158. package/lib/test/common/log.test.d.ts.map +1 -0
  159. package/lib/test/common/log.test.js +54 -0
  160. package/lib/test/common/utils.test.d.ts +2 -0
  161. package/lib/test/common/utils.test.d.ts.map +1 -0
  162. package/lib/test/common/utils.test.js +13 -0
  163. package/lib/test/common/wsConfig.dsn.test.d.ts +2 -0
  164. package/lib/test/common/wsConfig.dsn.test.d.ts.map +1 -0
  165. package/lib/test/common/wsConfig.dsn.test.js +39 -0
  166. package/lib/test/helpers/utils.d.ts +27 -0
  167. package/lib/test/helpers/utils.d.ts.map +1 -0
  168. package/lib/test/helpers/utils.js +341 -0
  169. package/lib/test/helpers/wsFailoverProxy.d.ts +109 -0
  170. package/lib/test/helpers/wsFailoverProxy.d.ts.map +1 -0
  171. package/lib/test/helpers/wsFailoverProxy.js +420 -0
  172. package/lib/test/helpers/wsProxy.d.ts +110 -0
  173. package/lib/test/helpers/wsProxy.d.ts.map +1 -0
  174. package/lib/test/helpers/wsProxy.js +429 -0
  175. package/lib/test/sql/core/decimal.test.d.ts +2 -0
  176. package/lib/test/sql/core/decimal.test.d.ts.map +1 -0
  177. package/lib/test/sql/core/decimal.test.js +153 -0
  178. package/lib/test/sql/core/queryTables.test.d.ts +2 -0
  179. package/lib/test/sql/core/queryTables.test.d.ts.map +1 -0
  180. package/lib/test/sql/core/queryTables.test.js +506 -0
  181. package/lib/test/sql/core/schemaless.test.d.ts +2 -0
  182. package/lib/test/sql/core/schemaless.test.d.ts.map +1 -0
  183. package/lib/test/sql/core/schemaless.test.js +102 -0
  184. package/lib/test/sql/core/sql.test.d.ts +2 -0
  185. package/lib/test/sql/core/sql.test.d.ts.map +1 -0
  186. package/lib/test/sql/core/sql.test.js +324 -0
  187. package/lib/test/sql/decimal.test.d.ts +2 -0
  188. package/lib/test/sql/decimal.test.d.ts.map +1 -0
  189. package/lib/test/sql/decimal.test.js +153 -0
  190. package/lib/test/sql/failover/sql.failover.test.d.ts +2 -0
  191. package/lib/test/sql/failover/sql.failover.test.d.ts.map +1 -0
  192. package/lib/test/sql/failover/sql.failover.test.js +341 -0
  193. package/lib/test/sql/queryTables.test.d.ts +2 -0
  194. package/lib/test/sql/queryTables.test.d.ts.map +1 -0
  195. package/lib/test/sql/queryTables.test.js +506 -0
  196. package/lib/test/sql/schemaless.test.d.ts +2 -0
  197. package/lib/test/sql/schemaless.test.d.ts.map +1 -0
  198. package/lib/test/sql/schemaless.test.js +102 -0
  199. package/lib/test/sql/sql.failover.test.d.ts +2 -0
  200. package/lib/test/sql/sql.failover.test.d.ts.map +1 -0
  201. package/lib/test/sql/sql.failover.test.js +341 -0
  202. package/lib/test/sql/sql.test.d.ts +2 -0
  203. package/lib/test/sql/sql.test.d.ts.map +1 -0
  204. package/lib/test/sql/sql.test.js +324 -0
  205. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts +2 -0
  206. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts.map +1 -0
  207. package/lib/test/stmt/failover/stmt2.failover.mock.test.js +341 -0
  208. package/lib/test/stmt/failover/stmt2.failover.test.d.ts +2 -0
  209. package/lib/test/stmt/failover/stmt2.failover.test.d.ts.map +1 -0
  210. package/lib/test/stmt/failover/stmt2.failover.test.js +384 -0
  211. package/lib/test/stmt/stmt1.func.test.d.ts +2 -0
  212. package/lib/test/stmt/stmt1.func.test.d.ts.map +1 -0
  213. package/lib/test/stmt/stmt1.func.test.js +418 -0
  214. package/lib/test/stmt/stmt1.type.test.d.ts +2 -0
  215. package/lib/test/stmt/stmt1.type.test.d.ts.map +1 -0
  216. package/lib/test/stmt/stmt1.type.test.js +399 -0
  217. package/lib/test/stmt/stmt2.failover.mock.test.d.ts +2 -0
  218. package/lib/test/stmt/stmt2.failover.mock.test.d.ts.map +1 -0
  219. package/lib/test/stmt/stmt2.failover.mock.test.js +341 -0
  220. package/lib/test/stmt/stmt2.failover.test.d.ts +2 -0
  221. package/lib/test/stmt/stmt2.failover.test.d.ts.map +1 -0
  222. package/lib/test/stmt/stmt2.failover.test.js +384 -0
  223. package/lib/test/stmt/stmt2.func.test.d.ts +2 -0
  224. package/lib/test/stmt/stmt2.func.test.d.ts.map +1 -0
  225. package/lib/test/stmt/stmt2.func.test.js +537 -0
  226. package/lib/test/stmt/stmt2.type.test.d.ts +2 -0
  227. package/lib/test/stmt/stmt2.type.test.d.ts.map +1 -0
  228. package/lib/test/stmt/stmt2.type.test.js +401 -0
  229. package/lib/test/stmt/v1/stmt1.func.test.d.ts +2 -0
  230. package/lib/test/stmt/v1/stmt1.func.test.d.ts.map +1 -0
  231. package/lib/test/stmt/v1/stmt1.func.test.js +418 -0
  232. package/lib/test/stmt/v1/stmt1.type.test.d.ts +2 -0
  233. package/lib/test/stmt/v1/stmt1.type.test.d.ts.map +1 -0
  234. package/lib/test/stmt/v1/stmt1.type.test.js +399 -0
  235. package/lib/test/stmt/v2/stmt2.func.test.d.ts +2 -0
  236. package/lib/test/stmt/v2/stmt2.func.test.d.ts.map +1 -0
  237. package/lib/test/stmt/v2/stmt2.func.test.js +537 -0
  238. package/lib/test/stmt/v2/stmt2.type.test.d.ts +2 -0
  239. package/lib/test/stmt/v2/stmt2.type.test.d.ts.map +1 -0
  240. package/lib/test/stmt/v2/stmt2.type.test.js +401 -0
  241. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts +2 -0
  242. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts.map +1 -0
  243. package/lib/test/tmq/cloud/cloud.tmq.test.js +84 -0
  244. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts +2 -0
  245. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts.map +1 -0
  246. package/lib/test/tmq/cloud/tmq.cloud.test.js +82 -0
  247. package/lib/test/tmq/core/tmq.config.test.d.ts +2 -0
  248. package/lib/test/tmq/core/tmq.config.test.d.ts.map +1 -0
  249. package/lib/test/tmq/core/tmq.config.test.js +83 -0
  250. package/lib/test/tmq/core/tmq.test.d.ts +2 -0
  251. package/lib/test/tmq/core/tmq.test.d.ts.map +1 -0
  252. package/lib/test/tmq/core/tmq.test.js +513 -0
  253. package/lib/test/tmq/failover/tmq.failover.test.d.ts +2 -0
  254. package/lib/test/tmq/failover/tmq.failover.test.d.ts.map +1 -0
  255. package/lib/test/tmq/failover/tmq.failover.test.js +404 -0
  256. package/lib/test/tmq/tmq.cloud.test.d.ts +2 -0
  257. package/lib/test/tmq/tmq.cloud.test.d.ts.map +1 -0
  258. package/lib/test/tmq/tmq.cloud.test.js +82 -0
  259. package/lib/test/tmq/tmq.config.test.d.ts +2 -0
  260. package/lib/test/tmq/tmq.config.test.d.ts.map +1 -0
  261. package/lib/test/tmq/tmq.config.test.js +94 -0
  262. package/lib/test/tmq/tmq.failover.test.d.ts +2 -0
  263. package/lib/test/tmq/tmq.failover.test.d.ts.map +1 -0
  264. package/lib/test/tmq/tmq.failover.test.js +404 -0
  265. package/lib/test/tmq/tmq.test.d.ts +2 -0
  266. package/lib/test/tmq/tmq.test.d.ts.map +1 -0
  267. package/lib/test/tmq/tmq.test.js +513 -0
  268. package/lib/test/unit/connectionManager.test.d.ts +2 -0
  269. package/lib/test/unit/connectionManager.test.d.ts.map +1 -0
  270. package/lib/test/unit/connectionManager.test.js +91 -0
  271. package/lib/test/utils.d.ts +4 -0
  272. package/lib/test/utils.d.ts.map +1 -1
  273. package/lib/test/utils.js +11 -17
  274. package/package.json +1 -1
  275. package/readme.md +2 -2
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const websocket_1 = require("websocket");
4
+ const wsClient_1 = require("../../src/client/wsClient");
5
+ const wsConnectorPool_1 = require("../../src/client/wsConnectorPool");
6
+ const dsn_1 = require("../../src/common/dsn");
7
+ const wsError_1 = require("../../src/common/wsError");
8
+ function createMockConnector() {
9
+ return {
10
+ readyState: jest.fn(() => websocket_1.w3cwebsocket.OPEN),
11
+ ready: jest.fn(async () => { }),
12
+ setSessionRecoveryHook: jest.fn(),
13
+ sendMsgDirect: jest.fn(async (_message) => ({
14
+ msg: { code: 0, message: "" }
15
+ })),
16
+ sendMsg: jest.fn(async () => ({ msg: { code: 0, message: "" } })),
17
+ sendMsgNoResp: jest.fn(async () => { }),
18
+ };
19
+ }
20
+ describe("WsClient recovery hook", () => {
21
+ afterEach(() => {
22
+ jest.restoreAllMocks();
23
+ });
24
+ test("uses dsn endpoint when creating connection", async () => {
25
+ const dsn = (0, dsn_1.parse)("ws://root:taosdata@localhost:6041");
26
+ dsn.endpoint = dsn_1.WS_TMQ_ENDPOINT;
27
+ const connector = createMockConnector();
28
+ const getConnectionSpy = jest
29
+ .spyOn(wsConnectorPool_1.WebSocketConnectionPool.instance(), "getConnection")
30
+ .mockResolvedValue(connector);
31
+ const client = new wsClient_1.WsClient(dsn, 4321);
32
+ await client.ready();
33
+ expect(getConnectionSpy).toHaveBeenCalledWith(dsn, 4321);
34
+ });
35
+ test("runs custom recovery hook without sql conn recovery on tmq path", async () => {
36
+ const dsn = (0, dsn_1.parse)("ws://root:taosdata@localhost:6041");
37
+ dsn.endpoint = dsn_1.WS_TMQ_ENDPOINT;
38
+ const connector = createMockConnector();
39
+ jest
40
+ .spyOn(wsConnectorPool_1.WebSocketConnectionPool.instance(), "getConnection")
41
+ .mockResolvedValue(connector);
42
+ const customRecoveryHook = jest.fn(async () => { });
43
+ const client = new wsClient_1.WsClient(dsn, 5000);
44
+ client.setSessionRecoveryHook(customRecoveryHook);
45
+ await client.ready();
46
+ const hookCalls = connector.setSessionRecoveryHook.mock.calls;
47
+ const hook = hookCalls[hookCalls.length - 1]?.[0];
48
+ expect(hook).toBeTruthy();
49
+ await hook();
50
+ expect(connector.sendMsgDirect).not.toHaveBeenCalled();
51
+ expect(customRecoveryHook).toHaveBeenCalledTimes(1);
52
+ });
53
+ test("keeps sql conn recovery and then runs custom recovery on sql endpoint", async () => {
54
+ const dsn = (0, dsn_1.parse)("ws://root:taosdata@localhost:6041");
55
+ const connector = createMockConnector();
56
+ const callOrder = [];
57
+ connector.sendMsgDirect.mockImplementation(async (message) => {
58
+ const action = JSON.parse(message).action;
59
+ callOrder.push(action);
60
+ return { msg: { code: 0, message: "" } };
61
+ });
62
+ jest
63
+ .spyOn(wsConnectorPool_1.WebSocketConnectionPool.instance(), "getConnection")
64
+ .mockResolvedValue(connector);
65
+ const client = new wsClient_1.WsClient(dsn, 5000);
66
+ client._connectedDatabase = "db_recovery";
67
+ client.setSessionRecoveryHook(async () => {
68
+ callOrder.push("custom");
69
+ });
70
+ await client.ready();
71
+ const hookCalls = connector.setSessionRecoveryHook.mock.calls;
72
+ const hook = hookCalls[hookCalls.length - 1]?.[0];
73
+ expect(hook).toBeTruthy();
74
+ await hook();
75
+ expect(connector.sendMsgDirect).toHaveBeenCalledTimes(1);
76
+ const firstCall = connector.sendMsgDirect.mock.calls[0];
77
+ const connMsg = JSON.parse(firstCall[0]);
78
+ expect(connMsg.action).toBe("conn");
79
+ expect(connMsg.args.db).toBe("db_recovery");
80
+ expect(callOrder).toEqual(["conn", "custom"]);
81
+ });
82
+ test("throws WebSocketQueryError when sql recovery direct call fails", async () => {
83
+ const dsn = (0, dsn_1.parse)("ws://root:taosdata@localhost:6041");
84
+ const connector = createMockConnector();
85
+ connector.sendMsgDirect.mockResolvedValue({
86
+ msg: {
87
+ code: 9001,
88
+ message: "conn failed",
89
+ },
90
+ });
91
+ jest
92
+ .spyOn(wsConnectorPool_1.WebSocketConnectionPool.instance(), "getConnection")
93
+ .mockResolvedValue(connector);
94
+ const customRecoveryHook = jest.fn(async () => { });
95
+ const client = new wsClient_1.WsClient(dsn, 5000);
96
+ client.setSessionRecoveryHook(customRecoveryHook);
97
+ await client.ready();
98
+ const hookCalls = connector.setSessionRecoveryHook.mock.calls;
99
+ const hook = hookCalls[hookCalls.length - 1]?.[0];
100
+ expect(hook).toBeTruthy();
101
+ await expect(hook()).rejects.toBeInstanceOf(wsError_1.WebSocketQueryError);
102
+ expect(customRecoveryHook).not.toHaveBeenCalled();
103
+ });
104
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wsConfig.dsn.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsConfig.dsn.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/wsConfig.dsn.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_1 = require("../../src/common/config");
4
+ const utils_1 = require("../../src/common/utils");
5
+ const dsn_1 = require("../../src/common/dsn");
6
+ describe("WSConfig to Dsn conversion", () => {
7
+ test("parses multi-address dsn and keeps connector-level params", () => {
8
+ const conf = new config_1.WSConfig("ws://root:taosdata@host1:6041,host2:6042/mydb?retries=5&retry_backoff_ms=120&timezone=UTC");
9
+ const dsn = (0, utils_1.getDsn)(conf);
10
+ expect(dsn.scheme).toBe("ws");
11
+ expect(dsn.addresses).toEqual([
12
+ { host: "host1", port: 6041 },
13
+ { host: "host2", port: 6042 },
14
+ ]);
15
+ expect(dsn.database).toBe("mydb");
16
+ expect(dsn.endpoint).toBe(dsn_1.WS_SQL_ENDPOINT);
17
+ expect(dsn.params.get("retries")).toBe("5");
18
+ expect(dsn.params.get("retry_backoff_ms")).toBe("120");
19
+ expect(dsn.params.get("timezone")).toBe("UTC");
20
+ expect(conf.getDb()).toBe("mydb");
21
+ expect(conf.getTimezone()).toBe("UTC");
22
+ });
23
+ test("applies WSConfig overrides on top of dsn", () => {
24
+ const conf = new config_1.WSConfig("ws://root:taosdata@host1:6041/mydb");
25
+ conf.setUser("admin");
26
+ conf.setPwd("secret");
27
+ conf.setToken("token-1");
28
+ conf.setBearerToken("bearer-1");
29
+ conf.setTimezone("Asia/Shanghai");
30
+ conf.setDb("override_db");
31
+ const dsn = (0, utils_1.getDsn)(conf);
32
+ expect(dsn.username).toBe("admin");
33
+ expect(dsn.password).toBe("secret");
34
+ expect(dsn.database).toBe("override_db");
35
+ expect(dsn.params.get("token")).toBe("token-1");
36
+ expect(dsn.params.get("bearer_token")).toBe("bearer-1");
37
+ expect(dsn.params.get("timezone")).toBe("Asia/Shanghai");
38
+ });
39
+ });
@@ -8,7 +8,7 @@ const constant_1 = require("../../src/tmq/constant");
8
8
  const wsTmq_1 = require("../../src/tmq/wsTmq");
9
9
  const utils_1 = require("../utils");
10
10
  const log_1 = require("../../src/common/log");
11
- let dsn = "ws://root:taosdata@localhost:6041";
11
+ let dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041`;
12
12
  let tags = ["California.SanFrancisco", 3];
13
13
  let multi = [
14
14
  [1709183268567, 1709183268568, 1709183268569],
@@ -18,8 +18,8 @@ let multi = [
18
18
  ];
19
19
  let configMap = new Map([
20
20
  [constant_1.TMQConstants.GROUP_ID, "gId"],
21
- [constant_1.TMQConstants.CONNECT_USER, "root"],
22
- [constant_1.TMQConstants.CONNECT_PASS, "taosdata"],
21
+ [constant_1.TMQConstants.CONNECT_USER, (0, utils_1.testUsername)()],
22
+ [constant_1.TMQConstants.CONNECT_PASS, (0, utils_1.testPassword)()],
23
23
  [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
24
24
  [constant_1.TMQConstants.CLIENT_ID, "test_tmq_client"],
25
25
  [constant_1.TMQConstants.WS_URL, "ws://localhost:6041"],
@@ -33,7 +33,7 @@ let createTopic = `create topic if not exists ${topics[0]} as select * from ${db
33
33
  let stmtIds = [];
34
34
  (0, log_1.setLevel)("debug");
35
35
  async function connect() {
36
- let dsn = "ws://root:taosdata@localhost:6041";
36
+ let dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041`;
37
37
  let wsSql = null;
38
38
  let conf = new config_1.WSConfig(dsn);
39
39
  conf.setDb(db);
@@ -43,7 +43,7 @@ async function connect() {
43
43
  await wsSql.close();
44
44
  }
45
45
  async function stmtConnect() {
46
- let dsn = "ws://root:taosdata@localhost:6041";
46
+ let dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041`;
47
47
  let wsConf = new config_1.WSConfig(dsn, "100.100.100.100");
48
48
  wsConf.setDb(db);
49
49
  // let connector = WsStmtConnect.NewConnector(wsConf)
@@ -139,8 +139,8 @@ describe("TDWebSocket.WsSql()", () => {
139
139
  });
140
140
  afterAll(async () => {
141
141
  let conf = new config_1.WSConfig(dsn);
142
- conf.setUser("root");
143
- conf.setPwd("taosdata");
142
+ conf.setUser((0, utils_1.testUsername)());
143
+ conf.setPwd((0, utils_1.testPassword)());
144
144
  let wsSql = await wsSql_1.WsSql.open(conf);
145
145
  await wsSql.exec(`drop topic if exists ${topics[0]};`);
146
146
  await wsSql.exec(`drop database if exists ${db};`);
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wsConnector.failover.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsConnector.failover.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/wsConnector.failover.test.ts"],"names":[],"mappings":""}