mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
* [TD-14544]<feature>: taosdump data inspect * [TS-14544]<feature>: taosdump data inspect add test case * add inspect case to parallel test
442 lines
18 KiB
Python
442 lines
18 KiB
Python
###################################################################
|
|
# Copyright (c) 2016 by TAOS Technologies, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This file is proprietary and confidential to TAOS Technologies.
|
|
# No part of this file may be reproduced, stored, transmitted,
|
|
# disclosed or used in any form or by any means other than as
|
|
# expressly provided by the written permission from Jianhui Tao
|
|
#
|
|
###################################################################
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import sys
|
|
import os
|
|
from util.log import *
|
|
from util.cases import *
|
|
from util.sql import *
|
|
from util.dnodes import *
|
|
|
|
|
|
class TDTestCase:
|
|
def init(self, conn, logSql):
|
|
tdLog.debug("start to execute %s" % __file__)
|
|
tdSql.init(conn.cursor(), logSql)
|
|
|
|
self.ts = 1538548685000
|
|
self.numberOfTables = 10000
|
|
self.numberOfRecords = 100
|
|
|
|
def checkCommunity(self):
|
|
selfPath = os.path.dirname(os.path.realpath(__file__))
|
|
if ("community" in selfPath):
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
def getPath(self, tool="taosdump"):
|
|
selfPath = os.path.dirname(os.path.realpath(__file__))
|
|
|
|
if ("community" in selfPath):
|
|
projPath = selfPath[:selfPath.find("community")]
|
|
else:
|
|
projPath = selfPath[:selfPath.find("tests")]
|
|
|
|
paths = []
|
|
for root, dirs, files in os.walk(projPath):
|
|
if ((tool) in files):
|
|
rootRealPath = os.path.dirname(os.path.realpath(root))
|
|
if ("packaging" not in rootRealPath):
|
|
paths.append(os.path.join(root, tool))
|
|
break
|
|
if (len(paths) == 0):
|
|
return ""
|
|
return paths[0]
|
|
|
|
def insert_data(self, tbname, ts_start, count):
|
|
pre_insert = "insert into %s values" % tbname
|
|
sql = pre_insert
|
|
tdLog.debug("doing insert table %s rows=%d ..." % (tbname, count))
|
|
for i in range(count):
|
|
sql += " (%d,%d)" % (ts_start + i * 1000, i)
|
|
if i > 0 and i % 30000 == 0:
|
|
tdSql.execute(sql)
|
|
sql = pre_insert
|
|
# end sql
|
|
if sql != pre_insert:
|
|
tdSql.execute(sql)
|
|
|
|
tdLog.debug("INSERT TABLE DATA ............ [OK]")
|
|
return
|
|
|
|
def run(self):
|
|
if not os.path.exists("./taosdumptest"):
|
|
os.makedirs("./taosdumptest")
|
|
else:
|
|
os.system("rm -rf ./taosdumptest")
|
|
os.makedirs("./taosdumptest")
|
|
|
|
for i in range(2):
|
|
if not os.path.exists("./taosdumptest/tmp%d" % i):
|
|
os.makedirs("./taosdumptest/tmp%d" % i)
|
|
else:
|
|
os.system("rm -rf ./taosdumptest/tmp%d" % i)
|
|
os.makedirs("./taosdumptest/tmp%d" % i)
|
|
|
|
binPath = self.getPath("taosdump")
|
|
if (binPath == ""):
|
|
tdLog.exit("taosdump not found!")
|
|
else:
|
|
tdLog.info("taosdump found: %s" % binPath)
|
|
|
|
# create db1 , one stables and one table ; create general tables
|
|
tdSql.execute("drop database if exists dp1")
|
|
tdSql.execute("drop database if exists dp2")
|
|
tdSql.execute("create database if not exists dp1")
|
|
tdSql.execute("use dp1")
|
|
tdSql.execute(
|
|
'''create table st0(ts timestamp, c1 tinyint, c2 smallint, c3 int, c4 bigint, c5 float, c6 double,
|
|
c7 bool, c8 binary(20), c9 nchar(20), c11 tinyint unsigned, c12 smallint unsigned, c13 int unsigned, c14 bigint unsigned, c15 timestamp )
|
|
tags(t1 tinyint, t2 smallint, t3 int, t4 bigint, t5 float, t6 double, t7 bool, t8 binary(20), t9 nchar(20), t11 tinyint unsigned,
|
|
t12 smallint unsigned, t13 int unsigned, t14 bigint unsigned, t15 timestamp)''')
|
|
tdSql.execute(
|
|
'''create table st1(ts timestamp, c1 tinyint, c2 smallint, c3 int, c4 bigint, c5 float, c6 double,
|
|
c7 bool, c8 binary(20), c9 nchar(20), c11 tinyint unsigned, c12 smallint unsigned, c13 int unsigned, c14 bigint unsigned, c15 timestamp ) tags(jtag json)''')
|
|
|
|
intData = []
|
|
floatData = []
|
|
rowNum = 10
|
|
tabNum = 10
|
|
ts = 1537146000000
|
|
for j in range(tabNum):
|
|
tdSql.execute(
|
|
"create table st0_%d using st0 tags( %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d, %d);" %
|
|
(j,
|
|
j +
|
|
1,
|
|
j +
|
|
1,
|
|
j +
|
|
1,
|
|
j +
|
|
1,
|
|
j +
|
|
0.1,
|
|
j +
|
|
0.1,
|
|
j %
|
|
2,
|
|
j +
|
|
1,
|
|
j +
|
|
1,
|
|
j +
|
|
1,
|
|
j +
|
|
1,
|
|
j +
|
|
1,
|
|
j +
|
|
1,
|
|
ts))
|
|
for i in range(rowNum):
|
|
tdSql.execute(
|
|
"insert into st0_%d values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d, %d)" %
|
|
(j, ts + i, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i %
|
|
2, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, ts))
|
|
intData.append(i + 1)
|
|
floatData.append(i + 0.1)
|
|
rowNum = 20
|
|
tabNum = 20
|
|
for j in range(tabNum):
|
|
tdSql.execute(
|
|
"create table st1_%d using st1 tags('{\"nv\":null,\"tea\":true,\"\":false,\" \":123%d,\"tea\":false}');" %
|
|
(j, j + 1))
|
|
for i in range(rowNum):
|
|
tdSql.execute(
|
|
"insert into st1_%d values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d, %d)" %
|
|
(j, self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i %
|
|
2, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, self.ts))
|
|
intData.append(i + 1)
|
|
floatData.append(i + 0.1)
|
|
# os.system("%staosBenchmark -f tools/taosdump-insert-dp1.json -y " % benchBinPath)
|
|
|
|
# create db1 , three stables:stb0,include ctables stb0_0 \ stb0_1,stb1 include ctables stb1_0 and stb1_1
|
|
# \stb3,include ctables stb3_0 and stb3_1
|
|
# create general three tables gt0 gt1 gt2
|
|
tdSql.execute("create database if not exists dp2")
|
|
tdSql.execute("use dp2")
|
|
tdSql.execute(
|
|
"create stable st0(ts timestamp, c01 int, c02 nchar(10)) tags(t1 int)")
|
|
tdSql.execute(
|
|
"create table st0_0 using st0 tags(0) st0_1 using st0 tags(1) ")
|
|
tdSql.execute(
|
|
"insert into st0_0 values(1614218412000,8600,'R')(1614218422000,8600,'E')")
|
|
tdSql.execute(
|
|
"insert into st0_1 values(1614218413000,8601,'A')(1614218423000,8601,'D')")
|
|
tdSql.execute(
|
|
"create stable st1(ts timestamp, c11 float, c12 nchar(10)) tags(t1 int)")
|
|
tdSql.execute(
|
|
"create table st1_0 using st1 tags(0) st1_1 using st1 tags(1) ")
|
|
tdSql.execute(
|
|
"insert into st1_0 values(1614218412000,8610.1,'R')(1614218422000,8610.1,'E')")
|
|
tdSql.execute(
|
|
"insert into st1_1 values(1614218413000,8611.2,'A')(1614218423000,8611.1,'D')")
|
|
tdSql.execute(
|
|
"create stable st2(ts timestamp, c21 float, c22 nchar(10)) tags(t1 int)")
|
|
tdSql.execute(
|
|
"create table st20 using st2 tags(0) st21 using st2 tags(1) ")
|
|
tdSql.execute(
|
|
"insert into st20 values(1614218412000,8620.3,'R')(1614218422000,8620.3,'E')")
|
|
tdSql.execute(
|
|
"insert into st21 values(1614218413000,8621.4,'A')(1614218423000,8621.4,'D')")
|
|
tdSql.execute(
|
|
"create table if not exists gt0 (ts timestamp, c00 int, c01 float) ")
|
|
tdSql.execute(
|
|
"create table if not exists gt1 (ts timestamp, c10 int, c11 double) ")
|
|
tdSql.execute(
|
|
"create table if not exists gt2 (ts timestamp, c20 int, c21 float) ")
|
|
tdSql.execute("insert into gt0 values(1614218412700,8637,78.86155)")
|
|
tdSql.execute(
|
|
"insert into gt1 values(1614218413800,8638,78.862020199)")
|
|
tdSql.execute("insert into gt2 values(1614218413900,8639,78.863)")
|
|
# self.insert_data("t", self.ts, 300*10000);
|
|
# os.system("%staosBenchmark -f tools/taosdump-insert-dp2.json -y " % benchBinPath)
|
|
|
|
# # taosdump data
|
|
# os.system("%s -o ./taosdumptest/tmp1 taosdump -h -ptaosdata -P 6030 -u root -o taosdumptest \
|
|
# -D dp1,dp3 -N -c /home/chr/TDinternal/community/sim/dnode1/cfg/taos.cfg -s -d deflate" % binPath)
|
|
os.system(
|
|
"%s -o ./taosdumptest/tmp0 -D dp2,dp1 -T 8" %
|
|
binPath)
|
|
os.system(
|
|
"%s -o ./taosdumptest/tmp1 dp2 st0 st1_0 gt0 -T 8" %
|
|
binPath)
|
|
|
|
# check taosdumptest/tmp0
|
|
tdSql.execute("drop database dp1")
|
|
tdSql.execute("drop database dp2")
|
|
os.system("%s -i ./taosdumptest/tmp0 -T 8 " % binPath)
|
|
tdSql.execute("reset query cache")
|
|
|
|
tdSql.execute("use dp1")
|
|
tdSql.query("show stables")
|
|
tdSql.checkRows(3)
|
|
for i in range(3):
|
|
for j in range(3):
|
|
if j < 2:
|
|
if tdSql.queryResult[i][0] == 'st%d' % j:
|
|
tdSql.checkData(i, 4, (j + 1) * 10)
|
|
else:
|
|
if tdSql.queryResult[i][0] == 'st%d' % j:
|
|
tdSql.checkData(i, 4, 100002)
|
|
|
|
tdSql.query("select count(*) from st0")
|
|
tdSql.checkData(0, 0, 100)
|
|
tdSql.query("select count(*) from st1")
|
|
tdSql.checkData(0, 0, 400)
|
|
tdSql.query("select count(*) from st2")
|
|
tdSql.checkData(0, 0, 1000020)
|
|
|
|
tdSql.execute("use dp2")
|
|
tdSql.query("show stables")
|
|
tdSql.checkRows(3)
|
|
for i in range(3):
|
|
for j in range(3):
|
|
if j < 2:
|
|
if tdSql.queryResult[i][0] == 'st%d' % j:
|
|
# print(i,"stb%d"%j)
|
|
tdSql.checkData(i, 4, 2)
|
|
else:
|
|
if tdSql.queryResult[i][0] == 'st%d' % j:
|
|
tdSql.checkData(i, 4, 100002)
|
|
tdSql.query("select count(*) from st0")
|
|
tdSql.checkData(0, 0, 4)
|
|
tdSql.query("select count(*) from st1")
|
|
tdSql.checkData(0, 0, 4)
|
|
tdSql.query("select count(*) from st2")
|
|
tdSql.checkData(0, 0, 1000024)
|
|
tdSql.query("select ts from gt0")
|
|
tdSql.checkData(0, 0, '2021-02-25 10:00:12.700')
|
|
tdSql.query("select c10 from gt1")
|
|
tdSql.checkData(0, 0, 8638)
|
|
tdSql.query("select c20 from gt2")
|
|
tdSql.checkData(0, 0, 8639)
|
|
|
|
# check taosdumptest/tmp1
|
|
tdSql.execute("drop database dp1")
|
|
tdSql.execute("drop database dp2")
|
|
os.system("%s -i ./taosdumptest/tmp1 -T 8 " % binPath)
|
|
tdSql.execute("reset query cache")
|
|
tdSql.execute("use dp2")
|
|
tdSql.query("show stables")
|
|
tdSql.checkRows(2)
|
|
tdSql.query("show tables")
|
|
tdSql.checkRows(4)
|
|
tdSql.query("select count(*) from st1_0")
|
|
tdSql.checkData(0, 0, 2)
|
|
tdSql.query("select ts from gt0")
|
|
tdSql.checkData(0, 0, '2021-02-25 10:00:12.700')
|
|
tdSql.error("use dp1")
|
|
tdSql.error("select count(*) from st2_0")
|
|
tdSql.error("select count(*) from gt2")
|
|
|
|
# #check taosdumptest/tmp2
|
|
# tdSql.execute("drop database dp1")
|
|
# tdSql.execute("drop database dp2")
|
|
# os.system("%s -i ./taosdumptest/tmp2 -T 8 " % binPath)
|
|
# tdSql.execute("use dp1")
|
|
# tdSql.query("show stables")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.query("show tables")
|
|
# tdSql.checkRows(3)
|
|
# tdSql.query("select c1 from st0_0 order by ts")
|
|
# tdSql.checkData(0,0,8537)
|
|
# tdSql.query("select c2 from st0_1 order by ts")
|
|
# tdSql.checkData(1,0,"D")
|
|
# tdSql.query("select * from gt0")
|
|
# tdSql.checkData(0,0,'2021-02-25 10:00:12.000')
|
|
# tdSql.checkData(0,1,637)
|
|
# tdSql.error("select count(*) from gt1")
|
|
# tdSql.error("use dp2")
|
|
|
|
# #check taosdumptest/tmp3
|
|
# tdSql.execute("drop database dp1")
|
|
# os.system("%s -i ./taosdumptest/tmp3 -T 8 " % binPath)
|
|
# tdSql.execute("use dp2")
|
|
# tdSql.query("show stables")
|
|
# tdSql.checkRows(2)
|
|
# tdSql.query("show tables")
|
|
# tdSql.checkRows(4)
|
|
# tdSql.query("select count(*) from st1_0")
|
|
# tdSql.checkData(0,0,2)
|
|
# tdSql.query("select ts from gt0")
|
|
# tdSql.checkData(0,0,'2021-02-25 10:00:12.700')
|
|
# tdSql.error("use dp1")
|
|
# tdSql.error("select count(*) from st2_0")
|
|
# tdSql.error("select count(*) from gt2")
|
|
|
|
# #check taosdumptest/tmp4
|
|
# tdSql.execute("drop database dp2")
|
|
# os.system("%s -i ./taosdumptest/tmp4 -T 8 " % binPath)
|
|
# tdSql.execute("use dp2")
|
|
# tdSql.query("show stables")
|
|
# tdSql.checkRows(2)
|
|
# tdSql.query("show tables")
|
|
# tdSql.checkRows(6)
|
|
# tdSql.query("select c20 from gt2")
|
|
# tdSql.checkData(0, 0, 8639)
|
|
# tdSql.query("select count(*) from st0_0")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select count(*) from st0_1")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select count(*) from st2_1")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select count(*) from st2_0")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.error("use dp1")
|
|
# tdSql.error("select count(*) from st1_0")
|
|
# tdSql.error("select count(*) from st1_1")
|
|
# tdSql.error("select count(*) from gt3")
|
|
|
|
# #check taosdumptest/tmp5
|
|
# tdSql.execute("drop database dp2")
|
|
# os.system("%s -i ./taosdumptest/tmp5 -T 8 " % binPath)
|
|
# tdSql.execute("use dp2")
|
|
# tdSql.query("show stables")
|
|
# tdSql.checkRows(3)
|
|
# tdSql.query("show tables")
|
|
# tdSql.checkRows(9)
|
|
# tdSql.query("select c20 from gt2")
|
|
# tdSql.checkData(0, 0, 8639)
|
|
# tdSql.query("select count(*) from st0_0")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select count(*) from st0_1")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select count(*) from st2_1")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select count(*) from st2_0")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select count(*) from st1_1")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select count(*) from st1_0")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.execute("use dp1")
|
|
# tdSql.query("show stables")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.query("show tables")
|
|
# tdSql.checkRows(4)
|
|
# tdSql.query("select c1 from st0_0 order by ts")
|
|
# tdSql.checkData(0,0,8537)
|
|
# tdSql.query("select c2 from st0_1 order by ts")
|
|
# tdSql.checkData(1,0,"D")
|
|
# tdSql.query("select * from gt0")
|
|
# tdSql.checkData(0,0,'2021-02-25 10:00:12.000')
|
|
# tdSql.checkData(0,1,637)
|
|
|
|
# # check taosdumptest/tmp6
|
|
# tdSql.execute("drop database dp1")
|
|
# tdSql.execute("drop database dp2")
|
|
# tdSql.execute("drop database dp3")
|
|
# os.system("%s -i ./taosdumptest/tmp6 -T 8 " % binPath)
|
|
# tdSql.execute("use dp3")
|
|
# tdSql.query("show databases")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.checkData(0,16,'ns')
|
|
# tdSql.query("show stables")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.query("show tables")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.query("select count(*) from st0_0")
|
|
# tdSql.checkData(0, 0, 2)
|
|
# tdSql.query("select * from st0 order by ts")
|
|
# tdSql.checkData(0,0,'2021-02-25 10:00:12.000000001')
|
|
# tdSql.checkData(0,1,8600)
|
|
|
|
# # check taosdumptest/tmp7
|
|
# tdSql.execute("drop database dp3")
|
|
# os.system("%s -i ./taosdumptest/tmp7 -T 8 " % binPath)
|
|
# tdSql.execute("use dp3")
|
|
# tdSql.query("show databases")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.checkData(0,16,'ms')
|
|
# tdSql.query("show stables")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.query("show tables")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.query("select count(*) from st0_0")
|
|
# tdSql.checkRows(0)
|
|
# # tdSql.query("select * from st0 order by ts")
|
|
# # tdSql.checkData(0,0,'2021-02-25 10:00:12.000000001')
|
|
# # tdSql.checkData(0,1,8600)
|
|
|
|
# # check taosdumptest/tmp8
|
|
# tdSql.execute("drop database dp3")
|
|
# os.system("%s -i ./taosdumptest/tmp8 -T 8 " % binPath)
|
|
# tdSql.execute("use dp3")
|
|
# tdSql.query("show stables")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.query("show tables")
|
|
# tdSql.checkRows(1)
|
|
# tdSql.query("select count(*) from st0_0")
|
|
# tdSql.checkRows(0)
|
|
# # tdSql.query("select * from st0 order by ts")
|
|
# # tdSql.checkData(0,0,'2021-02-25 10:00:12.000000001')
|
|
# # tdSql.checkData(0,1,8600)
|
|
|
|
# os.system("rm -rf ./taosdumptest/tmp1")
|
|
# os.system("rm -rf ./taosdumptest/tmp2")
|
|
# os.system("rm -rf ./taosdumptest/tmp3")
|
|
# os.system("rm -rf ./taosdumptest/tmp4")
|
|
# os.system("rm -rf ./taosdumptest/tmp5")
|
|
# os.system("rm -rf ./dump_result.txt")
|
|
# os.system("rm -rf ./db.csv")
|
|
|
|
def stop(self):
|
|
tdSql.close()
|
|
tdLog.success("%s successfully executed" % __file__)
|
|
|
|
|
|
tdCases.addWindows(__file__, TDTestCase())
|
|
tdCases.addLinux(__file__, TDTestCase())
|