test.js 2.9 KB
Newer Older
S
StoneT2000 已提交
1
const taos = require('../tdengine');
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
var conn = taos.connect({host:"127.0.0.1", user:"root", password:"taosdata", config:"/etc/taos",port:0});
var c1 = conn.cursor();
let stime = new Date();
let interval = 1000;

function convertDateToTS(date) {
  let tsArr = date.toISOString().split("T")
  return "\"" + tsArr[0] + " " + tsArr[1].substring(0, tsArr[1].length-1) + "\"";
}
function R(l,r) {
  return Math.random() * (r - l) - r;
}
function randomBool() {
  if (Math.random() <  0.5) {
    return true;
  }
  return false;
}
S
StoneT2000 已提交
20 21 22 23

// Initialize

c1.execute('create database if not exists td_connector_test;');
24 25 26
c1.execute('use td_connector_test;')
c1.execute('create table if not exists all_types (ts timestamp, _int int, _bigint bigint, _float float, _double double, _binary binary(40), _smallint smallint, _tinyint tinyint, _bool bool, _nchar nchar(40));');

S
StoneT2000 已提交
27 28 29 30 31

// Shell Test : The following uses the cursor to imitate the taos shell

// Insert
for (let i = 0; i < 5000; i++) {
32 33 34 35 36 37 38 39 40 41 42
  stime.setMilliseconds(stime.getMilliseconds() + interval);
  let insertData = [convertDateToTS(stime), // Timestamp
                    parseInt( R(-Math.pow(2,31) + 1 , Math.pow(2,31) - 1) ), // Int
                    parseInt( R(-Math.pow(2,31) + 1 , Math.pow(2,31) - 1) ), // BigInt
                    parseFloat( R(-3.4E38, 3.4E38) ), // Float
                    parseFloat( R(-1.7E308, 1.7E308) ), // Double
                    "\"Long Binary\"", // Binary
                    parseInt( R(-32767, 32767) ), // Small Int
                    parseInt( R(-127, 127) ), // Tiny Int
                    randomBool(),
                    "\"Nchars 一些中文字幕\""]; // Bool
S
StoneT2000 已提交
43 44 45 46
  c1.execute('insert into td_connector_test.all_types values(' + insertData.join(',') + ' );', {quiet:true});
  if (i % 1000 == 0) {
    console.log("Insert # " , i);
  }
47 48
}

S
StoneT2000 已提交
49
// Select
50 51
c1.execute('select * from td_connector_test.all_types limit 10 offset 1000;');
var d = c1.fetchall();
S
StoneT2000 已提交
52
console.log(c1.fields);
53 54
console.log(d);

S
StoneT2000 已提交
55
// Functions
56 57
c1.execute('select count(*), avg(_int), sum(_float), max(_bigint), min(_double) from td_connector_test.all_types;');
var d = c1.fetchall();
S
StoneT2000 已提交
58
console.log(c1.fields);
59 60
console.log(d);

S
StoneT2000 已提交
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
//Immediate Execution like the Shell

c1.query('select count(*), stddev(_double), min(_tinyint) from all_types where _tinyint > 50 and _int < 0', true).then(function(result){
  result.pretty();
})
c1.query('select _tinyint, _bool from all_types where _tinyint > 50 and _int < 0 limit 50;', true).then(function(result){
  result.pretty();
})
c1.query('select stddev(_double), stddev(_bigint), stddev(_float) from all_types', true).then(function(result){
  result.pretty();
})

var q = c1.query('select * from td_connector_test.all_types where ts >= ? and _int > ? limit 100 offset 40;').bind(new Date(1231), 100).execute().then(function(r) {
  r.pretty();
});
console.log(q._query);

78 79 80
c1.execute('drop database td_connector_test;')

conn.close();