@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
@@ -5,12 +5,13 @@ const config_1 = require("../../src/common/config");
5
5
  const log_1 = require("../../src/common/log");
6
6
  const wsSql_1 = require("../../src/sql/wsSql");
7
7
  const wsStmt1_1 = require("../../src/stmt/wsStmt1");
8
+ const utils_1 = require("../utils");
8
9
  let dns = "ws://localhost:6041";
9
10
  (0, log_1.setLevel)("debug");
10
11
  beforeAll(async () => {
11
12
  let conf = new config_1.WSConfig(dns);
12
- conf.setUser("root");
13
- conf.setPwd("taosdata");
13
+ conf.setUser((0, utils_1.testUsername)());
14
+ conf.setPwd((0, utils_1.testPassword)());
14
15
  let wsSql = await wsSql_1.WsSql.open(conf);
15
16
  await wsSql.exec("drop database if exists power_func_stmt1;");
16
17
  await wsSql.exec("create database if not exists power_func_stmt1 KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;");
@@ -32,8 +33,8 @@ describe("TDWebSocket.Stmt()", () => {
32
33
  ];
33
34
  test("normal connect", async () => {
34
35
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
35
- conf.setUser("root");
36
- conf.setPwd("taosdata");
36
+ conf.setUser((0, utils_1.testUsername)());
37
+ conf.setPwd((0, utils_1.testPassword)());
37
38
  conf.setDb("power_func_stmt1");
38
39
  let connector = await wsSql_1.WsSql.open(conf);
39
40
  let stmt = await connector.stmtInit();
@@ -48,8 +49,8 @@ describe("TDWebSocket.Stmt()", () => {
48
49
  let connector = null;
49
50
  try {
50
51
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
51
- conf.setUser("root");
52
- conf.setPwd("taosdata");
52
+ conf.setUser((0, utils_1.testUsername)());
53
+ conf.setPwd((0, utils_1.testPassword)());
53
54
  conf.setDb("jest");
54
55
  connector = await wsSql_1.WsSql.open(conf);
55
56
  let stmt = await connector.stmtInit();
@@ -67,8 +68,8 @@ describe("TDWebSocket.Stmt()", () => {
67
68
  });
68
69
  test("normal Prepare", async () => {
69
70
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
70
- conf.setUser("root");
71
- conf.setPwd("taosdata");
71
+ conf.setUser((0, utils_1.testUsername)());
72
+ conf.setPwd((0, utils_1.testPassword)());
72
73
  conf.setDb("power_func_stmt1");
73
74
  let connector = await wsSql_1.WsSql.open(conf);
74
75
  let stmt = await connector.stmtInit();
@@ -86,8 +87,8 @@ describe("TDWebSocket.Stmt()", () => {
86
87
  });
87
88
  test("set tag error", async () => {
88
89
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
89
- conf.setUser("root");
90
- conf.setPwd("taosdata");
90
+ conf.setUser((0, utils_1.testUsername)());
91
+ conf.setPwd((0, utils_1.testPassword)());
91
92
  conf.setDb("power_func_stmt1");
92
93
  let connector = await wsSql_1.WsSql.open(conf);
93
94
  let stmt = await connector.stmtInit();
@@ -109,8 +110,8 @@ describe("TDWebSocket.Stmt()", () => {
109
110
  });
110
111
  test("error Prepare table", async () => {
111
112
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
112
- conf.setUser("root");
113
- conf.setPwd("taosdata");
113
+ conf.setUser((0, utils_1.testUsername)());
114
+ conf.setPwd((0, utils_1.testPassword)());
114
115
  conf.setDb("power_func_stmt1");
115
116
  let connector = await wsSql_1.WsSql.open(conf);
116
117
  let stmt = await connector.stmtInit();
@@ -130,8 +131,8 @@ describe("TDWebSocket.Stmt()", () => {
130
131
  });
131
132
  test("error Prepare tag", async () => {
132
133
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
133
- conf.setUser("root");
134
- conf.setPwd("taosdata");
134
+ conf.setUser((0, utils_1.testUsername)());
135
+ conf.setPwd((0, utils_1.testPassword)());
135
136
  conf.setDb("power_func_stmt1");
136
137
  let connector = await wsSql_1.WsSql.open(conf);
137
138
  let stmt = await connector.stmtInit();
@@ -151,8 +152,8 @@ describe("TDWebSocket.Stmt()", () => {
151
152
  });
152
153
  test("Bind a single table", async () => {
153
154
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
154
- conf.setUser("root");
155
- conf.setPwd("taosdata");
155
+ conf.setUser((0, utils_1.testUsername)());
156
+ conf.setPwd((0, utils_1.testPassword)());
156
157
  conf.setDb("power_func_stmt1");
157
158
  let connector = await wsSql_1.WsSql.open(conf);
158
159
  let stmt = await connector.stmtInit();
@@ -186,8 +187,8 @@ describe("TDWebSocket.Stmt()", () => {
186
187
  });
187
188
  test("error BindParam", async () => {
188
189
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
189
- conf.setUser("root");
190
- conf.setPwd("taosdata");
190
+ conf.setUser((0, utils_1.testUsername)());
191
+ conf.setPwd((0, utils_1.testPassword)());
191
192
  conf.setDb("power_func_stmt1");
192
193
  let connector = await wsSql_1.WsSql.open(conf);
193
194
  let stmt = await connector.stmtInit();
@@ -225,8 +226,8 @@ describe("TDWebSocket.Stmt()", () => {
225
226
  });
226
227
  test("no Batch", async () => {
227
228
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
228
- conf.setUser("root");
229
- conf.setPwd("taosdata");
229
+ conf.setUser((0, utils_1.testUsername)());
230
+ conf.setPwd((0, utils_1.testPassword)());
230
231
  conf.setDb("power_func_stmt1");
231
232
  let connector = await wsSql_1.WsSql.open(conf);
232
233
  let stmt = await connector.stmtInit();
@@ -263,8 +264,8 @@ describe("TDWebSocket.Stmt()", () => {
263
264
  });
264
265
  test("Batch after BindParam", async () => {
265
266
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
266
- conf.setUser("root");
267
- conf.setPwd("taosdata");
267
+ conf.setUser((0, utils_1.testUsername)());
268
+ conf.setPwd((0, utils_1.testPassword)());
268
269
  conf.setDb("power_func_stmt1");
269
270
  let connector = await wsSql_1.WsSql.open(conf);
270
271
  let stmt = await connector.stmtInit();
@@ -315,8 +316,8 @@ describe("TDWebSocket.Stmt()", () => {
315
316
  });
316
317
  test("no set tag", async () => {
317
318
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
318
- conf.setUser("root");
319
- conf.setPwd("taosdata");
319
+ conf.setUser((0, utils_1.testUsername)());
320
+ conf.setPwd((0, utils_1.testPassword)());
320
321
  conf.setDb("power_func_stmt1");
321
322
  let connector = await wsSql_1.WsSql.open(conf);
322
323
  let stmt = await connector.stmtInit();
@@ -345,8 +346,8 @@ describe("TDWebSocket.Stmt()", () => {
345
346
  });
346
347
  test("normal binary BindParam", async () => {
347
348
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
348
- conf.setUser("root");
349
- conf.setPwd("taosdata");
349
+ conf.setUser((0, utils_1.testUsername)());
350
+ conf.setPwd((0, utils_1.testPassword)());
350
351
  conf.setDb("power_func_stmt1");
351
352
  let connector = await wsSql_1.WsSql.open(conf);
352
353
  let stmt = await connector.stmtInit();
@@ -374,8 +375,8 @@ describe("TDWebSocket.Stmt()", () => {
374
375
  });
375
376
  test("normal json BindParam", async () => {
376
377
  let conf = new config_1.WSConfig(dns, "100.100.100.100");
377
- conf.setUser("root");
378
- conf.setPwd("taosdata");
378
+ conf.setUser((0, utils_1.testUsername)());
379
+ conf.setPwd((0, utils_1.testPassword)());
379
380
  conf.setDb("power_func_stmt1");
380
381
  let connector = await wsSql_1.WsSql.open(conf);
381
382
  let stmt = await connector.stmtInit();
@@ -408,8 +409,8 @@ describe("TDWebSocket.Stmt()", () => {
408
409
  });
409
410
  afterAll(async () => {
410
411
  let conf = new config_1.WSConfig(dns);
411
- conf.setUser("root");
412
- conf.setPwd("taosdata");
412
+ conf.setUser((0, utils_1.testUsername)());
413
+ conf.setPwd((0, utils_1.testPassword)());
413
414
  let wsSql = await wsSql_1.WsSql.open(conf);
414
415
  await wsSql.exec("drop database power_func_stmt1");
415
416
  await wsSql.close();
@@ -148,7 +148,7 @@ const selectTable = `select * from ${table}`;
148
148
  const selectTableCN = `select * from ${tableCN}`;
149
149
  const selectJsonTable = `select * from ${jsonTable}`;
150
150
  const selectJsonTableCN = `select * from ${jsonTableCN}`;
151
- let dsn = "ws://root:taosdata@localhost:6041";
151
+ let dsn = `ws://${(0, utils_1.testUsername)()}:${(0, utils_1.testPassword)()}@localhost:6041`;
152
152
  (0, log_1.setLevel)("debug");
153
153
  beforeAll(async () => {
154
154
  let conf = new config_1.WSConfig(dsn);
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stmt2.failover.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stmt2.failover.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/stmt2.failover.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const wsStmt2_1 = require("../../src/stmt/wsStmt2");
37
+ const wsProto = __importStar(require("../../src/stmt/wsProto"));
38
+ const Step = {
39
+ INIT: 0,
40
+ PREPARE: 1,
41
+ BIND: 2,
42
+ EXEC: 3,
43
+ RESULT: 4,
44
+ };
45
+ function createMockWsClient() {
46
+ return {
47
+ getState: jest.fn(() => 1),
48
+ connect: jest.fn(async () => { }),
49
+ checkVersion: jest.fn(async () => { }),
50
+ exec: jest.fn(async () => ({
51
+ totalTime: 0,
52
+ msg: {
53
+ code: 0,
54
+ message: "",
55
+ timing: 0,
56
+ stmt_id: 1,
57
+ is_insert: false,
58
+ fields_count: 1,
59
+ },
60
+ })),
61
+ execNoResp: jest.fn(async () => { }),
62
+ sendBinaryMsg: jest.fn(async () => ({
63
+ totalTime: 0,
64
+ msg: {
65
+ code: 0,
66
+ message: "",
67
+ timing: 0,
68
+ stmt_id: 1,
69
+ affected: 0,
70
+ },
71
+ })),
72
+ waitForReady: jest.fn(async () => { }),
73
+ isNetworkError: jest.fn((_err) => false),
74
+ };
75
+ }
76
+ function createBareStmt() {
77
+ const wsClient = createMockWsClient();
78
+ const stmt = new wsStmt2_1.WsStmt2(wsClient);
79
+ stmt._stmt_id = 1n;
80
+ return {
81
+ stmt,
82
+ wsClient,
83
+ };
84
+ }
85
+ function makeExecReady(stmt) {
86
+ const tableInfo = {
87
+ getParams: () => ({ ok: true }),
88
+ };
89
+ stmt._currentTableInfo = tableInfo;
90
+ stmt._stmtTableInfoList = [tableInfo];
91
+ stmt._toBeBindTagCount = 0;
92
+ stmt._toBeBindColCount = 0;
93
+ stmt._toBeBindTableNameIndex = undefined;
94
+ }
95
+ function makeSavedBindBytes(reqId = 0n, stmtId = 1n) {
96
+ const bytes = new ArrayBuffer(16);
97
+ const view = new DataView(bytes);
98
+ view.setBigUint64(0, reqId, true);
99
+ view.setBigUint64(8, stmtId, true);
100
+ return bytes;
101
+ }
102
+ describe("WsStmt2 failover", () => {
103
+ afterEach(() => {
104
+ jest.restoreAllMocks();
105
+ });
106
+ test("prepare caches sql and rebuilds on network error", async () => {
107
+ const { stmt, wsClient } = createBareStmt();
108
+ const networkError = new Error("socket closed");
109
+ wsClient.isNetworkError.mockReturnValue(true);
110
+ jest.spyOn(stmt, "doPrepare").mockRejectedValueOnce(networkError);
111
+ const rebuildSpy = jest
112
+ .spyOn(stmt, "rebuildContext")
113
+ .mockResolvedValue(undefined);
114
+ const sql = "select * from meters where ts > ?";
115
+ await stmt.prepare(sql);
116
+ expect(stmt._savedSql).toBe(sql);
117
+ expect(rebuildSpy).toHaveBeenCalledWith(Step.PREPARE);
118
+ });
119
+ test("exec caches bind bytes and rebuilds on network error", async () => {
120
+ const { stmt, wsClient } = createBareStmt();
121
+ const networkError = new Error("cannot call send() while not connected");
122
+ const bindBytes = new Uint8Array([1, 2, 3]).buffer;
123
+ makeExecReady(stmt);
124
+ stmt._isInsert = false;
125
+ wsClient.isNetworkError.mockReturnValue(true);
126
+ jest.spyOn(wsProto, "stmt2BinaryBlockEncode").mockReturnValue(bindBytes);
127
+ jest.spyOn(stmt, "doSendBindBytes").mockRejectedValueOnce(networkError);
128
+ jest.spyOn(stmt, "rebuildContext").mockResolvedValue(undefined);
129
+ const cleanupSpy = jest.spyOn(stmt, "cleanup");
130
+ await stmt.exec();
131
+ expect(stmt._savedBindBytes).toBe(bindBytes);
132
+ expect(stmt.rebuildContext).toHaveBeenCalledWith(Step.BIND);
133
+ expect(cleanupSpy).not.toHaveBeenCalled();
134
+ });
135
+ test("exec only cleans up immediately for insert statements", async () => {
136
+ const bindBytes = new Uint8Array([7, 8, 9]).buffer;
137
+ const insertCtx = createBareStmt();
138
+ const insertStmt = insertCtx.stmt;
139
+ makeExecReady(insertStmt);
140
+ insertStmt._isInsert = true;
141
+ jest.spyOn(wsProto, "stmt2BinaryBlockEncode").mockReturnValue(bindBytes);
142
+ jest.spyOn(insertStmt, "doSendBindBytes").mockResolvedValue(undefined);
143
+ jest.spyOn(insertStmt, "doExec").mockResolvedValue(undefined);
144
+ const insertCleanupSpy = jest.spyOn(insertStmt, "cleanup");
145
+ await insertStmt.exec();
146
+ expect(insertCleanupSpy).toHaveBeenCalledTimes(1);
147
+ const queryCtx = createBareStmt();
148
+ const queryStmt = queryCtx.stmt;
149
+ makeExecReady(queryStmt);
150
+ queryStmt._isInsert = false;
151
+ jest.spyOn(wsProto, "stmt2BinaryBlockEncode").mockReturnValue(bindBytes);
152
+ jest.spyOn(queryStmt, "doSendBindBytes").mockResolvedValue(undefined);
153
+ jest.spyOn(queryStmt, "doExec").mockResolvedValue(undefined);
154
+ const queryCleanupSpy = jest.spyOn(queryStmt, "cleanup");
155
+ await queryStmt.exec();
156
+ expect(queryCleanupSpy).not.toHaveBeenCalled();
157
+ });
158
+ test("exec cleans up insert cache even when failover rebuild fails", async () => {
159
+ const { stmt, wsClient } = createBareStmt();
160
+ const networkError = new Error("cannot call send() while not connected");
161
+ const rebuildError = new Error("rebuild failed");
162
+ const bindBytes = new Uint8Array([1, 2, 3]).buffer;
163
+ makeExecReady(stmt);
164
+ stmt._isInsert = true;
165
+ wsClient.isNetworkError.mockReturnValue(true);
166
+ jest.spyOn(wsProto, "stmt2BinaryBlockEncode").mockReturnValue(bindBytes);
167
+ jest.spyOn(stmt, "doSendBindBytes").mockRejectedValueOnce(networkError);
168
+ jest.spyOn(stmt, "rebuildContext").mockRejectedValueOnce(rebuildError);
169
+ const cleanupSpy = jest.spyOn(stmt, "cleanup");
170
+ await expect(stmt.exec()).rejects.toThrow("rebuild failed");
171
+ expect(cleanupSpy).toHaveBeenCalledTimes(1);
172
+ });
173
+ test("resultSet rebuilds on network error and cleans up", async () => {
174
+ const { stmt, wsClient } = createBareStmt();
175
+ const networkError = new Error("connection reset");
176
+ const rebuiltRows = { id: "rebuilt" };
177
+ wsClient.isNetworkError.mockReturnValue(true);
178
+ jest.spyOn(stmt, "doResult").mockRejectedValueOnce(networkError);
179
+ const rebuildSpy = jest
180
+ .spyOn(stmt, "rebuildContext")
181
+ .mockResolvedValue(rebuiltRows);
182
+ const cleanupSpy = jest.spyOn(stmt, "cleanup");
183
+ const result = await stmt.resultSet();
184
+ expect(result).toBe(rebuiltRows);
185
+ expect(rebuildSpy).toHaveBeenCalledWith(Step.RESULT);
186
+ expect(cleanupSpy).toHaveBeenCalledTimes(1);
187
+ });
188
+ test("non-network errors are rethrown without rebuild in prepare", async () => {
189
+ const { stmt, wsClient } = createBareStmt();
190
+ const nonNetworkError = new Error("invalid sql");
191
+ wsClient.isNetworkError.mockReturnValue(false);
192
+ jest.spyOn(stmt, "doPrepare").mockRejectedValueOnce(nonNetworkError);
193
+ const rebuildSpy = jest
194
+ .spyOn(stmt, "rebuildContext")
195
+ .mockResolvedValue(undefined);
196
+ await expect(stmt.prepare("bad sql")).rejects.toThrow("invalid sql");
197
+ expect(rebuildSpy).not.toHaveBeenCalled();
198
+ });
199
+ test("non-network errors are rethrown without rebuild in exec", async () => {
200
+ const { stmt, wsClient } = createBareStmt();
201
+ const bindBytes = new Uint8Array([4, 5, 6]).buffer;
202
+ const nonNetworkError = new Error("invalid bind");
203
+ makeExecReady(stmt);
204
+ stmt._isInsert = false;
205
+ wsClient.isNetworkError.mockReturnValue(false);
206
+ jest.spyOn(wsProto, "stmt2BinaryBlockEncode").mockReturnValue(bindBytes);
207
+ jest.spyOn(stmt, "doSendBindBytes").mockRejectedValueOnce(nonNetworkError);
208
+ const rebuildSpy = jest
209
+ .spyOn(stmt, "rebuildContext")
210
+ .mockResolvedValue(undefined);
211
+ await expect(stmt.exec()).rejects.toThrow("invalid bind");
212
+ expect(rebuildSpy).not.toHaveBeenCalled();
213
+ });
214
+ test("non-network errors are rethrown without rebuild in resultSet", async () => {
215
+ const { stmt, wsClient } = createBareStmt();
216
+ const nonNetworkError = new Error("result failed");
217
+ wsClient.isNetworkError.mockReturnValue(false);
218
+ jest.spyOn(stmt, "doResult").mockRejectedValueOnce(nonNetworkError);
219
+ const rebuildSpy = jest
220
+ .spyOn(stmt, "rebuildContext")
221
+ .mockResolvedValue(undefined);
222
+ await expect(stmt.resultSet()).rejects.toThrow("result failed");
223
+ expect(rebuildSpy).not.toHaveBeenCalled();
224
+ });
225
+ test("rebuildContext replays steps in order to EXEC", async () => {
226
+ const { stmt } = createBareStmt();
227
+ const callOrder = [];
228
+ stmt._savedSql = "insert into t values(?, ?)";
229
+ stmt._savedBindBytes = makeSavedBindBytes();
230
+ jest.spyOn(stmt, "doInit").mockImplementation(async () => {
231
+ callOrder.push("init");
232
+ });
233
+ jest.spyOn(stmt, "doPrepare").mockImplementation(async () => {
234
+ callOrder.push("prepare");
235
+ });
236
+ jest.spyOn(stmt, "doSendBindBytes").mockImplementation(async () => {
237
+ callOrder.push("bind");
238
+ });
239
+ jest.spyOn(stmt, "doExec").mockImplementation(async () => {
240
+ callOrder.push("exec");
241
+ });
242
+ jest.spyOn(stmt, "doResult").mockImplementation(async () => {
243
+ callOrder.push("result");
244
+ return { rows: 1 };
245
+ });
246
+ await stmt.rebuildContext(Step.EXEC);
247
+ expect(callOrder).toEqual(["init", "prepare", "bind", "exec"]);
248
+ });
249
+ test("rebuildContext can rebuild to RESULT and return rows", async () => {
250
+ const { stmt } = createBareStmt();
251
+ const rows = { data: [1, 2, 3] };
252
+ stmt._savedSql = "select * from t where ts > ?";
253
+ stmt._savedBindBytes = makeSavedBindBytes();
254
+ jest.spyOn(stmt, "doInit").mockResolvedValue(undefined);
255
+ jest.spyOn(stmt, "doPrepare").mockResolvedValue(undefined);
256
+ jest.spyOn(stmt, "doSendBindBytes").mockResolvedValue(undefined);
257
+ jest.spyOn(stmt, "doExec").mockResolvedValue(undefined);
258
+ jest.spyOn(stmt, "doResult").mockResolvedValue(rows);
259
+ const result = await stmt.rebuildContext(Step.RESULT);
260
+ expect(result).toBe(rows);
261
+ });
262
+ test("buildReplayBindBytes rewrites req_id and stmt_id", () => {
263
+ const { stmt } = createBareStmt();
264
+ const originalBytes = makeSavedBindBytes(0n, 5n);
265
+ stmt._savedBindBytes = originalBytes;
266
+ stmt._stmt_id = 42n;
267
+ const replayBytes = stmt.buildReplayBindBytes();
268
+ const originalView = new DataView(originalBytes);
269
+ const replayView = new DataView(replayBytes);
270
+ expect(replayBytes).not.toBe(originalBytes);
271
+ expect(originalView.getBigUint64(8, true)).toBe(5n);
272
+ expect(replayView.getBigUint64(8, true)).toBe(42n);
273
+ expect(replayView.getBigUint64(0, true)).not.toBe(0n);
274
+ });
275
+ test("rebuildContext retries when rebuild gets another network error", async () => {
276
+ const { stmt, wsClient } = createBareStmt();
277
+ const networkError = new Error("connection reset");
278
+ stmt._savedSql = "select * from t";
279
+ stmt._savedBindBytes = new Uint8Array([2, 4, 6]).buffer;
280
+ wsClient.isNetworkError.mockImplementation((err) => err === networkError);
281
+ const initSpy = jest
282
+ .spyOn(stmt, "doInit")
283
+ .mockRejectedValueOnce(networkError)
284
+ .mockResolvedValue(undefined);
285
+ const prepareSpy = jest.spyOn(stmt, "doPrepare").mockResolvedValue(undefined);
286
+ await stmt.rebuildContext(Step.PREPARE);
287
+ expect(initSpy).toHaveBeenCalledTimes(2);
288
+ expect(prepareSpy).toHaveBeenCalledTimes(1);
289
+ expect(wsClient.waitForReady).toHaveBeenCalledTimes(2);
290
+ });
291
+ test("rebuildContext throws after max network retry attempts", async () => {
292
+ const { stmt, wsClient } = createBareStmt();
293
+ const networkError = new Error("connection reset");
294
+ stmt._savedSql = "select * from t";
295
+ stmt._savedBindBytes = makeSavedBindBytes();
296
+ wsClient.isNetworkError.mockReturnValue(true);
297
+ const initSpy = jest
298
+ .spyOn(stmt, "doInit")
299
+ .mockRejectedValue(networkError);
300
+ await expect(stmt.rebuildContext(Step.INIT)).rejects.toThrow("connection reset");
301
+ expect(initSpy).toHaveBeenCalledTimes(3);
302
+ expect(wsClient.waitForReady).toHaveBeenCalledTimes(3);
303
+ });
304
+ test("rebuildContext throws on non-network error", async () => {
305
+ const { stmt, wsClient } = createBareStmt();
306
+ const nonNetworkError = new Error("permission denied");
307
+ stmt._savedSql = "select * from t";
308
+ stmt._savedBindBytes = new Uint8Array([9, 9, 9]).buffer;
309
+ wsClient.isNetworkError.mockReturnValue(false);
310
+ jest.spyOn(stmt, "doInit").mockRejectedValueOnce(nonNetworkError);
311
+ await expect(stmt.rebuildContext(Step.INIT)).rejects.toThrow("permission denied");
312
+ });
313
+ });