@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,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":""}