@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,297 @@
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("../utils");
7
+ // const DSN = 'ws://root:taosdata@127.0.0.1:6041'
8
+ let dsn = 'ws://root:taosdata@localhost:6041';
9
+ let conf = new config_1.WSConfig(dsn);
10
+ const resultMap = new Map();
11
+ resultMap.set("POINT (4.0 8.0)", (0, utils_1.hexToBytes)("010100000000000000000010400000000000002040"));
12
+ resultMap.set("POINT (3.0 5.0)", (0, utils_1.hexToBytes)("010100000000000000000008400000000000001440"));
13
+ resultMap.set("LINESTRING (1.000000 1.000000, 2.000000 2.000000, 5.000000 5.000000)", (0, utils_1.hexToBytes)("010200000003000000000000000000f03f000000000000f03f0000000000000040000000000000004000000000000014400000000000001440"));
14
+ resultMap.set("POLYGON ((3.000000 6.000000, 5.000000 6.000000, 5.000000 8.000000, 3.000000 8.000000, 3.000000 6.000000))", (0, utils_1.hexToBytes)("010300000001000000050000000000000000000840000000000000184000000000000014400000000000001840000000000000144000000000000020400000000000000840000000000000204000000000000008400000000000001840"));
15
+ resultMap.set("POINT (7.0 9.0)", (0, utils_1.hexToBytes)("01010000000000000000001c400000000000002240"));
16
+ resultMap.set("0x7661726332", (0, utils_1.hexToBytes)("307837363631373236333332"));
17
+ resultMap.set("0x7661726333", (0, utils_1.hexToBytes)("307837363631373236333333"));
18
+ resultMap.set("0x7661726334", (0, utils_1.hexToBytes)("307837363631373236333334"));
19
+ resultMap.set("0x7661726335", (0, utils_1.hexToBytes)("307837363631373236333335"));
20
+ const table = 'ws_q_n';
21
+ const stable = 'ws_q_s';
22
+ const tableCN = 'ws_q_n_cn';
23
+ const stableCN = 'ws_q_s_cn';
24
+ const db = 'ws_q_db';
25
+ const jsonTable = 'ws_q_j';
26
+ const jsonTableCN = 'ws_q_j_cn';
27
+ const createDB = `create database if not exists ${db} keep 3650`;
28
+ const dropDB = `drop database if exists ${db}`;
29
+ const useDB = `use ${db}`;
30
+ 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'];
31
+ const stableCNTags = [false, -1 * 2, -2 * 2, -3 * 2, BigInt(-4 * 2), 1 * 2, 2 * 2, 3 * 2, BigInt(4 * 2), parseFloat((3.1415 * 2).toFixed(5)), parseFloat((3.14159265 * 2).toFixed(15)), 'varchar_标签_壹', 'nchar_标签_贰'];
32
+ const tableValues = [
33
+ [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'],
34
+ [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'],
35
+ [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'],
36
+ [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'],
37
+ [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'],
38
+ ];
39
+ const tableCNValues = [
40
+ [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'],
41
+ [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'],
42
+ [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'],
43
+ [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'],
44
+ [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'],
45
+ ];
46
+ const jsonTags = ["{\"key1\":\"taos\",\"key2\":null,\"key3\":\"TDengine\",\"key4\":0,\"key5\":false}"];
47
+ const jsonTagsCN = ["{\"key1\":\"taosdata\",\"key2\":null,\"key3\":\"TDengine涛思数据\",\"key4\":1,\"key5\":true}"];
48
+ const selectStable = `select * from ${stable}`;
49
+ const selectStableCN = `select * from ${stableCN}`;
50
+ const selectTable = `select * from ${table}`;
51
+ const selectTableCN = `select * from ${tableCN}`;
52
+ const selectJsonTable = `select * from ${jsonTable}`;
53
+ const selectJsonTableCN = `select * from ${jsonTableCN}`;
54
+ beforeAll(async () => {
55
+ let ws = await wsSql_1.WsSql.open(conf);
56
+ await ws.exec(dropDB);
57
+ await ws.exec(createDB);
58
+ await ws.exec(useDB);
59
+ await ws.exec((0, utils_1.createSTable)(stable));
60
+ await ws.exec((0, utils_1.createSTable)(stableCN));
61
+ await ws.exec((0, utils_1.createTable)(table));
62
+ await ws.exec((0, utils_1.createTable)(tableCN));
63
+ await ws.exec((0, utils_1.createSTableJSON)(jsonTable));
64
+ await ws.exec((0, utils_1.createSTableJSON)(jsonTableCN));
65
+ await ws.close();
66
+ });
67
+ describe('ws.query(stable)', () => {
68
+ jest.setTimeout(20 * 1000);
69
+ test('Insert query stable without CN character', async () => {
70
+ let ws = await wsSql_1.WsSql.open(conf);
71
+ await ws.exec(useDB);
72
+ let insert = (0, utils_1.insertStable)(tableValues, stableTags, stable);
73
+ let insertRes = await ws.exec(insert);
74
+ expect(insertRes.getAffectRows()).toBe(5);
75
+ let queryRes = await ws.exec(selectStable);
76
+ let expectMeta = utils_1.tableMeta.concat(utils_1.tagMeta);
77
+ let expectData = (0, utils_1.expectStableData)(tableValues, stableTags);
78
+ let actualMeta = queryRes.getMeta();
79
+ let actualData = queryRes.getData();
80
+ await ws.close();
81
+ if (actualData && actualMeta) {
82
+ actualMeta.forEach((meta, index) => {
83
+ expect(meta.name).toBe(expectMeta[index].name);
84
+ expect(meta.type).toBe(expectMeta[index].type);
85
+ expect(meta.length).toBe(expectMeta[index].length);
86
+ });
87
+ for (let i = 0; i < actualData.length; i++) {
88
+ actualData[i].forEach((d, index) => {
89
+ // // console.log(i, index, d, expectData[i][index])
90
+ if (expectMeta[index].name == 'geo' || expectMeta[index].name == 'vbinary') {
91
+ let buffer = resultMap.get(expectData[i][index]);
92
+ if (buffer) {
93
+ let dbData = d;
94
+ console.log(i, index, dbData, expectData[i][index], buffer, (0, utils_1.compareUint8Arrays)(new Uint8Array(dbData), new Uint8Array(buffer)));
95
+ expect((0, utils_1.compareUint8Arrays)(new Uint8Array(dbData), new Uint8Array(buffer))).toBe(true);
96
+ }
97
+ }
98
+ else {
99
+ expect(d).toBe(expectData[i][index]);
100
+ }
101
+ });
102
+ }
103
+ }
104
+ else {
105
+ throw new Error("retrieve empty result");
106
+ }
107
+ });
108
+ test('query stable with CN character', async () => {
109
+ let ws = await wsSql_1.WsSql.open(conf);
110
+ await ws.exec(useDB);
111
+ let insertCN = (0, utils_1.insertStable)(tableCNValues, stableCNTags, stableCN);
112
+ // console.log(insertCN)
113
+ let insertRes = await ws.exec(insertCN);
114
+ // console.log(insertRes)
115
+ expect(insertRes.getAffectRows()).toBe(5);
116
+ let queryRes = await ws.exec(selectStableCN);
117
+ let expectMeta = utils_1.tableMeta.concat(utils_1.tagMeta);
118
+ let expectData = (0, utils_1.expectStableData)(tableCNValues, stableCNTags);
119
+ let actualMeta = queryRes.getMeta();
120
+ let actualData = queryRes.getData();
121
+ await ws.close();
122
+ if (actualData && actualMeta) {
123
+ actualMeta.forEach((meta, index) => {
124
+ expect(meta.name).toBe(expectMeta[index].name);
125
+ expect(meta.type).toBe(expectMeta[index].type);
126
+ expect(meta.length).toBe(expectMeta[index].length);
127
+ });
128
+ for (let i = 0; i < actualData.length; i++) {
129
+ actualData[i].forEach((d, index) => {
130
+ if (expectMeta[index].name == 'geo' || expectMeta[index].name == 'vbinary') {
131
+ let buffer = resultMap.get(expectData[i][index]);
132
+ if (buffer) {
133
+ let dbData = d;
134
+ console.log(i, index, dbData, expectData[i][index], buffer, (0, utils_1.compareUint8Arrays)(new Uint8Array(dbData), new Uint8Array(buffer)));
135
+ expect((0, utils_1.compareUint8Arrays)(new Uint8Array(dbData), new Uint8Array(buffer))).toBe(true);
136
+ }
137
+ }
138
+ else {
139
+ expect(d).toBe(expectData[i][index]);
140
+ }
141
+ });
142
+ }
143
+ }
144
+ else {
145
+ throw new Error("retrieve empty result");
146
+ }
147
+ });
148
+ });
149
+ describe('ws.query(table)', () => {
150
+ test('Insert query normal table without CN character', async () => {
151
+ let ws = await wsSql_1.WsSql.open(conf);
152
+ await ws.exec(useDB);
153
+ let insert = (0, utils_1.insertNTable)(tableValues, table);
154
+ // console.log(insert)
155
+ let insertRes = await ws.exec(insert);
156
+ expect(insertRes.getAffectRows()).toBe(5);
157
+ let queryRes = await ws.exec(selectTable);
158
+ let expectMeta = utils_1.tableMeta;
159
+ let expectData = tableValues;
160
+ let actualMeta = queryRes.getMeta();
161
+ let actualData = queryRes.getData();
162
+ await ws.close();
163
+ if (actualData && actualMeta) {
164
+ actualMeta.forEach((meta, index) => {
165
+ // console.log(meta,expectMeta[index]);
166
+ expect(meta.name).toBe(expectMeta[index].name);
167
+ expect(meta.type).toBe(expectMeta[index].type);
168
+ expect(meta.length).toBe(expectMeta[index].length);
169
+ });
170
+ for (let i = 0; i < actualData.length; i++) {
171
+ actualData[i].forEach((d, index) => {
172
+ if (expectMeta[index].name == 'geo' || expectMeta[index].name == 'vbinary') {
173
+ expect(d).toBeTruthy();
174
+ }
175
+ else {
176
+ expect(d).toBe(expectData[i][index]);
177
+ }
178
+ });
179
+ }
180
+ }
181
+ else {
182
+ throw new Error("retrieve empty result");
183
+ }
184
+ });
185
+ test('Insert query normal table with CN character', async () => {
186
+ let ws = await wsSql_1.WsSql.open(conf);
187
+ await ws.exec(useDB);
188
+ let insertCN = (0, utils_1.insertNTable)(tableCNValues, tableCN);
189
+ // console.log(insertCN)
190
+ let insertRes = await ws.exec(insertCN);
191
+ // console.log(insertRes)
192
+ expect(insertRes.getAffectRows()).toBe(5);
193
+ let queryRes = await ws.exec(selectTableCN);
194
+ let expectMeta = utils_1.tableMeta;
195
+ let expectData = tableCNValues;
196
+ let actualMeta = queryRes.getMeta();
197
+ let actualData = queryRes.getData();
198
+ await ws.close();
199
+ if (actualData && actualMeta) {
200
+ actualMeta.forEach((meta, index) => {
201
+ // console.log(meta, expectMeta[index]);
202
+ expect(meta.name).toBe(expectMeta[index].name);
203
+ expect(meta.type).toBe(expectMeta[index].type);
204
+ expect(meta.length).toBe(expectMeta[index].length);
205
+ });
206
+ for (let i = 0; i < actualData.length; i++) {
207
+ actualData[i].forEach((d, index) => {
208
+ if (expectMeta[index].name == 'geo' || expectMeta[index].name == 'vbinary') {
209
+ expect(d).toBeTruthy();
210
+ }
211
+ else {
212
+ expect(d).toBe(expectData[i][index]);
213
+ }
214
+ });
215
+ }
216
+ }
217
+ else {
218
+ throw new Error("retrieve empty result");
219
+ }
220
+ });
221
+ });
222
+ describe('ws.query(jsonTable)', () => {
223
+ test('Insert and query json data from table without CN', async () => {
224
+ let ws = await wsSql_1.WsSql.open(conf);
225
+ await ws.exec(useDB);
226
+ let insert = (0, utils_1.insertStable)(tableValues, jsonTags, jsonTable);
227
+ // console.log(insert)
228
+ let insertRes = await ws.exec(insert);
229
+ expect(insertRes.getAffectRows()).toBe(5);
230
+ let queryRes = await ws.exec(selectJsonTable);
231
+ let expectMeta = utils_1.tableMeta.concat(utils_1.jsonMeta);
232
+ let expectData = (0, utils_1.expectStableData)(tableValues, jsonTags);
233
+ let actualMeta = queryRes.getMeta();
234
+ let actualData = queryRes.getData();
235
+ await ws.close();
236
+ if (actualData && actualMeta) {
237
+ actualMeta.forEach((meta, index) => {
238
+ // console.log(meta);
239
+ expect(meta.name).toBe(expectMeta[index].name);
240
+ expect(meta.type).toBe(expectMeta[index].type);
241
+ expect(meta.length).toBe(expectMeta[index].length);
242
+ });
243
+ for (let i = 0; i < actualData.length; i++) {
244
+ actualData[i].forEach((d, index) => {
245
+ if (expectMeta[index].name == 'geo' || expectMeta[index].name == 'vbinary') {
246
+ expect(d).toBeTruthy();
247
+ }
248
+ else {
249
+ expect(d).toBe(expectData[i][index]);
250
+ }
251
+ });
252
+ }
253
+ }
254
+ else {
255
+ throw new Error("retrieve empty result");
256
+ }
257
+ });
258
+ test('Insert and query json data from table with CN', async () => {
259
+ let ws = await wsSql_1.WsSql.open(conf);
260
+ await ws.exec(useDB);
261
+ let insert = (0, utils_1.insertStable)(tableCNValues, jsonTagsCN, jsonTableCN);
262
+ // console.log(insert)
263
+ let insertRes = await ws.exec(insert);
264
+ expect(insertRes.getAffectRows()).toBe(5);
265
+ let queryRes = await ws.exec(selectJsonTableCN);
266
+ let expectMeta = utils_1.tableMeta.concat(utils_1.jsonMeta);
267
+ let expectData = (0, utils_1.expectStableData)(tableCNValues, jsonTagsCN);
268
+ let actualMeta = queryRes.getMeta();
269
+ let actualData = queryRes.getData();
270
+ await ws.close();
271
+ if (actualData && actualMeta) {
272
+ actualMeta.forEach((meta, index) => {
273
+ // console.log(meta);
274
+ expect(meta.name).toBe(expectMeta[index].name);
275
+ expect(meta.type).toBe(expectMeta[index].type);
276
+ expect(meta.length).toBe(expectMeta[index].length);
277
+ });
278
+ for (let i = 0; i < actualData.length; i++) {
279
+ actualData[i].forEach((d, index) => {
280
+ if (expectMeta[index].name == 'geo' || expectMeta[index].name == 'vbinary') {
281
+ expect(d).toBeTruthy();
282
+ }
283
+ else {
284
+ expect(d).toBe(expectData[i][index]);
285
+ }
286
+ });
287
+ }
288
+ }
289
+ else {
290
+ throw new Error("retrieve empty result");
291
+ }
292
+ });
293
+ });
294
+ afterAll(async () => {
295
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
296
+ });
297
+ //--detectOpenHandles --maxConcurrency=1 --forceExit
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schemaless.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaless.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/schemaless.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
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 wsProto_1 = require("../../src/sql/wsProto");
6
+ const wsSql_1 = require("../../src/sql/wsSql");
7
+ let dns = 'ws://localhost:6041';
8
+ beforeAll(async () => {
9
+ let conf = new config_1.WSConfig(dns);
10
+ conf.setUser('root');
11
+ conf.setPwd('taosdata');
12
+ let wsSql = await wsSql_1.WsSql.open(conf);
13
+ await wsSql.exec('create database if not exists power KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;');
14
+ await wsSql.exec('CREATE STABLE if not exists power.meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);');
15
+ await wsSql.close();
16
+ });
17
+ describe('TDWebSocket.WsSchemaless()', () => {
18
+ jest.setTimeout(20 * 1000);
19
+ let influxdbData = "st,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000";
20
+ let telnetData = "stb0_0 1626006833 4 host=host0 interface=eth0";
21
+ let jsonData = "{\"metric\": \"meter_current\",\"timestamp\": 1626846400,\"value\": 10.3, \"tags\": {\"groupid\": 2, \"location\": \"California.SanFrancisco\", \"id\": \"d1001\"}}";
22
+ test('normal connect', async () => {
23
+ let conf = new config_1.WSConfig(dns);
24
+ conf.setUser('root');
25
+ conf.setPwd('taosdata');
26
+ conf.setDb('power');
27
+ let wsSchemaless = await wsSql_1.WsSql.open(conf);
28
+ expect(wsSchemaless.state()).toBeGreaterThan(0);
29
+ await wsSchemaless.close();
30
+ });
31
+ test('connect db with error', async () => {
32
+ expect.assertions(1);
33
+ let wsSchemaless = null;
34
+ try {
35
+ let conf = new config_1.WSConfig(dns);
36
+ conf.setUser('root');
37
+ conf.setPwd('taosdata');
38
+ conf.setDb('jest');
39
+ wsSchemaless = await wsSql_1.WsSql.open(conf);
40
+ }
41
+ catch (e) {
42
+ console.log(e);
43
+ expect(e.message).toMatch('Database not exist');
44
+ }
45
+ finally {
46
+ if (wsSchemaless) {
47
+ await wsSchemaless.close();
48
+ }
49
+ }
50
+ });
51
+ test('normal insert', async () => {
52
+ let conf = new config_1.WSConfig(dns);
53
+ conf.setUser('root');
54
+ conf.setPwd('taosdata');
55
+ conf.setDb('power');
56
+ let wsSchemaless = await wsSql_1.WsSql.open(conf);
57
+ expect(wsSchemaless.state()).toBeGreaterThan(0);
58
+ await wsSchemaless.schemalessInsert([influxdbData], wsProto_1.SchemalessProto.InfluxDBLineProtocol, wsProto_1.Precision.NANO_SECONDS, 0);
59
+ await wsSchemaless.schemalessInsert([telnetData], wsProto_1.SchemalessProto.OpenTSDBTelnetLineProtocol, wsProto_1.Precision.SECONDS, 0);
60
+ await wsSchemaless.schemalessInsert([jsonData], wsProto_1.SchemalessProto.OpenTSDBJsonFormatProtocol, wsProto_1.Precision.SECONDS, 0);
61
+ await wsSchemaless.close();
62
+ });
63
+ test('normal wsSql insert', async () => {
64
+ let conf = new config_1.WSConfig(dns);
65
+ conf.setUser('root');
66
+ conf.setPwd('taosdata');
67
+ conf.setDb('power');
68
+ let wsSchemaless = await wsSql_1.WsSql.open(conf);
69
+ expect(wsSchemaless.state()).toBeGreaterThan(0);
70
+ await wsSchemaless.schemalessInsert([influxdbData], wsProto_1.SchemalessProto.InfluxDBLineProtocol, wsProto_1.Precision.NOT_CONFIGURED, 0);
71
+ await wsSchemaless.schemalessInsert([influxdbData], wsProto_1.SchemalessProto.InfluxDBLineProtocol, wsProto_1.Precision.NANO_SECONDS, 0);
72
+ await wsSchemaless.schemalessInsert([telnetData], wsProto_1.SchemalessProto.OpenTSDBTelnetLineProtocol, wsProto_1.Precision.SECONDS, 0);
73
+ await wsSchemaless.schemalessInsert([jsonData], wsProto_1.SchemalessProto.OpenTSDBJsonFormatProtocol, wsProto_1.Precision.SECONDS, 0);
74
+ await wsSchemaless.close();
75
+ });
76
+ test('SchemalessProto error', async () => {
77
+ let conf = new config_1.WSConfig(dns);
78
+ conf.setUser('root');
79
+ conf.setPwd('taosdata');
80
+ conf.setDb('power');
81
+ let wsSchemaless = await wsSql_1.WsSql.open(conf);
82
+ expect(wsSchemaless.state()).toBeGreaterThan(0);
83
+ try {
84
+ await wsSchemaless.schemalessInsert([influxdbData], wsProto_1.SchemalessProto.OpenTSDBTelnetLineProtocol, wsProto_1.Precision.NANO_SECONDS, 0);
85
+ }
86
+ catch (e) {
87
+ expect(e.message).toMatch('invalid timestamp');
88
+ }
89
+ await wsSchemaless.close();
90
+ });
91
+ });
92
+ afterAll(async () => {
93
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
94
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sql.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/sql.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,124 @@
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
+ beforeAll(async () => {
7
+ let dns = 'ws://localhost:6041';
8
+ let conf = new config_1.WSConfig(dns);
9
+ conf.setUser('root');
10
+ conf.setPwd('taosdata');
11
+ let wsSql = await wsSql_1.WsSql.open(conf);
12
+ await wsSql.exec('create database if not exists power KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;');
13
+ await wsSql.exec('use power');
14
+ await wsSql.exec('CREATE STABLE if not exists power.meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);');
15
+ await wsSql.close();
16
+ });
17
+ describe('TDWebSocket.WsSql()', () => {
18
+ jest.setTimeout(20 * 1000);
19
+ test('normal connect', async () => {
20
+ let dsn = 'ws://root:taosdata@localhost:6041';
21
+ let wsSql = null;
22
+ let conf = new config_1.WSConfig(dsn);
23
+ conf.setDb('power');
24
+ wsSql = await wsSql_1.WsSql.open(conf);
25
+ expect(wsSql.state()).toBeGreaterThan(0);
26
+ await wsSql.close();
27
+ });
28
+ test('connect db with error', async () => {
29
+ expect.assertions(1);
30
+ let wsSql = null;
31
+ try {
32
+ let dsn = 'ws://root:taosdata@localhost:6041';
33
+ let conf = new config_1.WSConfig(dsn);
34
+ conf.setDb('jest');
35
+ wsSql = await wsSql_1.WsSql.open(conf);
36
+ }
37
+ catch (e) {
38
+ let err = e;
39
+ expect(err.message).toMatch('Database not exist');
40
+ }
41
+ finally {
42
+ if (wsSql) {
43
+ await wsSql.close();
44
+ }
45
+ }
46
+ });
47
+ test('get taosc version', async () => {
48
+ let dsn = 'ws://root:taosdata@localhost:6041';
49
+ let conf = new config_1.WSConfig(dsn);
50
+ let wsSql = await wsSql_1.WsSql.open(conf);
51
+ let version = await wsSql.version();
52
+ await wsSql.close();
53
+ console.log(version);
54
+ expect(version).toBeTruthy();
55
+ });
56
+ test('show databases', async () => {
57
+ let dsn = 'ws://root:taosdata@localhost:6041';
58
+ let conf = new config_1.WSConfig(dsn);
59
+ let wsSql = await wsSql_1.WsSql.open(conf);
60
+ let taosResult = await wsSql.exec('show databases');
61
+ await wsSql.close();
62
+ console.log(taosResult);
63
+ expect(taosResult).toBeTruthy();
64
+ });
65
+ test('create databases', async () => {
66
+ let dsn = 'ws://root:taosdata@localhost:6041';
67
+ let conf = new config_1.WSConfig(dsn);
68
+ let wsSql = await wsSql_1.WsSql.open(conf);
69
+ let taosResult = await wsSql.exec('create database if not exists power KEEP 3650 DURATION 10 BUFFER 16 WAL_LEVEL 1;');
70
+ await wsSql.close();
71
+ console.log(taosResult);
72
+ expect(taosResult).toBeTruthy();
73
+ });
74
+ test('create stable', async () => {
75
+ let dsn = 'ws://root:taosdata@localhost:6041';
76
+ let conf = new config_1.WSConfig(dsn);
77
+ let wsSql = await wsSql_1.WsSql.open(conf);
78
+ let taosResult = await wsSql.exec('use power');
79
+ console.log(taosResult);
80
+ expect(taosResult).toBeTruthy();
81
+ taosResult = await wsSql.exec('CREATE STABLE if not exists meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupId int);');
82
+ await wsSql.close();
83
+ console.log(taosResult);
84
+ expect(taosResult).toBeTruthy();
85
+ });
86
+ test('insert recoder', async () => {
87
+ let dsn = 'ws://root:taosdata@localhost:6041';
88
+ let conf = new config_1.WSConfig(dsn);
89
+ let wsSql = await wsSql_1.WsSql.open(conf);
90
+ let taosResult = await wsSql.exec('use power');
91
+ console.log(taosResult);
92
+ expect(taosResult).toBeTruthy();
93
+ taosResult = await wsSql.exec('describe meters');
94
+ console.log(taosResult);
95
+ taosResult = await wsSql.exec('INSERT INTO d1001 USING meters (location, groupid) TAGS ("California.SanFrancisco", 3) VALUES (NOW, 10.2, 219, 0.32)');
96
+ console.log(taosResult);
97
+ expect(taosResult.getAffectRows()).toBeGreaterThanOrEqual(1);
98
+ await wsSql.close();
99
+ });
100
+ test('query sql', async () => {
101
+ let dsn = 'ws://root:taosdata@localhost:6041';
102
+ let conf = new config_1.WSConfig(dsn);
103
+ let wsSql = await wsSql_1.WsSql.open(conf);
104
+ let taosResult = await wsSql.exec('use power');
105
+ console.log(taosResult);
106
+ expect(taosResult).toBeTruthy();
107
+ for (let i = 0; i < 10; i++) {
108
+ let wsRows = await wsSql.query('select * from meters limit 3');
109
+ expect(wsRows).toBeTruthy();
110
+ let meta = wsRows.getMeta();
111
+ expect(meta).toBeTruthy();
112
+ console.log("wsRow:meta:=>", meta);
113
+ while (await wsRows.next()) {
114
+ let result = await wsRows.getData();
115
+ expect(result).toBeTruthy();
116
+ }
117
+ await wsRows.close();
118
+ }
119
+ await wsSql.close();
120
+ });
121
+ });
122
+ afterAll(async () => {
123
+ wsConnectorPool_1.WebSocketConnectionPool.instance().destroyed();
124
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stmt.func.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stmt.func.test.d.ts","sourceRoot":"","sources":["../../../test/bulkPulling/stmt.func.test.ts"],"names":[],"mappings":""}