@tdengine/websocket 3.0.0 → 3.1.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 (144) hide show
  1. package/lib/example/basicSchemaless.d.ts +2 -0
  2. package/lib/example/basicSchemaless.d.ts.map +1 -0
  3. package/lib/example/basicSchemaless.js +47 -0
  4. package/lib/example/basicSql.d.ts +2 -0
  5. package/lib/example/basicSql.d.ts.map +1 -0
  6. package/lib/example/basicSql.js +52 -0
  7. package/lib/example/basicStmt.d.ts +2 -0
  8. package/lib/example/basicStmt.d.ts.map +1 -0
  9. package/lib/example/basicStmt.js +58 -0
  10. package/lib/example/basicTmq.d.ts +2 -0
  11. package/lib/example/basicTmq.d.ts.map +1 -0
  12. package/lib/example/basicTmq.js +71 -0
  13. package/lib/index.d.ts +26 -0
  14. package/lib/index.d.ts.map +1 -0
  15. package/lib/index.js +41 -0
  16. package/lib/src/client/wsClient.d.ts +22 -0
  17. package/lib/src/client/wsClient.d.ts.map +1 -0
  18. package/lib/src/client/wsClient.js +253 -0
  19. package/lib/src/client/wsConnector.d.ts +17 -0
  20. package/lib/src/client/wsConnector.d.ts.map +1 -0
  21. package/lib/src/client/wsConnector.js +140 -0
  22. package/lib/src/client/wsConnectorPool.d.ts +13 -0
  23. package/lib/src/client/wsConnectorPool.d.ts.map +1 -0
  24. package/lib/src/client/wsConnectorPool.js +107 -0
  25. package/lib/src/client/wsEventCallback.d.ts +22 -0
  26. package/lib/src/client/wsEventCallback.d.ts.map +1 -0
  27. package/lib/src/client/wsEventCallback.js +97 -0
  28. package/lib/src/client/wsResponse.d.ts +66 -0
  29. package/lib/src/client/wsResponse.d.ts.map +1 -0
  30. package/lib/src/client/wsResponse.js +76 -0
  31. package/lib/src/common/config.d.ts +22 -0
  32. package/lib/src/common/config.d.ts.map +1 -0
  33. package/lib/src/common/config.js +45 -0
  34. package/lib/src/common/constant.d.ts +13 -0
  35. package/lib/src/common/constant.d.ts.map +1 -0
  36. package/{src/constant.ts → lib/src/common/constant.js} +25 -24
  37. package/lib/src/common/log.d.ts +5 -0
  38. package/lib/src/common/log.d.ts.map +1 -0
  39. package/lib/src/common/log.js +40 -0
  40. package/lib/src/common/reqid.d.ts +8 -0
  41. package/lib/src/common/reqid.d.ts.map +1 -0
  42. package/lib/src/common/reqid.js +59 -0
  43. package/lib/src/common/taosResult.d.ts +51 -0
  44. package/lib/src/common/taosResult.d.ts.map +1 -0
  45. package/lib/src/common/taosResult.js +419 -0
  46. package/lib/src/common/ut8Helper.d.ts +2 -0
  47. package/lib/src/common/ut8Helper.d.ts.map +1 -0
  48. package/{src/ut8Helper.ts → lib/src/common/ut8Helper.js} +22 -21
  49. package/lib/src/common/utils.d.ts +5 -0
  50. package/lib/src/common/utils.d.ts.map +1 -0
  51. package/lib/src/common/utils.js +33 -0
  52. package/lib/src/common/wsError.d.ts +29 -0
  53. package/lib/src/common/wsError.d.ts.map +1 -0
  54. package/lib/src/common/wsError.js +51 -0
  55. package/{src/wsOptions.ts → lib/src/common/wsOptions.d.ts} +4 -2
  56. package/lib/src/common/wsOptions.d.ts.map +1 -0
  57. package/lib/src/common/wsOptions.js +2 -0
  58. package/lib/src/index.d.ts +9 -0
  59. package/lib/src/index.d.ts.map +1 -0
  60. package/lib/src/index.js +58 -0
  61. package/lib/src/sql/wsProto.d.ts +26 -0
  62. package/lib/src/sql/wsProto.d.ts.map +1 -0
  63. package/lib/src/sql/wsProto.js +19 -0
  64. package/lib/src/sql/wsRows.d.ts +16 -0
  65. package/lib/src/sql/wsRows.d.ts.map +1 -0
  66. package/lib/src/sql/wsRows.js +76 -0
  67. package/lib/src/sql/wsSql.d.ts +24 -0
  68. package/lib/src/sql/wsSql.d.ts.map +1 -0
  69. package/lib/src/sql/wsSql.js +164 -0
  70. package/lib/src/stmt/wsParams.d.ts +41 -0
  71. package/lib/src/stmt/wsParams.d.ts.map +1 -0
  72. package/lib/src/stmt/wsParams.js +428 -0
  73. package/lib/src/stmt/wsProto.d.ts +27 -0
  74. package/lib/src/stmt/wsProto.d.ts.map +1 -0
  75. package/lib/src/stmt/wsProto.js +67 -0
  76. package/lib/src/stmt/wsStmt.d.ts +30 -0
  77. package/lib/src/stmt/wsStmt.d.ts.map +1 -0
  78. package/lib/src/stmt/wsStmt.js +207 -0
  79. package/lib/src/tmq/config.d.ts +14 -0
  80. package/lib/src/tmq/config.d.ts.map +1 -0
  81. package/lib/src/tmq/config.js +42 -0
  82. package/lib/src/tmq/constant.d.ts +85 -0
  83. package/lib/src/tmq/constant.d.ts.map +1 -0
  84. package/lib/src/tmq/constant.js +89 -0
  85. package/lib/src/tmq/tmqResponse.d.ts +80 -0
  86. package/lib/src/tmq/tmqResponse.d.ts.map +1 -0
  87. package/lib/src/tmq/tmqResponse.js +204 -0
  88. package/lib/src/tmq/wsTmq.d.ts +32 -0
  89. package/lib/src/tmq/wsTmq.d.ts.map +1 -0
  90. package/lib/src/tmq/wsTmq.js +316 -0
  91. package/lib/test/bulkPulling/queryTables.test.d.ts +2 -0
  92. package/lib/test/bulkPulling/queryTables.test.d.ts.map +1 -0
  93. package/lib/test/bulkPulling/queryTables.test.js +297 -0
  94. package/lib/test/bulkPulling/schemaless.test.d.ts +2 -0
  95. package/lib/test/bulkPulling/schemaless.test.d.ts.map +1 -0
  96. package/lib/test/bulkPulling/schemaless.test.js +94 -0
  97. package/lib/test/bulkPulling/sql.test.d.ts +2 -0
  98. package/lib/test/bulkPulling/sql.test.d.ts.map +1 -0
  99. package/lib/test/bulkPulling/sql.test.js +124 -0
  100. package/lib/test/bulkPulling/stmt.func.test.d.ts +2 -0
  101. package/lib/test/bulkPulling/stmt.func.test.d.ts.map +1 -0
  102. package/lib/test/bulkPulling/stmt.func.test.js +381 -0
  103. package/lib/test/bulkPulling/stmt.type.test.d.ts +2 -0
  104. package/lib/test/bulkPulling/stmt.type.test.d.ts.map +1 -0
  105. package/lib/test/bulkPulling/stmt.type.test.js +273 -0
  106. package/lib/test/bulkPulling/tmq.test.d.ts +2 -0
  107. package/lib/test/bulkPulling/tmq.test.d.ts.map +1 -0
  108. package/lib/test/bulkPulling/tmq.test.js +177 -0
  109. package/lib/test/bulkPulling/wsConnectPool.test.d.ts +2 -0
  110. package/lib/test/bulkPulling/wsConnectPool.test.d.ts.map +1 -0
  111. package/lib/test/bulkPulling/wsConnectPool.test.js +129 -0
  112. package/lib/test/utils.d.ts +18 -0
  113. package/lib/test/utils.d.ts.map +1 -0
  114. package/lib/test/utils.js +318 -0
  115. package/package.json +27 -14
  116. package/readme.md +302 -0
  117. package/README.md +0 -59
  118. package/dist/browser/index.js +0 -778
  119. package/dist/main/index.js +0 -711
  120. package/dist/main/index.js.map +0 -1
  121. package/dist/module/index.mjs +0 -704
  122. package/dist/module/index.mjs.map +0 -1
  123. package/dist/types.d.ts +0 -103
  124. package/dist/types.d.ts.map +0 -1
  125. package/example/basicUsageAsync.ts +0 -48
  126. package/example/basicUsagePrimse.ts +0 -43
  127. package/example/cloudUsage.ts +0 -55
  128. package/example/continousConnectAndVersion.ts +0 -16
  129. package/example/test.mjs +0 -51
  130. package/index.ts +0 -7
  131. package/jest.config.js +0 -8
  132. package/src/taosResult.ts +0 -269
  133. package/src/tdengineWebsocket.ts +0 -39
  134. package/src/wsClient.ts +0 -196
  135. package/src/wsError.ts +0 -5
  136. package/src/wsQuery.ts +0 -30
  137. package/src/wsQueryInterface.ts +0 -212
  138. package/src/wsQueryResponse.ts +0 -112
  139. package/tdengine-websocket-3.0.0.tgz +0 -0
  140. package/test/bulkPulling/connect.test.ts +0 -27
  141. package/test/bulkPulling/queryTables.test.ts +0 -274
  142. package/test/bulkPulling/version.test.ts +0 -19
  143. package/test/utils.ts +0 -235
  144. package/tsconfig.json +0 -101
@@ -0,0 +1,177 @@
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("../utils");
8
+ const wsConnectorPool_1 = require("../../src/client/wsConnectorPool");
9
+ const stable = 'st';
10
+ const db = 'ws_tmq_test';
11
+ const topics = ['topic_ws_bean'];
12
+ // const topic2 = 'topic_ws_bean_2'
13
+ // let createTopic = `create topic if not exists ${topic} as select ts, c1, c2, c3, c4, c5, t1 from ${db}.${stable}`
14
+ // let createTopic2 = `create topic if not exists ${topic2} as select ts, c1, c4, c5, t1 from ${db}.${stable}`
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 dropTopic2 = `DROP TOPIC IF EXISTS ${topic2};`
18
+ beforeAll(async () => {
19
+ let dsn = 'ws://root:taosdata@localhost:6041';
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 = [true, -1, -2, -3, BigInt(-4), 1, 2, 3, BigInt(4), parseFloat(3.1415.toFixed(5)), parseFloat(3.14159265.toFixed(15)), 'varchar_tag_1', 'nchar_tag_1'];
25
+ const tableValues = [
26
+ [BigInt(1656677710000), 0, -1, -2, BigInt(-3), 0, 1, 2, BigInt(3), parseFloat(3.1415.toFixed(5)), parseFloat(3.14159265.toFixed(15)), 'varchar_col_1', 'nchar_col_1', true, 'NULL', 'POINT (4.0 8.0)', '0x7661726332'],
27
+ [BigInt(1656677720000), -1, -2, -3, BigInt(-4), 1, 2, 3, BigInt(4), parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.14159265 * 2).toFixed(15)), 'varchar_col_2', 'nchar_col_2', false, 'NULL', 'POINT (3.0 5.0)', '0x7661726333'],
28
+ [BigInt(1656677730000), -2, -3, -4, BigInt(-5), 2, 3, 4, BigInt(5), parseFloat((3.1415 * 3).toFixed(5)), parseFloat((3.14159265 * 3).toFixed(15)), 'varchar_col_3', 'nchar_col_3', true, 'NULL', 'LINESTRING (1.000000 1.000000, 2.000000 2.000000, 5.000000 5.000000)', '0x7661726334'],
29
+ [BigInt(1656677740000), -3, -4, -5, BigInt(-6), 3, 4, 5, BigInt(6), parseFloat((3.1415 * 4).toFixed(5)), parseFloat((3.14159265 * 4).toFixed(15)), 'varchar_col_4', 'nchar_col_4', false, 'NULL', 'POLYGON ((3.000000 6.000000, 5.000000 6.000000, 5.000000 8.000000, 3.000000 8.000000, 3.000000 6.000000))', '0x7661726335'],
30
+ [BigInt(1656677750000), -4, -5, -6, BigInt(-7), 4, 5, 6, BigInt(7), parseFloat((3.1415 * 5).toFixed(5)), parseFloat((3.14159265 * 5).toFixed(15)), 'varchar_col_5', 'nchar_col_5', true, 'NULL', 'POINT (7.0 9.0)', '0x7661726335'],
31
+ ];
32
+ const tableCNValues = [
33
+ [BigInt(1656677760000), 0, -1, -2, BigInt(-3), 0, 1, 2, BigInt(3), parseFloat(3.1415.toFixed(5)), parseFloat(3.14159265.toFixed(15)), 'varchar_列_壹', 'nchar_列_甲', true, 'NULL', 'POINT (4.0 8.0)', '0x7661726332'],
34
+ [BigInt(1656677770000), -1, -2, -3, BigInt(-4), 1, 2, 3, BigInt(4), parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.14159265 * 2).toFixed(15)), 'varchar_列_贰', 'nchar_列_乙', false, 'NULL', 'POINT (3.0 5.0)', '0x7661726333'],
35
+ [BigInt(1656677780000), -2, -3, -4, BigInt(-5), 2, 3, 4, BigInt(5), parseFloat((3.1415 * 3).toFixed(5)), parseFloat((3.14159265 * 3).toFixed(15)), 'varchar_列_叁', 'nchar_列_丙', true, 'NULL', 'LINESTRING (1.000000 1.000000, 2.000000 2.000000, 5.000000 5.000000)', '0x7661726334'],
36
+ [BigInt(1656677790000), -3, -4, -5, BigInt(-6), 3, 4, 5, BigInt(6), parseFloat((3.1415 * 4).toFixed(5)), parseFloat((3.14159265 * 4).toFixed(15)), 'varchar_列_肆', 'nchar_列_丁', false, 'NULL', 'POLYGON ((3.000000 6.000000, 5.000000 6.000000, 5.000000 8.000000, 3.000000 8.000000, 3.000000 6.000000))', '0x7661726335'],
37
+ [BigInt(1656677800000), -4, -5, -6, BigInt(-7), 4, 5, 6, BigInt(7), parseFloat((3.1415 * 5).toFixed(5)), parseFloat((3.14159265 * 5).toFixed(15)), 'varchar_列_伍', 'nchar_列_戊', true, 'NULL', 'POINT (7.0 9.0)', '0x7661726335'],
38
+ ];
39
+ let ws = await wsSql_1.WsSql.open(conf);
40
+ await ws.exec(dropTopic);
41
+ // await ws.Exec(dropTopic2);
42
+ await ws.exec(dropDB);
43
+ await ws.exec(createDB);
44
+ await ws.exec(useDB);
45
+ await ws.exec((0, utils_1.createSTable)(stable));
46
+ await ws.exec(createTopic);
47
+ // await ws.Exec(createTopic2);
48
+ let insert = (0, utils_1.insertStable)(tableValues, stableTags, stable);
49
+ let insertRes = await ws.exec(insert);
50
+ insert = (0, utils_1.insertStable)(tableCNValues, stableTags, stable);
51
+ insertRes = await ws.exec(insert);
52
+ await ws.close();
53
+ });
54
+ describe('TDWebSocket.Tmq()', () => {
55
+ jest.setTimeout(20 * 1000);
56
+ let configMap = new Map([
57
+ [constant_1.TMQConstants.GROUP_ID, "gId"],
58
+ [constant_1.TMQConstants.CONNECT_USER, "root"],
59
+ [constant_1.TMQConstants.CONNECT_PASS, "taosdata"],
60
+ [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
61
+ [constant_1.TMQConstants.CLIENT_ID, 'test_tmq_client'],
62
+ [constant_1.TMQConstants.WS_URL, 'ws://localhost:6041'],
63
+ [constant_1.TMQConstants.ENABLE_AUTO_COMMIT, 'true'],
64
+ [constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, '1000']
65
+ ]);
66
+ console.log(configMap);
67
+ test('normal connect', async () => {
68
+ let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
69
+ consumer.close();
70
+ });
71
+ test('connect error', async () => {
72
+ expect.assertions(1);
73
+ let consumer = null;
74
+ let errConfigMap = new Map([
75
+ [constant_1.TMQConstants.GROUP_ID, "test"],
76
+ [constant_1.TMQConstants.CONNECT_USER, "root"],
77
+ [constant_1.TMQConstants.CONNECT_PASS, "test"],
78
+ [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest1"],
79
+ [constant_1.TMQConstants.CLIENT_ID, 'test_tmq_client'],
80
+ [constant_1.TMQConstants.WS_URL, 'ws://localhost:6041'],
81
+ [constant_1.TMQConstants.ENABLE_AUTO_COMMIT, 'true'],
82
+ [constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, '1000']
83
+ ]);
84
+ try {
85
+ consumer = await wsTmq_1.WsConsumer.newConsumer(errConfigMap);
86
+ await consumer.subscribe(topics);
87
+ }
88
+ catch (e) {
89
+ console.log(e);
90
+ expect(e.code).toBe(65535);
91
+ }
92
+ finally {
93
+ if (consumer) {
94
+ await consumer.close();
95
+ }
96
+ }
97
+ });
98
+ test('normal Subscribe', async () => {
99
+ let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
100
+ await consumer.subscribe(topics);
101
+ let assignment = await consumer.assignment();
102
+ console.log(assignment);
103
+ let counts = [0, 0];
104
+ let useTime = [];
105
+ for (let i = 0; i < 5; i++) {
106
+ let startTime = new Date().getTime();
107
+ let res = await consumer.poll(500);
108
+ let currTime = new Date().getTime();
109
+ useTime.push(Math.abs(currTime - startTime));
110
+ for (let [key, value] of res) {
111
+ let data = value.getData();
112
+ if (data) {
113
+ counts[0] += data.length;
114
+ }
115
+ }
116
+ if (res.size == 0) {
117
+ break;
118
+ }
119
+ // await Sleep(100)
120
+ }
121
+ await consumer.seekToBeginning(assignment);
122
+ for (let i = 0; i < 5; i++) {
123
+ let startTime = new Date().getTime();
124
+ let res = await consumer.poll(500);
125
+ let currTime = new Date().getTime();
126
+ useTime.push(Math.abs(currTime - startTime));
127
+ for (let [key, value] of res) {
128
+ let data = value.getData();
129
+ if (data) {
130
+ counts[1] += data.length;
131
+ }
132
+ }
133
+ if (res.size == 0) {
134
+ break;
135
+ }
136
+ // await Sleep(100)
137
+ }
138
+ assignment = await consumer.commit();
139
+ console.log(assignment);
140
+ assignment = await consumer.committed(assignment);
141
+ console.log(assignment);
142
+ await consumer.unsubscribe();
143
+ await consumer.close();
144
+ console.log("------------->", useTime);
145
+ console.log("------------->", counts);
146
+ expect(counts).toEqual([10, 10]);
147
+ });
148
+ test('Topic not exist', async () => {
149
+ let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
150
+ try {
151
+ await consumer.subscribe(["aaa"]);
152
+ }
153
+ catch (e) {
154
+ expect(e.message).toMatch("Topic not exist");
155
+ }
156
+ await consumer.close();
157
+ });
158
+ test('normal seek', async () => {
159
+ let consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
160
+ await consumer.subscribe(topics);
161
+ let assignment = await consumer.assignment();
162
+ console.log("------START--------", assignment);
163
+ await consumer.seekToEnd(assignment);
164
+ await consumer.seekToBeginning(assignment);
165
+ await consumer.seekToEnd(assignment);
166
+ assignment = await consumer.assignment();
167
+ console.log("------END--------", assignment);
168
+ for (let i = 0; i < assignment.length; i++) {
169
+ expect(assignment[i].offset).toEqual(assignment[i].end);
170
+ }
171
+ await consumer.unsubscribe();
172
+ await consumer.close();
173
+ });
174
+ });
175
+ afterAll(async () => {
176
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
177
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wsConnectPool.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsConnectPool.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/wsConnectPool.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const wsConnectorPool_1 = require("../../src/client/wsConnectorPool");
4
+ const config_1 = require("../../src/common/config");
5
+ const reqid_1 = require("../../src/common/reqid");
6
+ const wsSql_1 = require("../../src/sql/wsSql");
7
+ const constant_1 = require("../../src/tmq/constant");
8
+ const wsTmq_1 = require("../../src/tmq/wsTmq");
9
+ let tags = ['California.SanFrancisco', 3];
10
+ let multi = [
11
+ [1709183268567, 1709183268568, 1709183268569],
12
+ [10.2, 10.3, 10.4],
13
+ [292, 293, 294],
14
+ [0.32, 0.33, 0.34],
15
+ ];
16
+ let configMap = new Map([
17
+ [constant_1.TMQConstants.GROUP_ID, "gId"],
18
+ [constant_1.TMQConstants.CONNECT_USER, "root"],
19
+ [constant_1.TMQConstants.CONNECT_PASS, "taosdata"],
20
+ [constant_1.TMQConstants.AUTO_OFFSET_RESET, "earliest"],
21
+ [constant_1.TMQConstants.CLIENT_ID, 'test_tmq_client'],
22
+ [constant_1.TMQConstants.WS_URL, 'ws://localhost:6041'],
23
+ [constant_1.TMQConstants.ENABLE_AUTO_COMMIT, 'true'],
24
+ [constant_1.TMQConstants.AUTO_COMMIT_INTERVAL_MS, '1000']
25
+ ]);
26
+ const stable = 'meters';
27
+ const db = 'power';
28
+ const topics = ['pwer_meters_topic'];
29
+ let createTopic = `create topic if not exists ${topics[0]} as select * from ${db}.${stable}`;
30
+ let stmtIds = [];
31
+ async function connect() {
32
+ let dsn = 'ws://root:taosdata@localhost:6041';
33
+ let wsSql = null;
34
+ let conf = new config_1.WSConfig(dsn);
35
+ conf.setDb('power');
36
+ wsSql = await wsSql_1.WsSql.open(conf);
37
+ expect(wsSql.state()).toBeGreaterThan(0);
38
+ console.log(await wsSql.version());
39
+ wsSql.close();
40
+ }
41
+ async function stmtConnect() {
42
+ let dsn = 'ws://root:taosdata@localhost:6041';
43
+ let wsConf = new config_1.WSConfig(dsn);
44
+ wsConf.setDb('power');
45
+ // let connector = WsStmtConnect.NewConnector(wsConf)
46
+ // let stmt = await connector.Init()
47
+ let connector = await wsSql_1.WsSql.open(wsConf);
48
+ let stmt = await connector.stmtInit();
49
+ let id = stmt.getStmtId();
50
+ if (id) {
51
+ stmtIds.push(id);
52
+ }
53
+ expect(stmt).toBeTruthy();
54
+ await stmt.prepare('INSERT INTO ? USING power.meters (location, groupId) TAGS (?, ?) VALUES (?, ?, ?, ?)');
55
+ await stmt.setTableName('d1001');
56
+ await stmt.setJsonTags(tags);
57
+ let lastTs = 0;
58
+ const allp = [];
59
+ for (let i = 0; i < 10; i++) {
60
+ for (let j = 0; j < multi[0].length; j++) {
61
+ multi[0][j] = multi[0][0] + j;
62
+ lastTs = multi[0][j];
63
+ }
64
+ allp.push(stmt.jsonBind(multi));
65
+ multi[0][0] = lastTs + 1;
66
+ }
67
+ await Promise.all(allp);
68
+ await stmt.batch();
69
+ await stmt.exec();
70
+ expect(stmt.getLastAffected()).toEqual(30);
71
+ stmt.close();
72
+ connector.close();
73
+ }
74
+ async function tmqConnect() {
75
+ let consumer = null;
76
+ try {
77
+ consumer = await wsTmq_1.WsConsumer.newConsumer(configMap);
78
+ await consumer.subscribe(topics);
79
+ let res = await consumer.poll(500);
80
+ for (let [key, value] of res) {
81
+ console.log(key, value);
82
+ }
83
+ await consumer.commit();
84
+ let assignment = await consumer.assignment();
85
+ console.log(assignment);
86
+ if (arguments && arguments.length > 0)
87
+ await consumer.seekToBeginning(assignment);
88
+ await consumer.unsubscribe();
89
+ }
90
+ catch (e) {
91
+ console.error(e);
92
+ }
93
+ finally {
94
+ if (consumer) {
95
+ consumer.close();
96
+ }
97
+ }
98
+ }
99
+ beforeAll(async () => {
100
+ let dsn = 'ws://root:taosdata@localhost:6041';
101
+ let conf = new config_1.WSConfig(dsn);
102
+ let ws = await wsSql_1.WsSql.open(conf);
103
+ await ws.exec(createTopic, reqid_1.ReqId.getReqID());
104
+ await ws.close();
105
+ });
106
+ describe('TDWebSocket.WsSql()', () => {
107
+ jest.setTimeout(20 * 1000);
108
+ test('ReqId', async () => {
109
+ const allp = [];
110
+ for (let i = 0; i < 10; i++) {
111
+ allp.push(console.log(reqid_1.ReqId.getReqID()));
112
+ }
113
+ await Promise.all(allp);
114
+ });
115
+ test.skip('normal connect', async () => {
116
+ const allp = [];
117
+ for (let i = 0; i < 20; i++) {
118
+ allp.push(connect());
119
+ allp.push(stmtConnect());
120
+ allp.push(tmqConnect());
121
+ }
122
+ await Promise.all(allp);
123
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
124
+ console.log(stmtIds);
125
+ });
126
+ });
127
+ afterAll(async () => {
128
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
129
+ });
@@ -0,0 +1,18 @@
1
+ import { TDengineMeta } from "../src/common/taosResult";
2
+ export declare function getInsertBind(valuesLen: number, tagsLen: number, db: string, stable: string): string;
3
+ export declare function insertStable(values: Array<Array<any>>, tags: Array<any>, stable: string, table?: string): string;
4
+ export declare function insertNTable(values: Array<Array<any>>, table: string): string;
5
+ export declare const tableMeta: Array<TDengineMeta>;
6
+ export declare const jsonMeta: Array<TDengineMeta>;
7
+ export declare const tagMeta: Array<TDengineMeta>;
8
+ export declare function createBaseSTable(stable: string): string;
9
+ export declare function createBaseSTableJSON(stable: string): string;
10
+ export declare function createBaseTable(table: string): string;
11
+ export declare function createSTable(stable: string): string;
12
+ export declare function createSTableJSON(stable: string): string;
13
+ export declare function createTable(table: string): string;
14
+ export declare function expectStableData(rows: Array<Array<any>>, tags: Array<any>): Array<Array<any>>;
15
+ export declare function hexToBytes(hex: string): ArrayBuffer;
16
+ export declare function createStmtData(varbinary?: string, geoHex?: string): Array<Array<any>>;
17
+ export declare function compareUint8Arrays(arr1: Uint8Array, arr2: Uint8Array): boolean;
18
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../test/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIxD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAapG;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAgB,GAAG,MAAM,CAkCzH;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAqB7E;AAGD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,YAAY,CAsFzC,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,YAAY,CAMxC,CAAA;AACD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,YAAY,CAkEvC,CAAA;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;AACD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG3D;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnD;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAM7F;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAQnD;AAED,wBAAgB,cAAc,CAAC,SAAS,GAAC,MAAa,EAClD,MAAM,GAAC,MAA6D,GAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAgB1F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAY9E"}
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.compareUint8Arrays = exports.createStmtData = exports.hexToBytes = exports.expectStableData = exports.createTable = exports.createSTableJSON = exports.createSTable = exports.createBaseTable = exports.createBaseSTableJSON = exports.createBaseSTable = exports.tagMeta = exports.jsonMeta = exports.tableMeta = exports.insertNTable = exports.insertStable = exports.getInsertBind = void 0;
7
+ const log_1 = __importDefault(require("../src/common/log"));
8
+ function getInsertBind(valuesLen, tagsLen, db, stable) {
9
+ let sql = `insert into ? using ${db}.${stable} tags ( ?`;
10
+ for (let i = 1; i < tagsLen; i++) {
11
+ sql += ', ?';
12
+ }
13
+ sql += ') values( ?';
14
+ for (let i = 1; i < valuesLen; i++) {
15
+ sql += ', ?';
16
+ }
17
+ sql += ')';
18
+ return sql;
19
+ }
20
+ exports.getInsertBind = getInsertBind;
21
+ function insertStable(values, tags, stable, table = 'empty') {
22
+ let childTable = table == 'empty' ? stable + '_s_01' : table;
23
+ let sql = `insert into ${childTable} using ${stable} tags (`;
24
+ tags.forEach((tag) => {
25
+ if ((typeof tag) == 'string') {
26
+ if (tag == 'NULL') {
27
+ sql += tag + ',';
28
+ }
29
+ else {
30
+ sql += `\'${tag}\',`;
31
+ }
32
+ }
33
+ else {
34
+ sql += tag;
35
+ sql += ',';
36
+ }
37
+ });
38
+ sql = sql.slice(0, sql.length - 1);
39
+ sql += ')';
40
+ sql += 'values';
41
+ values.forEach(value => {
42
+ sql += '(';
43
+ value.forEach(v => {
44
+ if ((typeof v) == 'string') {
45
+ sql += `\'${v}\',`;
46
+ }
47
+ else {
48
+ sql += v;
49
+ sql += ',';
50
+ }
51
+ });
52
+ sql = sql.slice(0, sql.length - 1);
53
+ sql += ')';
54
+ });
55
+ return sql;
56
+ }
57
+ exports.insertStable = insertStable;
58
+ function insertNTable(values, table) {
59
+ let sql = `insert into ${table} values `;
60
+ values.forEach(value => {
61
+ sql += '(';
62
+ value.forEach(v => {
63
+ if ((typeof v) == 'string') {
64
+ if (v == 'NULL') {
65
+ sql += v + ',';
66
+ }
67
+ else {
68
+ sql += `\'${v}\',`;
69
+ }
70
+ }
71
+ else {
72
+ sql += v;
73
+ sql += ',';
74
+ }
75
+ });
76
+ sql = sql.slice(0, sql.length - 1);
77
+ sql += ')';
78
+ });
79
+ return sql;
80
+ }
81
+ exports.insertNTable = insertNTable;
82
+ exports.tableMeta = [
83
+ {
84
+ name: 'ts',
85
+ type: 'TIMESTAMP',
86
+ length: 8
87
+ },
88
+ {
89
+ name: 'i1',
90
+ type: 'TINYINT',
91
+ length: 1
92
+ },
93
+ {
94
+ name: 'i2',
95
+ type: 'SMALLINT',
96
+ length: 2
97
+ },
98
+ {
99
+ name: 'i4',
100
+ type: 'INT',
101
+ length: 4
102
+ },
103
+ {
104
+ name: 'i8',
105
+ type: 'BIGINT',
106
+ length: 8
107
+ },
108
+ {
109
+ name: 'u1',
110
+ type: 'TINYINT UNSIGNED',
111
+ length: 1
112
+ },
113
+ {
114
+ name: 'u2',
115
+ type: 'SMALLINT UNSIGNED',
116
+ length: 2
117
+ },
118
+ {
119
+ name: 'u4',
120
+ type: 'INT UNSIGNED',
121
+ length: 4
122
+ },
123
+ {
124
+ name: 'u8',
125
+ type: 'BIGINT UNSIGNED',
126
+ length: 8
127
+ },
128
+ {
129
+ name: 'f4',
130
+ type: 'FLOAT',
131
+ length: 4
132
+ },
133
+ {
134
+ name: 'd8',
135
+ type: 'DOUBLE',
136
+ length: 8
137
+ },
138
+ {
139
+ name: 'bnr',
140
+ type: 'VARCHAR',
141
+ length: 200
142
+ },
143
+ {
144
+ name: 'nchr',
145
+ type: 'NCHAR',
146
+ length: 200
147
+ },
148
+ {
149
+ name: 'b',
150
+ type: 'BOOL',
151
+ length: 1
152
+ },
153
+ {
154
+ name: 'nilcol',
155
+ type: 'INT',
156
+ length: 4
157
+ },
158
+ {
159
+ name: 'geo',
160
+ type: 'GEOMETRY',
161
+ length: 512
162
+ },
163
+ {
164
+ name: 'vbinary',
165
+ type: 'VARBINARY',
166
+ length: 32
167
+ },
168
+ ];
169
+ exports.jsonMeta = [
170
+ {
171
+ name: 'json_tag',
172
+ type: 'JSON',
173
+ length: 4095
174
+ },
175
+ ];
176
+ exports.tagMeta = [
177
+ {
178
+ name: 'tb',
179
+ type: 'BOOL',
180
+ length: 1
181
+ },
182
+ {
183
+ name: 'ti1',
184
+ type: 'TINYINT',
185
+ length: 1
186
+ },
187
+ {
188
+ name: 'ti2',
189
+ type: 'SMALLINT',
190
+ length: 2
191
+ },
192
+ {
193
+ name: 'ti4',
194
+ type: 'INT',
195
+ length: 4
196
+ },
197
+ {
198
+ name: 'ti8',
199
+ type: 'BIGINT',
200
+ length: 8
201
+ },
202
+ {
203
+ name: 'tu1',
204
+ type: 'TINYINT UNSIGNED',
205
+ length: 1
206
+ },
207
+ {
208
+ name: 'tu2',
209
+ type: 'SMALLINT UNSIGNED',
210
+ length: 2
211
+ },
212
+ {
213
+ name: 'tu4',
214
+ type: 'INT UNSIGNED',
215
+ length: 4
216
+ },
217
+ {
218
+ name: 'tu8',
219
+ type: 'BIGINT UNSIGNED',
220
+ length: 8
221
+ },
222
+ {
223
+ name: 'tf4',
224
+ type: 'FLOAT',
225
+ length: 4
226
+ },
227
+ {
228
+ name: 'td8',
229
+ type: 'DOUBLE',
230
+ length: 8
231
+ },
232
+ {
233
+ name: 'tbnr',
234
+ type: 'VARCHAR',
235
+ length: 200
236
+ },
237
+ {
238
+ name: 'tnchr',
239
+ type: 'NCHAR',
240
+ length: 200
241
+ },
242
+ ];
243
+ function createBaseSTable(stable) {
244
+ return `create table if not exists ${stable}( ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, g1 geometry(512), c4 varbinary(100))` +
245
+ 'tags( tb bool,ti1 tinyint,ti2 smallint,ti4 int,ti8 bigint,tu1 tinyint unsigned,tu2 smallint unsigned,tu4 int unsigned,tu8 bigint unsigned,tf4 float,td8 double,tbnr binary(200),tnchr nchar(200));';
246
+ }
247
+ exports.createBaseSTable = createBaseSTable;
248
+ function createBaseSTableJSON(stable) {
249
+ return `create table if not exists ${stable}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int)` +
250
+ 'tags(json_tag json);';
251
+ }
252
+ exports.createBaseSTableJSON = createBaseSTableJSON;
253
+ function createBaseTable(table) {
254
+ return `create table if not exists ${table}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int)`;
255
+ }
256
+ exports.createBaseTable = createBaseTable;
257
+ function createSTable(stable) {
258
+ return `create table if not exists ${stable}( ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))` +
259
+ 'tags( tb bool,ti1 tinyint,ti2 smallint,ti4 int,ti8 bigint,tu1 tinyint unsigned,tu2 smallint unsigned,tu4 int unsigned,tu8 bigint unsigned,tf4 float,td8 double,tbnr binary(200),tnchr nchar(200));';
260
+ }
261
+ exports.createSTable = createSTable;
262
+ function createSTableJSON(stable) {
263
+ return `create table if not exists ${stable}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))` +
264
+ 'tags(json_tag json);';
265
+ }
266
+ exports.createSTableJSON = createSTableJSON;
267
+ function createTable(table) {
268
+ return `create table if not exists ${table}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))`;
269
+ }
270
+ exports.createTable = createTable;
271
+ function expectStableData(rows, tags) {
272
+ let resArr = [];
273
+ rows.forEach((row, index, rows) => {
274
+ resArr.push(row.concat(tags));
275
+ });
276
+ return resArr;
277
+ }
278
+ exports.expectStableData = expectStableData;
279
+ function hexToBytes(hex) {
280
+ let byteLen = hex.length / 2;
281
+ let a = new Uint8Array(byteLen);
282
+ for (let i = 0, count = 0; i < hex.length; i += 2, count++) {
283
+ let item = parseInt(hex.slice(i, i + 2), 16);
284
+ a[count] = item;
285
+ }
286
+ return a.buffer;
287
+ }
288
+ exports.hexToBytes = hexToBytes;
289
+ function createStmtData(varbinary = "ab", geoHex = "0101000020E6100000000000000000F03F0000000000000040") {
290
+ let multi = [
291
+ [1709183268567, 1709183268568, 1709183268569],
292
+ [10.2, 10.3, 10.4],
293
+ [292, 293, 294],
294
+ [0.32, 0.33, 0.34],
295
+ ];
296
+ let res = hexToBytes(geoHex);
297
+ let geom = Array.from(new Uint8Array(res));
298
+ multi.push([geom, geom, geom]);
299
+ res = new TextEncoder().encode(varbinary);
300
+ let binary = Array.from(new Uint8Array(res));
301
+ multi.push([binary, binary, binary]);
302
+ return multi;
303
+ }
304
+ exports.createStmtData = createStmtData;
305
+ function compareUint8Arrays(arr1, arr2) {
306
+ if (arr1.length !== arr2.length) {
307
+ log_1.default.debug(`${arr1.length} !== ${arr2.length}`);
308
+ return false;
309
+ }
310
+ for (let i = 0; i < arr1.length; i++) {
311
+ if (arr1[i] !== arr2[i]) {
312
+ log_1.default.debug(`${arr1[i]} !== ${arr2[i]}`);
313
+ return false;
314
+ }
315
+ }
316
+ return true;
317
+ }
318
+ exports.compareUint8Arrays = compareUint8Arrays;