@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,513 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constant_1 = require("@src/tmq/constant");
4
+ const wsTmq_1 = require("@src/tmq/wsTmq");
5
+ const config_1 = require("@src/common/config");
6
+ const wsSql_1 = require("@src/sql/wsSql");
7
+ const utils_1 = require("@test-helpers/utils");
8
+ const wsConnectorPool_1 = require("@src/client/wsConnectorPool");
9
+ const log_1 = require("@src/common/log");
10
+ (0, log_1.setLevel)("debug");
11
+ const stable = "st";
12
+ const db = "ws_tmq_test";
13
+ const topics = ["topic_ws_bean"];
14
+ const tokenTopic = "topic_token_test";
15
+ let createTopic = `create topic if not exists ${topics[0]} as select * from ${db}.${stable}`;
16
+ let dropTopic = `DROP TOPIC IF EXISTS ${topics[0]};`;
17
+ let dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041`;
18
+ let tmqDsn = "ws://localhost:6041";
19
+ beforeAll(async () => {
20
+ let conf = new config_1.WSConfig(dsn);
21
+ const createDB = `create database if not exists ${db} keep 3650`;
22
+ const dropDB = `drop database if exists ${db}`;
23
+ const useDB = `use ${db}`;
24
+ const stableTags = [
25
+ true,
26
+ -1,
27
+ -2,
28
+ -3,
29
+ BigInt(-4),
30
+ 1,
31
+ 2,
32
+ 3,
33
+ BigInt(4),
34
+ parseFloat((3.1415).toFixed(5)),
35
+ parseFloat((3.14159265).toFixed(15)),
36
+ "varchar_tag_1",
37
+ "nchar_tag_1",
38
+ ];
39
+ const tableValues = [
40
+ [
41
+ BigInt(1656677710000),
42
+ 0,
43
+ -1,
44
+ -2,
45
+ BigInt(-3),
46
+ 0,
47
+ 1,
48
+ 2,
49
+ BigInt(3),
50
+ parseFloat((3.1415).toFixed(5)),
51
+ parseFloat((3.14159265).toFixed(15)),
52
+ "varchar_col_1",
53
+ "nchar_col_1",
54
+ true,
55
+ "NULL",
56
+ "POINT (4.0 8.0)",
57
+ "0x7661726332",
58
+ ],
59
+ [
60
+ BigInt(1656677720000),
61
+ -1,
62
+ -2,
63
+ -3,
64
+ BigInt(-4),
65
+ 1,
66
+ 2,
67
+ 3,
68
+ BigInt(4),
69
+ parseFloat((3.1415 * 2).toFixed(5)),
70
+ parseFloat((3.14159265 * 2).toFixed(15)),
71
+ "varchar_col_2",
72
+ "nchar_col_2",
73
+ false,
74
+ "NULL",
75
+ "POINT (3.0 5.0)",
76
+ "0x7661726333",
77
+ ],
78
+ [
79
+ BigInt(1656677730000),
80
+ -2,
81
+ -3,
82
+ -4,
83
+ BigInt(-5),
84
+ 2,
85
+ 3,
86
+ 4,
87
+ BigInt(5),
88
+ parseFloat((3.1415 * 3).toFixed(5)),
89
+ parseFloat((3.14159265 * 3).toFixed(15)),
90
+ "varchar_col_3",
91
+ "nchar_col_3",
92
+ true,
93
+ "NULL",
94
+ "LINESTRING (1.000000 1.000000, 2.000000 2.000000, 5.000000 5.000000)",
95
+ "0x7661726334",
96
+ ],
97
+ [
98
+ BigInt(1656677740000),
99
+ -3,
100
+ -4,
101
+ -5,
102
+ BigInt(-6),
103
+ 3,
104
+ 4,
105
+ 5,
106
+ BigInt(6),
107
+ parseFloat((3.1415 * 4).toFixed(5)),
108
+ parseFloat((3.14159265 * 4).toFixed(15)),
109
+ "varchar_col_4",
110
+ "nchar_col_4",
111
+ false,
112
+ "NULL",
113
+ "POLYGON ((3.000000 6.000000, 5.000000 6.000000, 5.000000 8.000000, 3.000000 8.000000, 3.000000 6.000000))",
114
+ "0x7661726335",
115
+ ],
116
+ [
117
+ BigInt(1656677750000),
118
+ -4,
119
+ -5,
120
+ -6,
121
+ BigInt(-7),
122
+ 4,
123
+ 5,
124
+ 6,
125
+ BigInt(7),
126
+ parseFloat((3.1415 * 5).toFixed(5)),
127
+ parseFloat((3.14159265 * 5).toFixed(15)),
128
+ "varchar_col_5",
129
+ "nchar_col_5",
130
+ true,
131
+ "NULL",
132
+ "POINT (7.0 9.0)",
133
+ "0x7661726335",
134
+ ],
135
+ ];
136
+ const tableCNValues = [
137
+ [
138
+ BigInt(1656677760000),
139
+ 0,
140
+ -1,
141
+ -2,
142
+ BigInt(-3),
143
+ 0,
144
+ 1,
145
+ 2,
146
+ BigInt(3),
147
+ parseFloat((3.1415).toFixed(5)),
148
+ parseFloat((3.14159265).toFixed(15)),
149
+ "varchar_列_壹",
150
+ "nchar_列_甲",
151
+ true,
152
+ "NULL",
153
+ "POINT (4.0 8.0)",
154
+ "0x7661726332",
155
+ ],
156
+ [
157
+ BigInt(1656677770000),
158
+ -1,
159
+ -2,
160
+ -3,
161
+ BigInt(-4),
162
+ 1,
163
+ 2,
164
+ 3,
165
+ BigInt(4),
166
+ parseFloat((3.1415 * 2).toFixed(5)),
167
+ parseFloat((3.14159265 * 2).toFixed(15)),
168
+ "varchar_列_贰",
169
+ "nchar_列_乙",
170
+ false,
171
+ "NULL",
172
+ "POINT (3.0 5.0)",
173
+ "0x7661726333",
174
+ ],
175
+ [
176
+ BigInt(1656677780000),
177
+ -2,
178
+ -3,
179
+ -4,
180
+ BigInt(-5),
181
+ 2,
182
+ 3,
183
+ 4,
184
+ BigInt(5),
185
+ parseFloat((3.1415 * 3).toFixed(5)),
186
+ parseFloat((3.14159265 * 3).toFixed(15)),
187
+ "varchar_列_叁",
188
+ "nchar_列_丙",
189
+ true,
190
+ "NULL",
191
+ "LINESTRING (1.000000 1.000000, 2.000000 2.000000, 5.000000 5.000000)",
192
+ "0x7661726334",
193
+ ],
194
+ [
195
+ BigInt(1656677790000),
196
+ -3,
197
+ -4,
198
+ -5,
199
+ BigInt(-6),
200
+ 3,
201
+ 4,
202
+ 5,
203
+ BigInt(6),
204
+ parseFloat((3.1415 * 4).toFixed(5)),
205
+ parseFloat((3.14159265 * 4).toFixed(15)),
206
+ "varchar_列_肆",
207
+ "nchar_列_丁",
208
+ false,
209
+ "NULL",
210
+ "POLYGON ((3.000000 6.000000, 5.000000 6.000000, 5.000000 8.000000, 3.000000 8.000000, 3.000000 6.000000))",
211
+ "0x7661726335",
212
+ ],
213
+ [
214
+ BigInt(1656677800000),
215
+ -4,
216
+ -5,
217
+ -6,
218
+ BigInt(-7),
219
+ 4,
220
+ 5,
221
+ 6,
222
+ BigInt(7),
223
+ parseFloat((3.1415 * 5).toFixed(5)),
224
+ parseFloat((3.14159265 * 5).toFixed(15)),
225
+ "varchar_列_伍",
226
+ "nchar_列_戊",
227
+ true,
228
+ "NULL",
229
+ "POINT (7.0 9.0)",
230
+ "0x7661726335",
231
+ ],
232
+ ];
233
+ let ws = await wsSql_1.WsSql.open(conf);
234
+ await ws.exec(dropTopic);
235
+ await ws.exec(dropDB);
236
+ await ws.exec(createDB);
237
+ await ws.exec(useDB);
238
+ await ws.exec((0, utils_1.createSTable)(stable));
239
+ await ws.exec(createTopic);
240
+ let insert = (0, utils_1.insertStable)(tableValues, stableTags, stable);
241
+ let insertRes = await ws.exec(insert);
242
+ insert = (0, utils_1.insertStable)(tableCNValues, stableTags, stable);
243
+ insertRes = await ws.exec(insert);
244
+ await ws.exec(`create topic if not exists ${tokenTopic} as select * from ${db}.${stable}`);
245
+ await ws.close();
246
+ });
247
+ describe("TDWebSocket.Tmq()", () => {
248
+ jest.setTimeout(20 * 1000);
249
+ let configMap = new Map([
250
+ [constant_1.TMQConstants.GROUP_ID, "gId"],
251
+ [constant_1.TMQConstants.CONNECT_USER, (0, utils_1.testUsername)()],
252
+ [constant_1.TMQConstants.CONNECT_PASS, (0, utils_1.testPassword)()],
253
+ [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
254
+ [constant_1.TMQConstants.CLIENT_ID, "test_tmq_client"],
255
+ [constant_1.TMQConstants.WS_URL, tmqDsn],
256
+ [constant_1.TMQConstants.ENABLE_AUTO_COMMIT, "true"],
257
+ [constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, "1000"],
258
+ ["session.timeout.ms", "10000"],
259
+ ["max.poll.interval.ms", "30000"],
260
+ ["msg.with.table.name", "true"],
261
+ ]);
262
+ console.log(configMap);
263
+ test("normal connect", async () => {
264
+ let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
265
+ await consumer.close();
266
+ });
267
+ test("connect error", async () => {
268
+ expect.assertions(1);
269
+ let consumer = null;
270
+ let errConfigMap = new Map([
271
+ [constant_1.TMQConstants.GROUP_ID, "test"],
272
+ [constant_1.TMQConstants.CONNECT_USER, "root"],
273
+ [constant_1.TMQConstants.CONNECT_PASS, "test"],
274
+ [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest1"],
275
+ [constant_1.TMQConstants.CLIENT_ID, "test_tmq_client"],
276
+ [constant_1.TMQConstants.WS_URL, tmqDsn],
277
+ [constant_1.TMQConstants.ENABLE_AUTO_COMMIT, "true"],
278
+ [constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, "1000"],
279
+ ["session.timeout.ms", "10000"],
280
+ ["max.poll.interval.ms", "30000"],
281
+ ["msg.with.table.name", "true"],
282
+ ]);
283
+ try {
284
+ consumer = await wsTmq_1.WsConsumer.newConsumer(errConfigMap);
285
+ await consumer.subscribe(topics);
286
+ }
287
+ catch (e) {
288
+ console.log(e);
289
+ expect([104]).toContain(e.code);
290
+ }
291
+ finally {
292
+ if (consumer) {
293
+ await consumer.close();
294
+ }
295
+ }
296
+ });
297
+ test("normal Subscribe", async () => {
298
+ let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
299
+ await consumer.subscribe(topics);
300
+ let assignment = await consumer.assignment();
301
+ console.log(assignment);
302
+ let counts = 0;
303
+ let useTime = [];
304
+ for (let i = 0; i < 5; i++) {
305
+ let startTime = new Date().getTime();
306
+ let res = await consumer.poll(500);
307
+ let currTime = new Date().getTime();
308
+ useTime.push(Math.abs(currTime - startTime));
309
+ for (let [key, value] of res) {
310
+ console.log(key, value.getMeta());
311
+ let data = value.getData();
312
+ if (data == null || data.length == 0) {
313
+ break;
314
+ }
315
+ for (let record of data) {
316
+ console.log("-----===>>", record);
317
+ }
318
+ }
319
+ }
320
+ await consumer.seekToBeginning(assignment);
321
+ for (let i = 0; i < 5; i++) {
322
+ let startTime = new Date().getTime();
323
+ let res = await consumer.poll(500);
324
+ let currTime = new Date().getTime();
325
+ useTime.push(Math.abs(currTime - startTime));
326
+ for (let [key, value] of res) {
327
+ console.log(key, value.getMeta());
328
+ let data = value.getData();
329
+ if (data == null || data.length == 0) {
330
+ break;
331
+ }
332
+ counts += data.length;
333
+ }
334
+ }
335
+ let topicArray = await consumer.subscription();
336
+ expect(topics.length).toEqual(topicArray.length);
337
+ for (let index = 0; index < topicArray.length; index++) {
338
+ expect(topics[index]).toEqual(topicArray[index]);
339
+ }
340
+ assignment = await consumer.commit();
341
+ console.log(assignment);
342
+ assignment = await consumer.committed(assignment);
343
+ assignment = await consumer.commitOffsets(assignment);
344
+ console.log(assignment);
345
+ await consumer.unsubscribe();
346
+ await consumer.close();
347
+ console.log("------------->", useTime);
348
+ console.log("------------->", counts);
349
+ expect(counts).toEqual(10);
350
+ });
351
+ test("Topic not exist", async () => {
352
+ let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
353
+ try {
354
+ await consumer.subscribe(["aaa"]);
355
+ }
356
+ catch (e) {
357
+ expect(e.message).toMatch("Topic not exist");
358
+ }
359
+ await consumer.close();
360
+ });
361
+ test("normal seek", async () => {
362
+ let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
363
+ await consumer.subscribe(topics);
364
+ let assignment = await consumer.assignment();
365
+ console.log("------START--------", assignment);
366
+ await consumer.seekToEnd(assignment);
367
+ await consumer.seekToBeginning(assignment);
368
+ await consumer.seekToEnd(assignment);
369
+ assignment = await consumer.assignment();
370
+ console.log("------END--------", assignment);
371
+ for (let i = 0; i < assignment.length; i++) {
372
+ expect(assignment[i].offset).toEqual(assignment[i].end);
373
+ }
374
+ await consumer.unsubscribe();
375
+ await consumer.close();
376
+ });
377
+ (0, utils_1.testEnterprise)("connect with token", async () => {
378
+ const conf = new config_1.WSConfig(dsn);
379
+ const wsSql = await wsSql_1.WsSql.open(conf);
380
+ await wsSql.exec("drop token if exists test_tmq_token");
381
+ const wsRows = await wsSql.query(`create token test_tmq_token from user ${(0, utils_1.testUsername)()}`);
382
+ await wsRows.next();
383
+ const token = wsRows.getData()?.[0];
384
+ expect(token).toBeTruthy();
385
+ await wsRows.close();
386
+ const tmqConf = new Map([
387
+ [constant_1.TMQConstants.WS_URL, "ws://localhost:6041"],
388
+ [constant_1.TMQConstants.CONNECT_USER, "invalid_user"],
389
+ [constant_1.TMQConstants.CONNECT_PASS, "invalid_pass"],
390
+ [constant_1.TMQConstants.CONNECT_TOKEN, token],
391
+ [constant_1.TMQConstants.GROUP_ID, "g1101"],
392
+ [constant_1.TMQConstants.CLIENT_ID, "c1101"],
393
+ [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
394
+ [constant_1.TMQConstants.ENABLE_AUTO_COMMIT, "false"],
395
+ [constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, "1000"],
396
+ ]);
397
+ const consumer = await wsTmq_1.WsConsumer.newConsumer(tmqConf);
398
+ await consumer.subscribe([tokenTopic]);
399
+ let count = 0;
400
+ for (let i = 0; i < 5; i++) {
401
+ const res = await consumer.poll(500);
402
+ for (const [, value] of res) {
403
+ const data = value.getData();
404
+ if (data == null || data.length == 0) {
405
+ break;
406
+ }
407
+ count += data.length;
408
+ }
409
+ }
410
+ expect(count).toEqual(10);
411
+ await (0, utils_1.Sleep)(3000);
412
+ await consumer.unsubscribe();
413
+ await consumer.close();
414
+ await wsSql.exec("drop token if exists test_tmq_token");
415
+ await wsSql.close();
416
+ });
417
+ (0, utils_1.testEnterprise)("connect with token url", async () => {
418
+ const conf = new config_1.WSConfig(dsn);
419
+ const wsSql = await wsSql_1.WsSql.open(conf);
420
+ await wsSql.exec("drop token if exists test_tmq_token_url");
421
+ const wsRows = await wsSql.query(`create token test_tmq_token_url from user ${(0, utils_1.testUsername)()}`);
422
+ await wsRows.next();
423
+ const token = wsRows.getData()?.[0];
424
+ expect(token).toBeTruthy();
425
+ await wsRows.close();
426
+ const tmqConf = new Map([
427
+ [constant_1.TMQConstants.WS_URL, `ws://localhost:6041?bearer_token=${token}`],
428
+ [constant_1.TMQConstants.CONNECT_USER, "invalid_user"],
429
+ [constant_1.TMQConstants.CONNECT_PASS, "invalid_pass"],
430
+ [constant_1.TMQConstants.GROUP_ID, "g1103"],
431
+ [constant_1.TMQConstants.CLIENT_ID, "c1103"],
432
+ [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
433
+ [constant_1.TMQConstants.ENABLE_AUTO_COMMIT, false],
434
+ [constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, 1000],
435
+ ]);
436
+ const consumer = await wsTmq_1.WsConsumer.newConsumer(tmqConf);
437
+ await consumer.subscribe([tokenTopic]);
438
+ let count = 0;
439
+ for (let i = 0; i < 5; i++) {
440
+ const res = await consumer.poll(500);
441
+ for (const [, value] of res) {
442
+ const data = value.getData();
443
+ if (data == null || data.length == 0) {
444
+ break;
445
+ }
446
+ count += data.length;
447
+ }
448
+ }
449
+ expect(count).toEqual(10);
450
+ await (0, utils_1.Sleep)(3000);
451
+ await consumer.unsubscribe();
452
+ await consumer.close();
453
+ await wsSql.exec("drop token if exists test_tmq_token_url");
454
+ await wsSql.close();
455
+ });
456
+ (0, utils_1.testEnterprise)("connect with invalid token", async () => {
457
+ const conf = new Map([
458
+ [constant_1.TMQConstants.GROUP_ID, "g1102"],
459
+ [constant_1.TMQConstants.CLIENT_ID, "c1102"],
460
+ [constant_1.TMQConstants.WS_URL, "ws://localhost:6041?bearer_token=invalid_token"],
461
+ ]);
462
+ await expect(wsTmq_1.WsConsumer.newConsumer(conf)).rejects.toMatchObject({
463
+ message: expect.stringMatching(/invalid token/i),
464
+ });
465
+ conf.set(constant_1.TMQConstants.WS_URL, "ws://localhost:6041");
466
+ conf.set(constant_1.TMQConstants.CONNECT_TOKEN, "invalid_token1");
467
+ await expect(wsTmq_1.WsConsumer.newConsumer(conf)).rejects.toMatchObject({
468
+ message: expect.stringMatching(/invalid token/i),
469
+ });
470
+ conf.set(constant_1.TMQConstants.WS_URL, "ws://localhost:6041?bearer_token=");
471
+ conf.delete(constant_1.TMQConstants.CONNECT_TOKEN);
472
+ await expect(wsTmq_1.WsConsumer.newConsumer(conf)).rejects.toMatchObject({
473
+ message: expect.stringMatching(/invalid url/i),
474
+ });
475
+ conf.set(constant_1.TMQConstants.WS_URL, "ws://localhost:6041");
476
+ conf.set(constant_1.TMQConstants.CONNECT_TOKEN, "");
477
+ await expect(wsTmq_1.WsConsumer.newConsumer(conf)).rejects.toMatchObject({
478
+ message: expect.stringMatching(/invalid url/i),
479
+ });
480
+ });
481
+ (0, utils_1.testNon3360)("connector version info", async () => {
482
+ const consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
483
+ await consumer.subscribe(topics);
484
+ const conf = new config_1.WSConfig("ws://localhost:6041");
485
+ conf.setUser((0, utils_1.testUsername)());
486
+ conf.setPwd((0, utils_1.testPassword)());
487
+ const wsSql = await wsSql_1.WsSql.open(conf);
488
+ await (0, utils_1.Sleep)(2000);
489
+ const wsRows = await wsSql.query("show connections");
490
+ let count = 0;
491
+ while (await wsRows.next()) {
492
+ const data = wsRows.getData();
493
+ if (Array.isArray(data) && data.some(v => typeof v === "string" && v.includes("nodejs-ws"))) {
494
+ count++;
495
+ }
496
+ }
497
+ expect(count).toBeGreaterThanOrEqual(2);
498
+ await wsRows.close();
499
+ await wsSql.close();
500
+ await consumer.unsubscribe();
501
+ await consumer.close();
502
+ });
503
+ });
504
+ afterAll(async () => {
505
+ const dropDB = `drop database if exists ${db}`;
506
+ const conf = new config_1.WSConfig(dsn);
507
+ const ws = await wsSql_1.WsSql.open(conf);
508
+ await ws.exec(dropTopic);
509
+ await ws.exec(`drop topic if exists ${tokenTopic}`);
510
+ await ws.exec(dropDB);
511
+ await ws.close();
512
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
513
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tmq.failover.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmq.failover.test.d.ts","sourceRoot":"","sources":["../../../../test/tmq/failover/tmq.failover.test.ts"],"names":[],"mappings":""}