@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,338 @@
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 wsSql_1 = require("../../src/sql/wsSql");
6
+ const utils_1 = require("../helpers/utils");
7
+ const wsProxy_1 = require("../helpers/wsProxy");
8
+ function parseBinaryAction(rawData) {
9
+ if (typeof rawData === "string" || rawData.byteLength < 24) {
10
+ return null;
11
+ }
12
+ return rawData.readBigInt64LE(16);
13
+ }
14
+ describe("sql failover", () => {
15
+ jest.setTimeout(120 * 1000);
16
+ afterEach(async () => {
17
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
18
+ jest.restoreAllMocks();
19
+ });
20
+ test("switches to next address when active proxy restarts with downtime", async () => {
21
+ let restartTriggered = false;
22
+ let proxyBHadActivity = false;
23
+ let wsSql = null;
24
+ const proxyA = await wsProxy_1.WsProxy.create({
25
+ host: "127.0.0.1",
26
+ port: 0,
27
+ onEvent: (event, control) => {
28
+ if (event.type !== "message") {
29
+ return;
30
+ }
31
+ if (event.direction !== "client_to_upstream" || !event.isBinary) {
32
+ return;
33
+ }
34
+ const action = parseBinaryAction(event.rawData);
35
+ if (action === 6n && !restartTriggered) {
36
+ restartTriggered = true;
37
+ void control.restart({
38
+ downtimeMs: 800,
39
+ reason: "trigger dual-address failover",
40
+ });
41
+ }
42
+ },
43
+ });
44
+ const proxyB = await wsProxy_1.WsProxy.create({
45
+ host: "127.0.0.1",
46
+ port: 0,
47
+ onEvent: (event) => {
48
+ if (event.type === "client_connected") {
49
+ proxyBHadActivity = true;
50
+ return;
51
+ }
52
+ if (event.type === "message" &&
53
+ event.direction === "client_to_upstream") {
54
+ proxyBHadActivity = true;
55
+ }
56
+ },
57
+ });
58
+ const randomSpy = jest.spyOn(Math, "random").mockReturnValue(0);
59
+ try {
60
+ const dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}` +
61
+ `@127.0.0.1:${proxyA.getPort()},127.0.0.1:${proxyB.getPort()}` +
62
+ `?retries=5&retry_backoff_ms=20&retry_backoff_max_ms=20`;
63
+ const conf = new config_1.WSConfig(dsn);
64
+ conf.setTimeOut(6000);
65
+ wsSql = await wsSql_1.WsSql.open(conf);
66
+ const result = await wsSql.exec("select server_version()");
67
+ expect(result).toBeTruthy();
68
+ expect(restartTriggered).toBe(true);
69
+ expect(proxyBHadActivity).toBe(true);
70
+ }
71
+ finally {
72
+ randomSpy.mockRestore();
73
+ if (wsSql) {
74
+ await wsSql.close();
75
+ }
76
+ await proxyA.stop("test cleanup");
77
+ await proxyB.stop("test cleanup");
78
+ }
79
+ });
80
+ test("reconnects to same address after single proxy hard restart", async () => {
81
+ let restartCount = 0;
82
+ let wsSql = null;
83
+ const proxy = await wsProxy_1.WsProxy.create({
84
+ host: "127.0.0.1",
85
+ port: 0,
86
+ onEvent: (event, control) => {
87
+ if (event.type !== "message") {
88
+ return;
89
+ }
90
+ if (event.direction !== "client_to_upstream" || !event.isBinary) {
91
+ return;
92
+ }
93
+ const action = parseBinaryAction(event.rawData);
94
+ if (action === 6n && restartCount === 0) {
95
+ restartCount += 1;
96
+ void control.restart({
97
+ downtimeMs: 120,
98
+ reason: "trigger single-address reconnect",
99
+ });
100
+ }
101
+ },
102
+ });
103
+ try {
104
+ const dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@127.0.0.1:${proxy.getPort()}` +
105
+ `?retries=6&retry_backoff_ms=30&retry_backoff_max_ms=60`;
106
+ const conf = new config_1.WSConfig(dsn);
107
+ conf.setTimeOut(6000);
108
+ wsSql = await wsSql_1.WsSql.open(conf);
109
+ const result = await wsSql.exec("select server_version()");
110
+ expect(result).toBeTruthy();
111
+ expect(restartCount).toBe(1);
112
+ }
113
+ finally {
114
+ if (wsSql) {
115
+ await wsSql.close();
116
+ }
117
+ await proxy.stop("test cleanup");
118
+ }
119
+ });
120
+ test("keeps all 5000 rows with single-address random proxy restarts during inserts", async () => {
121
+ const targetRows = 5000;
122
+ const baseTs = 1700000000000;
123
+ const dbName = "test_1773988174";
124
+ const tableName = "t0";
125
+ let wsSql = null;
126
+ let setupSql = null;
127
+ let cleanupSql = null;
128
+ let writePhase = false;
129
+ let restartInFlight = false;
130
+ let restartCount = 0;
131
+ let forwardedInsertFrames = 0;
132
+ const localDsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@127.0.0.1:6041`;
133
+ const setupConf = new config_1.WSConfig(localDsn);
134
+ setupConf.setTimeOut(6000);
135
+ setupSql = await wsSql_1.WsSql.open(setupConf);
136
+ try {
137
+ await setupSql.exec(`drop database if exists ${dbName}`);
138
+ await setupSql.exec(`create database if not exists ${dbName}`);
139
+ }
140
+ finally {
141
+ await setupSql.close();
142
+ setupSql = null;
143
+ }
144
+ const proxy = await wsProxy_1.WsProxy.create({
145
+ host: "127.0.0.1",
146
+ port: 0,
147
+ onEvent: (event, control) => {
148
+ if (!writePhase || restartInFlight) {
149
+ return;
150
+ }
151
+ if (event.type !== "message") {
152
+ return;
153
+ }
154
+ if (event.direction !== "client_to_upstream" || !event.isBinary) {
155
+ return;
156
+ }
157
+ const action = parseBinaryAction(event.rawData);
158
+ if (action !== 6n) {
159
+ return;
160
+ }
161
+ forwardedInsertFrames += 1;
162
+ if (Math.random() < 0.003) {
163
+ restartInFlight = true;
164
+ restartCount += 1;
165
+ const downtimeMs = 10 + Math.floor(Math.random() * 60);
166
+ void control.restart({
167
+ downtimeMs,
168
+ reason: `random restart #${restartCount}`,
169
+ }).finally(() => {
170
+ restartInFlight = false;
171
+ });
172
+ }
173
+ },
174
+ });
175
+ try {
176
+ const dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@127.0.0.1:${proxy.getPort()}` +
177
+ `?retries=30&retry_backoff_ms=5&retry_backoff_max_ms=20`;
178
+ const conf = new config_1.WSConfig(dsn);
179
+ conf.setDb(dbName);
180
+ conf.setTimeOut(10000);
181
+ wsSql = await wsSql_1.WsSql.open(conf);
182
+ await wsSql.exec(`create table ${tableName}(ts timestamp, c1 int)`);
183
+ writePhase = true;
184
+ for (let i = 0; i < targetRows; i++) {
185
+ await wsSql.exec(`insert into ${tableName} values(${baseTs + i}, ${i})`);
186
+ }
187
+ writePhase = false;
188
+ const countResult = await wsSql.exec(`select count(*) from ${tableName}`);
189
+ const countValue = countResult.getData()?.[0]?.[0];
190
+ const rowCount = typeof countValue === "bigint"
191
+ ? Number(countValue)
192
+ : Number(countValue || 0);
193
+ expect(rowCount).toBe(targetRows);
194
+ expect(forwardedInsertFrames).toBeGreaterThanOrEqual(targetRows);
195
+ expect(restartCount).toBeGreaterThan(0);
196
+ }
197
+ finally {
198
+ writePhase = false;
199
+ if (wsSql) {
200
+ await wsSql.close();
201
+ }
202
+ await proxy.stop("test cleanup");
203
+ const cleanupConf = new config_1.WSConfig(localDsn);
204
+ cleanupConf.setTimeOut(6000);
205
+ cleanupSql = await wsSql_1.WsSql.open(cleanupConf);
206
+ try {
207
+ await cleanupSql.exec(`drop database if exists ${dbName}`);
208
+ }
209
+ finally {
210
+ await cleanupSql.close();
211
+ cleanupSql = null;
212
+ }
213
+ }
214
+ }, 300 * 1000);
215
+ test("keeps all 5000 rows with three-address random proxy restarts during inserts", async () => {
216
+ const targetRows = 5000;
217
+ const baseTs = 1700010000000;
218
+ const dbName = "test_1773989170";
219
+ const tableName = "t0";
220
+ const proxyStates = new Map();
221
+ let wsSql = null;
222
+ let setupSql = null;
223
+ let cleanupSql = null;
224
+ let writePhase = false;
225
+ const localDsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@127.0.0.1:6041`;
226
+ const setupConf = new config_1.WSConfig(localDsn);
227
+ setupConf.setTimeOut(6000);
228
+ setupSql = await wsSql_1.WsSql.open(setupConf);
229
+ try {
230
+ await setupSql.exec(`drop database if exists ${dbName}`);
231
+ await setupSql.exec(`create database if not exists ${dbName}`);
232
+ }
233
+ finally {
234
+ await setupSql.close();
235
+ setupSql = null;
236
+ }
237
+ const createRandomRestartProxy = async (name) => {
238
+ proxyStates.set(name, {
239
+ forwarded: 0,
240
+ restarting: false,
241
+ restarts: 0,
242
+ });
243
+ return wsProxy_1.WsProxy.create({
244
+ host: "127.0.0.1",
245
+ port: 0,
246
+ onEvent: (event, control) => {
247
+ if (!writePhase) {
248
+ return;
249
+ }
250
+ if (event.type !== "message") {
251
+ return;
252
+ }
253
+ if (event.direction !== "client_to_upstream" || !event.isBinary) {
254
+ return;
255
+ }
256
+ const action = parseBinaryAction(event.rawData);
257
+ if (action !== 6n) {
258
+ return;
259
+ }
260
+ const state = proxyStates.get(name);
261
+ if (!state) {
262
+ return;
263
+ }
264
+ state.forwarded += 1;
265
+ if (state.restarting) {
266
+ return;
267
+ }
268
+ if (Math.random() >= 0.003) {
269
+ return;
270
+ }
271
+ state.restarting = true;
272
+ state.restarts += 1;
273
+ const downtimeMs = 80 + Math.floor(Math.random() * 120);
274
+ void control
275
+ .restart({
276
+ downtimeMs,
277
+ reason: `${name} random restart #${state.restarts}`,
278
+ })
279
+ .finally(() => {
280
+ const latestState = proxyStates.get(name);
281
+ if (latestState) {
282
+ latestState.restarting = false;
283
+ }
284
+ });
285
+ },
286
+ });
287
+ };
288
+ const proxyA = await createRandomRestartProxy("proxy_a");
289
+ const proxyB = await createRandomRestartProxy("proxy_b");
290
+ const proxyC = await createRandomRestartProxy("proxy_c");
291
+ try {
292
+ const dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}` +
293
+ `@127.0.0.1:${proxyA.getPort()},127.0.0.1:${proxyB.getPort()},127.0.0.1:${proxyC.getPort()}` +
294
+ `?retries=24&retry_backoff_ms=8&retry_backoff_max_ms=25`;
295
+ const conf = new config_1.WSConfig(dsn);
296
+ conf.setDb(dbName);
297
+ conf.setTimeOut(10000);
298
+ wsSql = await wsSql_1.WsSql.open(conf);
299
+ await wsSql.exec(`create table ${tableName}(ts timestamp, c1 int)`);
300
+ writePhase = true;
301
+ for (let i = 0; i < targetRows; i++) {
302
+ await wsSql.exec(`insert into ${tableName} values(${baseTs + i}, ${i})`);
303
+ }
304
+ writePhase = false;
305
+ const countResult = await wsSql.exec(`select count(*) from ${tableName}`);
306
+ const countValue = countResult.getData()?.[0]?.[0];
307
+ const rowCount = typeof countValue === "bigint"
308
+ ? Number(countValue)
309
+ : Number(countValue || 0);
310
+ const totalForwarded = Array.from(proxyStates.values()).reduce((sum, state) => sum + state.forwarded, 0);
311
+ const totalRestarts = Array.from(proxyStates.values()).reduce((sum, state) => sum + state.restarts, 0);
312
+ expect(rowCount).toBe(targetRows);
313
+ expect(totalForwarded).toBeGreaterThanOrEqual(targetRows);
314
+ expect(totalRestarts).toBeGreaterThan(0);
315
+ }
316
+ finally {
317
+ writePhase = false;
318
+ if (wsSql) {
319
+ await wsSql.close();
320
+ }
321
+ await Promise.all([
322
+ proxyA.stop("test cleanup"),
323
+ proxyB.stop("test cleanup"),
324
+ proxyC.stop("test cleanup"),
325
+ ]);
326
+ const cleanupConf = new config_1.WSConfig(localDsn);
327
+ cleanupConf.setTimeOut(6000);
328
+ cleanupSql = await wsSql_1.WsSql.open(cleanupConf);
329
+ try {
330
+ await cleanupSql.exec(`drop database if exists ${dbName}`);
331
+ }
332
+ finally {
333
+ await cleanupSql.close();
334
+ cleanupSql = null;
335
+ }
336
+ }
337
+ }, 300 * 1000);
338
+ });
@@ -5,19 +5,20 @@ const config_1 = require("../../src/common/config");
5
5
  const wsSql_1 = require("../../src/sql/wsSql");
6
6
  const utils_1 = require("../utils");
7
7
  const log_1 = require("../../src/common/log");
8
- let dns = "ws://localhost:6041";
8
+ let dsn = "ws://localhost:6041";
9
9
  let password1 = "Ab1!@#$%,.:?<>;~";
10
10
  let password2 = "Bc%^&*()-_+=[]{}";
11
11
  (0, log_1.setLevel)("debug");
12
12
  beforeAll(async () => {
13
- let conf = new config_1.WSConfig(dns);
14
- conf.setUser("root");
15
- conf.setPwd("taosdata");
13
+ let conf = new config_1.WSConfig(dsn);
14
+ conf.setUser((0, utils_1.testUsername)());
15
+ conf.setPwd((0, utils_1.testPassword)());
16
16
  let wsSql = await wsSql_1.WsSql.open(conf);
17
17
  await wsSql.exec("drop database if exists sql_test");
18
18
  await wsSql.exec("drop database if exists sql_create");
19
- await wsSql.exec(`CREATE USER user1 PASS '${password1}'`);
20
- await wsSql.exec(`CREATE USER user2 PASS '${password2}'`);
19
+ await wsSql.exec(`create user user1 pass '${password1}'`);
20
+ await wsSql.exec(`create user user2 pass '${password2}'`);
21
+ await wsSql.exec("create user token_user pass 'token_pass_1'");
21
22
  await wsSql.exec("create database if not exists sql_test KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;");
22
23
  await (0, utils_1.Sleep)(100);
23
24
  await wsSql.exec("use sql_test");
@@ -29,9 +30,9 @@ describe("TDWebSocket.WsSql()", () => {
29
30
  test("normal connect", async () => {
30
31
  let wsSql = null;
31
32
  let conf = new config_1.WSConfig("");
32
- conf.setUrl(dns);
33
- conf.setUser("root");
34
- conf.setPwd("taosdata");
33
+ conf.setUrl(dsn);
34
+ conf.setUser((0, utils_1.testUsername)());
35
+ conf.setPwd((0, utils_1.testPassword)());
35
36
  conf.setDb("sql_test");
36
37
  conf.setTimezone("America/New_York");
37
38
  conf.setTimeOut(6000);
@@ -48,7 +49,7 @@ describe("TDWebSocket.WsSql()", () => {
48
49
  });
49
50
  test("special characters connect1", async () => {
50
51
  let wsSql = null;
51
- let conf = new config_1.WSConfig(dns);
52
+ let conf = new config_1.WSConfig(dsn);
52
53
  conf.setUser("user1");
53
54
  conf.setPwd(password1);
54
55
  wsSql = await wsSql_1.WsSql.open(conf);
@@ -60,7 +61,7 @@ describe("TDWebSocket.WsSql()", () => {
60
61
  });
61
62
  test("special characters connect2", async () => {
62
63
  let wsSql = null;
63
- let conf = new config_1.WSConfig(dns);
64
+ let conf = new config_1.WSConfig(dsn);
64
65
  conf.setUser("user2");
65
66
  conf.setPwd(password2);
66
67
  wsSql = await wsSql_1.WsSql.open(conf);
@@ -74,9 +75,9 @@ describe("TDWebSocket.WsSql()", () => {
74
75
  expect.assertions(1);
75
76
  let wsSql = null;
76
77
  try {
77
- let conf = new config_1.WSConfig(dns);
78
- conf.setUser("root");
79
- conf.setPwd("taosdata");
78
+ let conf = new config_1.WSConfig(dsn);
79
+ conf.setUser((0, utils_1.testUsername)());
80
+ conf.setPwd((0, utils_1.testPassword)());
80
81
  conf.setDb("jest");
81
82
  wsSql = await wsSql_1.WsSql.open(conf);
82
83
  }
@@ -91,7 +92,7 @@ describe("TDWebSocket.WsSql()", () => {
91
92
  }
92
93
  });
93
94
  test("connect url", async () => {
94
- let url = "ws://root:taosdata@localhost:6041/information_schema?timezone=Asia/Shanghai";
95
+ let url = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041/information_schema?timezone=Asia/Shanghai`;
95
96
  let conf = new config_1.WSConfig(url);
96
97
  let wsSql = await wsSql_1.WsSql.open(conf);
97
98
  let version = await wsSql.version();
@@ -107,9 +108,9 @@ describe("TDWebSocket.WsSql()", () => {
107
108
  await wsSql.close();
108
109
  });
109
110
  test("get taosc version", async () => {
110
- let conf = new config_1.WSConfig(dns);
111
- conf.setUser("root");
112
- conf.setPwd("taosdata");
111
+ let conf = new config_1.WSConfig(dsn);
112
+ conf.setUser((0, utils_1.testUsername)());
113
+ conf.setPwd((0, utils_1.testPassword)());
113
114
  let wsSql = await wsSql_1.WsSql.open(conf);
114
115
  let version = await wsSql.version();
115
116
  await wsSql.close();
@@ -117,9 +118,9 @@ describe("TDWebSocket.WsSql()", () => {
117
118
  expect(version).toBeTruthy();
118
119
  });
119
120
  test("show databases", async () => {
120
- let conf = new config_1.WSConfig(dns);
121
- conf.setUser("root");
122
- conf.setPwd("taosdata");
121
+ let conf = new config_1.WSConfig(dsn);
122
+ conf.setUser((0, utils_1.testUsername)());
123
+ conf.setPwd((0, utils_1.testPassword)());
123
124
  let wsSql = await wsSql_1.WsSql.open(conf);
124
125
  let taosResult = await wsSql.exec("show databases");
125
126
  await wsSql.close();
@@ -127,9 +128,9 @@ describe("TDWebSocket.WsSql()", () => {
127
128
  expect(taosResult).toBeTruthy();
128
129
  });
129
130
  test("create databases", async () => {
130
- let conf = new config_1.WSConfig(dns);
131
- conf.setUser("root");
132
- conf.setPwd("taosdata");
131
+ let conf = new config_1.WSConfig(dsn);
132
+ conf.setUser((0, utils_1.testUsername)());
133
+ conf.setPwd((0, utils_1.testPassword)());
133
134
  let wsSql = await wsSql_1.WsSql.open(conf);
134
135
  let taosResult = await wsSql.exec("create database if not exists sql_create KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;");
135
136
  await wsSql.close();
@@ -137,9 +138,9 @@ describe("TDWebSocket.WsSql()", () => {
137
138
  expect(taosResult).toBeTruthy();
138
139
  });
139
140
  test("create stable", async () => {
140
- let conf = new config_1.WSConfig(dns);
141
- conf.setUser("root");
142
- conf.setPwd("taosdata");
141
+ let conf = new config_1.WSConfig(dsn);
142
+ conf.setUser((0, utils_1.testUsername)());
143
+ conf.setPwd((0, utils_1.testPassword)());
143
144
  let wsSql = await wsSql_1.WsSql.open(conf);
144
145
  let taosResult = await wsSql.exec("use sql_test");
145
146
  console.log(taosResult);
@@ -150,9 +151,9 @@ describe("TDWebSocket.WsSql()", () => {
150
151
  expect(taosResult).toBeTruthy();
151
152
  });
152
153
  test("insert recoder", async () => {
153
- let conf = new config_1.WSConfig(dns);
154
- conf.setUser("root");
155
- conf.setPwd("taosdata");
154
+ let conf = new config_1.WSConfig(dsn);
155
+ conf.setUser((0, utils_1.testUsername)());
156
+ conf.setPwd((0, utils_1.testPassword)());
156
157
  let wsSql = await wsSql_1.WsSql.open(conf);
157
158
  let taosResult = await wsSql.exec("use sql_test");
158
159
  console.log(taosResult);
@@ -165,9 +166,9 @@ describe("TDWebSocket.WsSql()", () => {
165
166
  await wsSql.close();
166
167
  });
167
168
  test("query sql", async () => {
168
- let conf = new config_1.WSConfig(dns);
169
- conf.setUser("root");
170
- conf.setPwd("taosdata");
169
+ let conf = new config_1.WSConfig(dsn);
170
+ conf.setUser((0, utils_1.testUsername)());
171
+ conf.setPwd((0, utils_1.testPassword)());
171
172
  let wsSql = await wsSql_1.WsSql.open(conf);
172
173
  let taosResult = await wsSql.exec("use sql_test");
173
174
  console.log(taosResult);
@@ -187,9 +188,9 @@ describe("TDWebSocket.WsSql()", () => {
187
188
  await wsSql.close();
188
189
  });
189
190
  test("query sql no getdata", async () => {
190
- let conf = new config_1.WSConfig(dns);
191
- conf.setUser("root");
192
- conf.setPwd("taosdata");
191
+ let conf = new config_1.WSConfig(dsn);
192
+ conf.setUser((0, utils_1.testUsername)());
193
+ conf.setPwd((0, utils_1.testPassword)());
193
194
  let wsSql = await wsSql_1.WsSql.open(conf);
194
195
  let taosResult = await wsSql.exec("use sql_test");
195
196
  console.log(taosResult);
@@ -199,9 +200,9 @@ describe("TDWebSocket.WsSql()", () => {
199
200
  await wsSql.close();
200
201
  });
201
202
  test("timestamp order check", async () => {
202
- const conf = new config_1.WSConfig(dns);
203
- conf.setUser("root");
204
- conf.setPwd("taosdata");
203
+ const conf = new config_1.WSConfig(dsn);
204
+ conf.setUser((0, utils_1.testUsername)());
205
+ conf.setPwd((0, utils_1.testPassword)());
205
206
  const wsSql = await wsSql_1.WsSql.open(conf);
206
207
  await wsSql.exec("use sql_test");
207
208
  await wsSql.exec("drop table if exists t_order");
@@ -237,16 +238,87 @@ describe("TDWebSocket.WsSql()", () => {
237
238
  expect(actualRowsDesc).toEqual(expectRowsDesc);
238
239
  await wsSql.close();
239
240
  });
241
+ (0, utils_1.testEnterprise)("connect with token", async () => {
242
+ const conf = new config_1.WSConfig(dsn);
243
+ conf.setUser((0, utils_1.testUsername)());
244
+ conf.setPwd((0, utils_1.testPassword)());
245
+ const wsSql = await wsSql_1.WsSql.open(conf);
246
+ const wsRows = await wsSql.query("create token test_bearer_token from user token_user");
247
+ await wsRows.next();
248
+ const token = wsRows.getData()?.[0];
249
+ expect(token).toBeTruthy();
250
+ await wsRows.close();
251
+ await wsSql.close();
252
+ const assertServerVersionWithConfig = async (config) => {
253
+ const client = await wsSql_1.WsSql.open(config);
254
+ const rows = await client.query("select server_version()");
255
+ await rows.next();
256
+ const version = rows.getData()?.[0];
257
+ expect(version).toBeTruthy();
258
+ await rows.close();
259
+ await client.close();
260
+ };
261
+ const conf1 = new config_1.WSConfig(dsn);
262
+ conf1.setBearerToken(token);
263
+ await assertServerVersionWithConfig(conf1);
264
+ const conf2 = new config_1.WSConfig("ws://localhost:6041?bearer_token=" + token);
265
+ await assertServerVersionWithConfig(conf2);
266
+ });
267
+ (0, utils_1.testEnterprise)("connect with invalid token", async () => {
268
+ let conf = new config_1.WSConfig("ws://localhost:6041?bearer_token=invalid_token");
269
+ await expect(wsSql_1.WsSql.open(conf)).rejects.toMatchObject({
270
+ message: expect.stringMatching(/invalid token/i),
271
+ });
272
+ conf = new config_1.WSConfig("ws://localhost:6041");
273
+ conf.setBearerToken("invalid_token1");
274
+ await expect(wsSql_1.WsSql.open(conf)).rejects.toMatchObject({
275
+ message: expect.stringMatching(/invalid token/i),
276
+ });
277
+ conf = new config_1.WSConfig("ws://localhost:6041");
278
+ conf.setBearerToken(" ");
279
+ await expect(wsSql_1.WsSql.open(conf)).rejects.toMatchObject({
280
+ message: expect.stringMatching(/invalid token/i),
281
+ });
282
+ conf = new config_1.WSConfig("ws://localhost:6041?bearer_token=");
283
+ await expect(wsSql_1.WsSql.open(conf)).rejects.toMatchObject({
284
+ message: expect.stringMatching(/invalid url/i),
285
+ });
286
+ conf = new config_1.WSConfig("ws://localhost:6041");
287
+ conf.setBearerToken("");
288
+ await expect(wsSql_1.WsSql.open(conf)).rejects.toMatchObject({
289
+ message: expect.stringMatching(/invalid url/i),
290
+ });
291
+ });
292
+ (0, utils_1.testNon3360)("connector version info", async () => {
293
+ const conf = new config_1.WSConfig(dsn);
294
+ conf.setUser((0, utils_1.testUsername)());
295
+ conf.setPwd((0, utils_1.testPassword)());
296
+ const wsSql = await wsSql_1.WsSql.open(conf);
297
+ await (0, utils_1.Sleep)(2000);
298
+ const wsRows = await wsSql.query("show connections");
299
+ let hasNodejsWs = false;
300
+ while (await wsRows.next()) {
301
+ const data = wsRows.getData();
302
+ if (Array.isArray(data) && data.some(v => typeof v === "string" && v.includes("nodejs-ws"))) {
303
+ hasNodejsWs = true;
304
+ break;
305
+ }
306
+ }
307
+ expect(hasNodejsWs).toBe(true);
308
+ await wsRows.close();
309
+ await wsSql.close();
310
+ });
240
311
  });
241
312
  afterAll(async () => {
242
- let conf = new config_1.WSConfig(dns);
243
- conf.setUser("root");
244
- conf.setPwd("taosdata");
313
+ let conf = new config_1.WSConfig(dsn);
314
+ conf.setUser((0, utils_1.testUsername)());
315
+ conf.setPwd((0, utils_1.testPassword)());
245
316
  let wsSql = await wsSql_1.WsSql.open(conf);
246
317
  await wsSql.exec("drop database sql_test");
247
318
  await wsSql.exec("drop database sql_create");
248
- await wsSql.exec("DROP USER user1;");
249
- await wsSql.exec("DROP USER user2;");
319
+ await wsSql.exec("drop user user1");
320
+ await wsSql.exec("drop user user2");
321
+ await wsSql.exec("drop user token_user");
250
322
  await wsSql.close();
251
323
  wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
252
324
  });