@tdengine/websocket 3.2.3 → 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 (224) hide show
  1. package/lib/package.json +1 -1
  2. package/lib/src/client/wsClient.d.ts +23 -7
  3. package/lib/src/client/wsClient.d.ts.map +1 -1
  4. package/lib/src/client/wsClient.js +154 -139
  5. package/lib/src/client/wsConnector.d.ts +55 -9
  6. package/lib/src/client/wsConnector.d.ts.map +1 -1
  7. package/lib/src/client/wsConnector.js +519 -100
  8. package/lib/src/client/wsConnectorPool.d.ts +5 -1
  9. package/lib/src/client/wsConnectorPool.d.ts.map +1 -1
  10. package/lib/src/client/wsConnectorPool.js +61 -43
  11. package/lib/src/client/wsEventCallback.d.ts +3 -0
  12. package/lib/src/client/wsEventCallback.d.ts.map +1 -1
  13. package/lib/src/client/wsEventCallback.js +67 -8
  14. package/lib/src/common/addressConnectionTracker.d.ts +11 -0
  15. package/lib/src/common/addressConnectionTracker.d.ts.map +1 -0
  16. package/lib/src/common/addressConnectionTracker.js +53 -0
  17. package/lib/src/common/dsn.d.ts +14 -2
  18. package/lib/src/common/dsn.d.ts.map +1 -1
  19. package/lib/src/common/dsn.js +91 -22
  20. package/lib/src/common/taosResult.d.ts.map +1 -1
  21. package/lib/src/common/taosResult.js +0 -5
  22. package/lib/src/common/urlParser.d.ts +32 -0
  23. package/lib/src/common/urlParser.d.ts.map +1 -0
  24. package/lib/src/common/urlParser.js +201 -0
  25. package/lib/src/common/utils.d.ts +2 -1
  26. package/lib/src/common/utils.d.ts.map +1 -1
  27. package/lib/src/common/utils.js +35 -34
  28. package/lib/src/sql/wsSql.js +2 -2
  29. package/lib/src/stmt/FieldBindParams.d.ts.map +1 -1
  30. package/lib/src/stmt/wsColumnInfo.d.ts.map +1 -1
  31. package/lib/src/stmt/wsParams1.d.ts.map +1 -1
  32. package/lib/src/stmt/wsParams1.js +26 -26
  33. package/lib/src/stmt/wsParams2.d.ts.map +1 -1
  34. package/lib/src/stmt/wsParams2.js +0 -3
  35. package/lib/src/stmt/wsParamsBase.d.ts.map +1 -1
  36. package/lib/src/stmt/wsProto.d.ts.map +1 -1
  37. package/lib/src/stmt/wsProto.js +16 -16
  38. package/lib/src/stmt/wsStmt1.d.ts.map +1 -1
  39. package/lib/src/stmt/wsStmt2.d.ts +12 -4
  40. package/lib/src/stmt/wsStmt2.d.ts.map +1 -1
  41. package/lib/src/stmt/wsStmt2.js +182 -64
  42. package/lib/src/stmt/wsTableInfo.d.ts.map +1 -1
  43. package/lib/src/tmq/config.d.ts +3 -2
  44. package/lib/src/tmq/config.d.ts.map +1 -1
  45. package/lib/src/tmq/config.js +15 -15
  46. package/lib/src/tmq/wsTmq.d.ts +4 -1
  47. package/lib/src/tmq/wsTmq.d.ts.map +1 -1
  48. package/lib/src/tmq/wsTmq.js +50 -27
  49. package/lib/test/bulkPulling/a.test.d.ts +2 -0
  50. package/lib/test/bulkPulling/a.test.d.ts.map +1 -0
  51. package/lib/test/bulkPulling/a.test.js +166 -0
  52. package/lib/test/bulkPulling/dsn.test.js +19 -0
  53. package/lib/test/bulkPulling/retryConfig.test.js +11 -11
  54. package/lib/test/bulkPulling/sql.failover.test.d.ts +2 -0
  55. package/lib/test/bulkPulling/sql.failover.test.d.ts.map +1 -0
  56. package/lib/test/bulkPulling/sql.failover.test.js +338 -0
  57. package/lib/test/bulkPulling/stmt2.failover.test.d.ts +2 -0
  58. package/lib/test/bulkPulling/stmt2.failover.test.d.ts.map +1 -0
  59. package/lib/test/bulkPulling/stmt2.failover.test.js +313 -0
  60. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts +2 -0
  61. package/lib/test/bulkPulling/stmt2.init.failover.test.d.ts.map +1 -0
  62. package/lib/test/bulkPulling/stmt2.init.failover.test.js +50 -0
  63. package/lib/test/bulkPulling/tmq.failover.test.d.ts +2 -0
  64. package/lib/test/bulkPulling/tmq.failover.test.d.ts.map +1 -0
  65. package/lib/test/bulkPulling/tmq.failover.test.js +404 -0
  66. package/lib/test/bulkPulling/urlParser.test.d.ts +2 -0
  67. package/lib/test/bulkPulling/urlParser.test.d.ts.map +1 -0
  68. package/lib/test/bulkPulling/urlParser.test.js +452 -0
  69. package/lib/test/bulkPulling/wsClient.reconnect.integration.test.js +2 -2
  70. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts +2 -0
  71. package/lib/test/bulkPulling/wsClient.recovery.test.d.ts.map +1 -0
  72. package/lib/test/bulkPulling/wsClient.recovery.test.js +104 -0
  73. package/lib/test/bulkPulling/wsConfig.dsn.test.js +2 -0
  74. package/lib/test/bulkPulling/wsConnector.failover.test.js +396 -27
  75. package/lib/test/bulkPulling/wsConnectorPool.key.test.js +12 -10
  76. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts +2 -0
  77. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.d.ts.map +1 -0
  78. package/lib/test/bulkPulling/wsConnectorPool.keyAuth.test.js +28 -0
  79. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts +2 -0
  80. package/lib/test/bulkPulling/wsProxy.failover.integration.test.d.ts.map +1 -0
  81. package/lib/test/bulkPulling/wsProxy.failover.integration.test.js +120 -0
  82. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts +2 -0
  83. package/lib/test/bulkPulling/wsProxy.failover.test.d.ts.map +1 -0
  84. package/lib/test/bulkPulling/wsProxy.failover.test.js +465 -0
  85. package/lib/test/client/wsClient.recovery.test.d.ts +2 -0
  86. package/lib/test/client/wsClient.recovery.test.d.ts.map +1 -0
  87. package/lib/test/client/wsClient.recovery.test.js +122 -0
  88. package/lib/test/client/wsConnectPool.test.d.ts +2 -0
  89. package/lib/test/client/wsConnectPool.test.d.ts.map +1 -0
  90. package/lib/test/client/wsConnectPool.test.js +147 -0
  91. package/lib/test/client/wsConnector.failover.test.d.ts +2 -0
  92. package/lib/test/client/wsConnector.failover.test.d.ts.map +1 -0
  93. package/lib/test/client/wsConnector.failover.test.js +681 -0
  94. package/lib/test/client/wsConnector.leastConnections.test.d.ts +2 -0
  95. package/lib/test/client/wsConnector.leastConnections.test.d.ts.map +1 -0
  96. package/lib/test/client/wsConnector.leastConnections.test.js +71 -0
  97. package/lib/test/client/wsConnectorPool.key.test.d.ts +2 -0
  98. package/lib/test/client/wsConnectorPool.key.test.d.ts.map +1 -0
  99. package/lib/test/client/wsConnectorPool.key.test.js +127 -0
  100. package/lib/test/client/wsEventCallback.test.d.ts +2 -0
  101. package/lib/test/client/wsEventCallback.test.d.ts.map +1 -0
  102. package/lib/test/client/wsEventCallback.test.js +98 -0
  103. package/lib/test/common/addressConnectionTracker.test.d.ts +2 -0
  104. package/lib/test/common/addressConnectionTracker.test.d.ts.map +1 -0
  105. package/lib/test/common/addressConnectionTracker.test.js +74 -0
  106. package/lib/test/common/dsn.test.d.ts +2 -0
  107. package/lib/test/common/dsn.test.d.ts.map +1 -0
  108. package/lib/test/common/dsn.test.js +406 -0
  109. package/lib/test/common/log.test.d.ts +2 -0
  110. package/lib/test/common/log.test.d.ts.map +1 -0
  111. package/lib/test/common/log.test.js +54 -0
  112. package/lib/test/common/utils.test.d.ts +2 -0
  113. package/lib/test/common/utils.test.d.ts.map +1 -0
  114. package/lib/test/common/utils.test.js +13 -0
  115. package/lib/test/common/wsConfig.dsn.test.d.ts +2 -0
  116. package/lib/test/common/wsConfig.dsn.test.d.ts.map +1 -0
  117. package/lib/test/common/wsConfig.dsn.test.js +39 -0
  118. package/lib/test/helpers/utils.d.ts +27 -0
  119. package/lib/test/helpers/utils.d.ts.map +1 -0
  120. package/lib/test/helpers/utils.js +341 -0
  121. package/lib/test/helpers/wsFailoverProxy.d.ts +109 -0
  122. package/lib/test/helpers/wsFailoverProxy.d.ts.map +1 -0
  123. package/lib/test/helpers/wsFailoverProxy.js +420 -0
  124. package/lib/test/helpers/wsProxy.d.ts +110 -0
  125. package/lib/test/helpers/wsProxy.d.ts.map +1 -0
  126. package/lib/test/helpers/wsProxy.js +429 -0
  127. package/lib/test/sql/core/decimal.test.d.ts +2 -0
  128. package/lib/test/sql/core/decimal.test.d.ts.map +1 -0
  129. package/lib/test/sql/core/decimal.test.js +153 -0
  130. package/lib/test/sql/core/queryTables.test.d.ts +2 -0
  131. package/lib/test/sql/core/queryTables.test.d.ts.map +1 -0
  132. package/lib/test/sql/core/queryTables.test.js +506 -0
  133. package/lib/test/sql/core/schemaless.test.d.ts +2 -0
  134. package/lib/test/sql/core/schemaless.test.d.ts.map +1 -0
  135. package/lib/test/sql/core/schemaless.test.js +102 -0
  136. package/lib/test/sql/core/sql.test.d.ts +2 -0
  137. package/lib/test/sql/core/sql.test.d.ts.map +1 -0
  138. package/lib/test/sql/core/sql.test.js +324 -0
  139. package/lib/test/sql/decimal.test.d.ts +2 -0
  140. package/lib/test/sql/decimal.test.d.ts.map +1 -0
  141. package/lib/test/sql/decimal.test.js +153 -0
  142. package/lib/test/sql/failover/sql.failover.test.d.ts +2 -0
  143. package/lib/test/sql/failover/sql.failover.test.d.ts.map +1 -0
  144. package/lib/test/sql/failover/sql.failover.test.js +341 -0
  145. package/lib/test/sql/queryTables.test.d.ts +2 -0
  146. package/lib/test/sql/queryTables.test.d.ts.map +1 -0
  147. package/lib/test/sql/queryTables.test.js +506 -0
  148. package/lib/test/sql/schemaless.test.d.ts +2 -0
  149. package/lib/test/sql/schemaless.test.d.ts.map +1 -0
  150. package/lib/test/sql/schemaless.test.js +102 -0
  151. package/lib/test/sql/sql.failover.test.d.ts +2 -0
  152. package/lib/test/sql/sql.failover.test.d.ts.map +1 -0
  153. package/lib/test/sql/sql.failover.test.js +341 -0
  154. package/lib/test/sql/sql.test.d.ts +2 -0
  155. package/lib/test/sql/sql.test.d.ts.map +1 -0
  156. package/lib/test/sql/sql.test.js +324 -0
  157. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts +2 -0
  158. package/lib/test/stmt/failover/stmt2.failover.mock.test.d.ts.map +1 -0
  159. package/lib/test/stmt/failover/stmt2.failover.mock.test.js +341 -0
  160. package/lib/test/stmt/failover/stmt2.failover.test.d.ts +2 -0
  161. package/lib/test/stmt/failover/stmt2.failover.test.d.ts.map +1 -0
  162. package/lib/test/stmt/failover/stmt2.failover.test.js +384 -0
  163. package/lib/test/stmt/stmt1.func.test.d.ts +2 -0
  164. package/lib/test/stmt/stmt1.func.test.d.ts.map +1 -0
  165. package/lib/test/stmt/stmt1.func.test.js +418 -0
  166. package/lib/test/stmt/stmt1.type.test.d.ts +2 -0
  167. package/lib/test/stmt/stmt1.type.test.d.ts.map +1 -0
  168. package/lib/test/stmt/stmt1.type.test.js +399 -0
  169. package/lib/test/stmt/stmt2.failover.mock.test.d.ts +2 -0
  170. package/lib/test/stmt/stmt2.failover.mock.test.d.ts.map +1 -0
  171. package/lib/test/stmt/stmt2.failover.mock.test.js +341 -0
  172. package/lib/test/stmt/stmt2.failover.test.d.ts +2 -0
  173. package/lib/test/stmt/stmt2.failover.test.d.ts.map +1 -0
  174. package/lib/test/stmt/stmt2.failover.test.js +384 -0
  175. package/lib/test/stmt/stmt2.func.test.d.ts +2 -0
  176. package/lib/test/stmt/stmt2.func.test.d.ts.map +1 -0
  177. package/lib/test/stmt/stmt2.func.test.js +537 -0
  178. package/lib/test/stmt/stmt2.type.test.d.ts +2 -0
  179. package/lib/test/stmt/stmt2.type.test.d.ts.map +1 -0
  180. package/lib/test/stmt/stmt2.type.test.js +401 -0
  181. package/lib/test/stmt/v1/stmt1.func.test.d.ts +2 -0
  182. package/lib/test/stmt/v1/stmt1.func.test.d.ts.map +1 -0
  183. package/lib/test/stmt/v1/stmt1.func.test.js +418 -0
  184. package/lib/test/stmt/v1/stmt1.type.test.d.ts +2 -0
  185. package/lib/test/stmt/v1/stmt1.type.test.d.ts.map +1 -0
  186. package/lib/test/stmt/v1/stmt1.type.test.js +399 -0
  187. package/lib/test/stmt/v2/stmt2.func.test.d.ts +2 -0
  188. package/lib/test/stmt/v2/stmt2.func.test.d.ts.map +1 -0
  189. package/lib/test/stmt/v2/stmt2.func.test.js +537 -0
  190. package/lib/test/stmt/v2/stmt2.type.test.d.ts +2 -0
  191. package/lib/test/stmt/v2/stmt2.type.test.d.ts.map +1 -0
  192. package/lib/test/stmt/v2/stmt2.type.test.js +401 -0
  193. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts +2 -0
  194. package/lib/test/tmq/cloud/cloud.tmq.test.d.ts.map +1 -0
  195. package/lib/test/tmq/cloud/cloud.tmq.test.js +84 -0
  196. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts +2 -0
  197. package/lib/test/tmq/cloud/tmq.cloud.test.d.ts.map +1 -0
  198. package/lib/test/tmq/cloud/tmq.cloud.test.js +82 -0
  199. package/lib/test/tmq/core/tmq.config.test.d.ts +2 -0
  200. package/lib/test/tmq/core/tmq.config.test.d.ts.map +1 -0
  201. package/lib/test/tmq/core/tmq.config.test.js +83 -0
  202. package/lib/test/tmq/core/tmq.test.d.ts +2 -0
  203. package/lib/test/tmq/core/tmq.test.d.ts.map +1 -0
  204. package/lib/test/tmq/core/tmq.test.js +513 -0
  205. package/lib/test/tmq/failover/tmq.failover.test.d.ts +2 -0
  206. package/lib/test/tmq/failover/tmq.failover.test.d.ts.map +1 -0
  207. package/lib/test/tmq/failover/tmq.failover.test.js +404 -0
  208. package/lib/test/tmq/tmq.cloud.test.d.ts +2 -0
  209. package/lib/test/tmq/tmq.cloud.test.d.ts.map +1 -0
  210. package/lib/test/tmq/tmq.cloud.test.js +82 -0
  211. package/lib/test/tmq/tmq.config.test.d.ts +2 -0
  212. package/lib/test/tmq/tmq.config.test.d.ts.map +1 -0
  213. package/lib/test/tmq/tmq.config.test.js +94 -0
  214. package/lib/test/tmq/tmq.failover.test.d.ts +2 -0
  215. package/lib/test/tmq/tmq.failover.test.d.ts.map +1 -0
  216. package/lib/test/tmq/tmq.failover.test.js +404 -0
  217. package/lib/test/tmq/tmq.test.d.ts +2 -0
  218. package/lib/test/tmq/tmq.test.d.ts.map +1 -0
  219. package/lib/test/tmq/tmq.test.js +513 -0
  220. package/lib/test/unit/connectionManager.test.d.ts +2 -0
  221. package/lib/test/unit/connectionManager.test.d.ts.map +1 -0
  222. package/lib/test/unit/connectionManager.test.js +91 -0
  223. package/package.json +1 -1
  224. package/readme.md +2 -2
@@ -0,0 +1,122 @@
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
+ test("restores default information_schema during sql recovery when no db provided", async () => {
105
+ const dsn = (0, dsn_1.parse)("ws://root:taosdata@localhost:6041");
106
+ const connector = createMockConnector();
107
+ jest
108
+ .spyOn(wsConnectorPool_1.WebSocketConnectionPool.instance(), "getConnection")
109
+ .mockResolvedValue(connector);
110
+ const client = new wsClient_1.WsClient(dsn, 5000);
111
+ await client.connect();
112
+ const hookCalls = connector.setSessionRecoveryHook.mock.calls;
113
+ const hook = hookCalls[hookCalls.length - 1]?.[0];
114
+ expect(hook).toBeTruthy();
115
+ await hook();
116
+ expect(connector.sendMsgDirect).toHaveBeenCalledTimes(1);
117
+ const firstCall = connector.sendMsgDirect.mock.calls[0];
118
+ const connMsg = JSON.parse(firstCall[0]);
119
+ expect(connMsg.action).toBe("conn");
120
+ expect(connMsg.args.db).toBe("information_schema");
121
+ });
122
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wsConnectPool.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsConnectPool.test.d.ts","sourceRoot":"","sources":["../../../test/client/wsConnectPool.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const wsConnectorPool_1 = require("@src/client/wsConnectorPool");
4
+ const config_1 = require("@src/common/config");
5
+ const reqid_1 = require("@src/common/reqid");
6
+ const wsSql_1 = require("@src/sql/wsSql");
7
+ const constant_1 = require("@src/tmq/constant");
8
+ const wsTmq_1 = require("@src/tmq/wsTmq");
9
+ const utils_1 = require("@test-helpers/utils");
10
+ const log_1 = require("@src/common/log");
11
+ let dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041`;
12
+ let tags = ["California.SanFrancisco", 3];
13
+ let multi = [
14
+ [1709183268567, 1709183268568, 1709183268569],
15
+ [10.2, 10.3, 10.4],
16
+ [292, 293, 294],
17
+ [0.32, 0.33, 0.34],
18
+ ];
19
+ let configMap = new Map([
20
+ [constant_1.TMQConstants.GROUP_ID, "gId"],
21
+ [constant_1.TMQConstants.CONNECT_USER, (0, utils_1.testUsername)()],
22
+ [constant_1.TMQConstants.CONNECT_PASS, (0, utils_1.testPassword)()],
23
+ [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
24
+ [constant_1.TMQConstants.CLIENT_ID, "test_tmq_client"],
25
+ [constant_1.TMQConstants.WS_URL, "ws://localhost:6041"],
26
+ [constant_1.TMQConstants.ENABLE_AUTO_COMMIT, "true"],
27
+ [constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, "1000"],
28
+ ]);
29
+ const stable = "meters";
30
+ const db = "power_connect";
31
+ const topics = ["pwer_meters_topic"];
32
+ let createTopic = `create topic if not exists ${topics[0]} as select * from ${db}.${stable}`;
33
+ let stmtIds = [];
34
+ (0, log_1.setLevel)("debug");
35
+ async function connect() {
36
+ let dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041`;
37
+ let wsSql = null;
38
+ let conf = new config_1.WSConfig(dsn);
39
+ conf.setDb(db);
40
+ wsSql = await wsSql_1.WsSql.open(conf);
41
+ expect(wsSql.state()).toBeGreaterThan(0);
42
+ console.log(await wsSql.version());
43
+ await wsSql.close();
44
+ }
45
+ async function stmtConnect() {
46
+ let dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041`;
47
+ let wsConf = new config_1.WSConfig(dsn, "100.100.100.100");
48
+ wsConf.setDb(db);
49
+ let connector = await wsSql_1.WsSql.open(wsConf);
50
+ let stmt = (await connector.stmtInit());
51
+ let id = stmt.getStmtId();
52
+ if (id) {
53
+ stmtIds.push(id);
54
+ }
55
+ expect(stmt).toBeTruthy();
56
+ await stmt.prepare(`INSERT INTO ? USING ${stable} (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)`);
57
+ await stmt.setTableName("d1001");
58
+ await stmt.setJsonTags(tags);
59
+ let lastTs = 0;
60
+ const allp = [];
61
+ for (let i = 0; i < 10; i++) {
62
+ for (let j = 0; j < multi[0].length; j++) {
63
+ multi[0][j] = multi[0][0] + j;
64
+ lastTs = multi[0][j];
65
+ }
66
+ allp.push(stmt.jsonBind(multi));
67
+ multi[0][0] = lastTs + 1;
68
+ }
69
+ await Promise.all(allp);
70
+ await stmt.batch();
71
+ await stmt.exec();
72
+ expect(stmt.getLastAffected()).toEqual(30);
73
+ await stmt.close();
74
+ await connector.close();
75
+ }
76
+ async function tmqConnect() {
77
+ let consumer = null;
78
+ try {
79
+ consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
80
+ await consumer.subscribe(topics);
81
+ let res = await consumer.poll(100);
82
+ for (let [key, value] of res) {
83
+ console.log(key, value.getMeta());
84
+ let data = value.getData();
85
+ if (data == null || data.length == 0) {
86
+ break;
87
+ }
88
+ for (let record of data) {
89
+ console.log(record);
90
+ }
91
+ }
92
+ await consumer.commit();
93
+ let assignment = await consumer.assignment();
94
+ console.log(assignment);
95
+ if (arguments && arguments.length > 0)
96
+ await consumer.seekToBeginning(assignment);
97
+ await consumer.unsubscribe();
98
+ }
99
+ catch (e) {
100
+ console.error(e);
101
+ }
102
+ finally {
103
+ if (consumer) {
104
+ await consumer.close();
105
+ }
106
+ }
107
+ }
108
+ beforeAll(async () => {
109
+ let conf = new config_1.WSConfig(dsn);
110
+ let ws = await wsSql_1.WsSql.open(conf);
111
+ await ws.exec(`create database if not exists ${db} KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;`);
112
+ await (0, utils_1.Sleep)(100);
113
+ await ws.exec(`CREATE STABLE if not exists ${db}.${stable} (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);`);
114
+ await (0, utils_1.Sleep)(100);
115
+ await ws.exec(createTopic, reqid_1.ReqId.getReqID());
116
+ await ws.close();
117
+ });
118
+ describe("TDWebSocket.WsSql()", () => {
119
+ jest.setTimeout(60 * 1000);
120
+ test("ReqId", async () => {
121
+ const allp = [];
122
+ for (let i = 0; i < 10; i++) {
123
+ allp.push(console.log(reqid_1.ReqId.getReqID()));
124
+ }
125
+ await Promise.all(allp);
126
+ });
127
+ test("normal connect", async () => {
128
+ const allp = [];
129
+ for (let i = 0; i < 20; i++) {
130
+ allp.push(connect());
131
+ allp.push(stmtConnect());
132
+ allp.push(tmqConnect());
133
+ }
134
+ await Promise.all(allp);
135
+ console.log(stmtIds);
136
+ });
137
+ });
138
+ afterAll(async () => {
139
+ let conf = new config_1.WSConfig(dsn);
140
+ conf.setUser((0, utils_1.testUsername)());
141
+ conf.setPwd((0, utils_1.testPassword)());
142
+ let wsSql = await wsSql_1.WsSql.open(conf);
143
+ await wsSql.exec(`drop topic if exists ${topics[0]};`);
144
+ await wsSql.exec(`drop database if exists ${db};`);
145
+ await wsSql.close();
146
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
147
+ });
@@ -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/client/wsConnector.failover.test.ts"],"names":[],"mappings":""}