feat: add query_basic.py
This commit is contained in:
parent
df40772e95
commit
14fb86c0a9
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"filetype": "insert",
|
||||||
|
"cfgdir": "/etc/taos",
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"port": 6030,
|
||||||
|
"user": "root",
|
||||||
|
"password": "taosdata",
|
||||||
|
"connection_pool_size": 8,
|
||||||
|
"num_of_records_per_req": 4000,
|
||||||
|
"thread_count": 2,
|
||||||
|
"create_table_thread_count": 1,
|
||||||
|
"confirm_parameter_prompt": "no",
|
||||||
|
"databases": [
|
||||||
|
{
|
||||||
|
"dbinfo": {
|
||||||
|
"name": "db",
|
||||||
|
"drop": "yes",
|
||||||
|
"vgroups": 3,
|
||||||
|
"replica": 3,
|
||||||
|
"duration":"3d",
|
||||||
|
"wal_retention_period": 1,
|
||||||
|
"wal_retention_size": 1,
|
||||||
|
"stt_trigger": 1
|
||||||
|
},
|
||||||
|
"super_tables": [
|
||||||
|
{
|
||||||
|
"name": "stb",
|
||||||
|
"child_table_exists": "no",
|
||||||
|
"childtable_count": 6,
|
||||||
|
"insert_rows": 100000,
|
||||||
|
"childtable_prefix": "d",
|
||||||
|
"insert_mode": "taosc",
|
||||||
|
"timestamp_step": 30000,
|
||||||
|
"start_timestamp":"2023-10-01 10:00:00",
|
||||||
|
"columns": [
|
||||||
|
{ "type": "bool", "name": "bc"},
|
||||||
|
{ "type": "float", "name": "fc" },
|
||||||
|
{ "type": "double", "name": "dc"},
|
||||||
|
{ "type": "tinyint", "name": "ti"},
|
||||||
|
{ "type": "smallint", "name": "si" },
|
||||||
|
{ "type": "int", "name": "ic" },
|
||||||
|
{ "type": "bigint", "name": "bi" },
|
||||||
|
{ "type": "utinyint", "name": "uti"},
|
||||||
|
{ "type": "usmallint", "name": "usi"},
|
||||||
|
{ "type": "uint", "name": "ui" },
|
||||||
|
{ "type": "ubigint", "name": "ubi"},
|
||||||
|
{ "type": "binary", "name": "bin", "len": 8},
|
||||||
|
{ "type": "nchar", "name": "nch", "len": 16}
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
{"type": "tinyint", "name": "groupid","max": 10,"min": 1},
|
||||||
|
{"name": "location","type": "binary", "len": 16, "values":
|
||||||
|
["San Francisco", "Los Angles", "San Diego", "San Jose", "Palo Alto", "Campbell", "Mountain View","Sunnyvale", "Santa Clara", "Cupertino"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
###################################################################
|
||||||
|
# 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 time
|
||||||
|
import random
|
||||||
|
|
||||||
|
import taos
|
||||||
|
import frame
|
||||||
|
import frame.etool
|
||||||
|
|
||||||
|
|
||||||
|
from frame.log import *
|
||||||
|
from frame.cases import *
|
||||||
|
from frame.sql import *
|
||||||
|
from frame.caseBase import *
|
||||||
|
from frame import *
|
||||||
|
|
||||||
|
|
||||||
|
class TDTestCase(TBase):
|
||||||
|
updatecfgDict = {
|
||||||
|
"keepColumnName" : "1",
|
||||||
|
"ttlChangeOnWrite" : "1",
|
||||||
|
"querySmaOptimize": "1"
|
||||||
|
}
|
||||||
|
|
||||||
|
def insertData(self):
|
||||||
|
tdLog.info(f"insert data.")
|
||||||
|
# taosBenchmark run
|
||||||
|
jfile = etool.curFile(__file__, "query_basic.json")
|
||||||
|
etool.benchMark(json=jfile)
|
||||||
|
|
||||||
|
tdSql.execute(f"use {self.db}")
|
||||||
|
# set insert data information
|
||||||
|
self.childtable_count = 6
|
||||||
|
self.insert_rows = 100000
|
||||||
|
self.timestamp_step = 30000
|
||||||
|
|
||||||
|
|
||||||
|
def doQuery(self):
|
||||||
|
tdLog.info(f"do query.")
|
||||||
|
|
||||||
|
# top bottom
|
||||||
|
sql = f"select top(uti, 5) from {self.stb} "
|
||||||
|
tdSql.execute(sql)
|
||||||
|
|
||||||
|
|
||||||
|
# run
|
||||||
|
def run(self):
|
||||||
|
tdLog.debug(f"start to excute {__file__}")
|
||||||
|
|
||||||
|
# insert data
|
||||||
|
self.insertData()
|
||||||
|
|
||||||
|
# check insert data correct
|
||||||
|
self.checkInsertCorrect()
|
||||||
|
|
||||||
|
# check
|
||||||
|
self.checkConsistency("usi")
|
||||||
|
|
||||||
|
# do action
|
||||||
|
self.doQuery()
|
||||||
|
|
||||||
|
tdLog.success(f"{__file__} successfully executed")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
|
@ -153,6 +153,31 @@ class TBase:
|
||||||
tdSql.checkAgg(self.sqlFirst, self.first)
|
tdSql.checkAgg(self.sqlFirst, self.first)
|
||||||
tdSql.checkAgg(self.sqlLast, self.last)
|
tdSql.checkAgg(self.sqlLast, self.last)
|
||||||
|
|
||||||
|
# self check
|
||||||
|
def checkConsistency(self, col):
|
||||||
|
# top with max
|
||||||
|
sql = f"select max({col}) from {self.stb}"
|
||||||
|
expect = tdSql.getFirstValue(sql)
|
||||||
|
sql = f"select top({col}, 5) from {self.stb}"
|
||||||
|
tdSql.checkFirstValue(sql, expect)
|
||||||
|
|
||||||
|
#bottom with min
|
||||||
|
sql = f"select min({col}) from {self.stb}"
|
||||||
|
expect = tdSql.getFirstValue(sql)
|
||||||
|
sql = f"select bottom({col}, 5) from {self.stb}"
|
||||||
|
tdSql.checkFirstValue(sql, expect)
|
||||||
|
|
||||||
|
# order by asc limit 1 with first
|
||||||
|
sql = f"select last({col}) from {self.stb}"
|
||||||
|
expect = tdSql.getFirstValue(sql)
|
||||||
|
sql = f"select {col} from {self.stb} order by {col} desc limit 1"
|
||||||
|
tdSql.checkFirstValue(sql, expect)
|
||||||
|
|
||||||
|
# order by desc limit 1 with last
|
||||||
|
sql = f"select first({col}) from {self.stb}"
|
||||||
|
expect = tdSql.getFirstValue(sql)
|
||||||
|
sql = f"select {col} from {self.stb} order by {col} asc limit 1"
|
||||||
|
tdSql.checkFirstValue(sql, expect)
|
||||||
|
|
||||||
#
|
#
|
||||||
# get db information
|
# get db information
|
||||||
|
|
|
@ -544,6 +544,12 @@ class TDSql:
|
||||||
def getFirstValue(self, sql) :
|
def getFirstValue(self, sql) :
|
||||||
self.query(sql)
|
self.query(sql)
|
||||||
return self.getData(0, 0)
|
return self.getData(0, 0)
|
||||||
|
|
||||||
|
# expect first value
|
||||||
|
def checkFirstValue(self, sql, expect):
|
||||||
|
self.query(sql)
|
||||||
|
self.checkData(0, 0, expect)
|
||||||
|
|
||||||
|
|
||||||
def get_times(self, time_str, precision="ms"):
|
def get_times(self, time_str, precision="ms"):
|
||||||
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
||||||
|
|
|
@ -228,7 +228,7 @@ class TDTestCase:
|
||||||
|
|
||||||
# query
|
# query
|
||||||
col = f"c{i}"
|
col = f"c{i}"
|
||||||
sql = f"select count({col}), sum({col}), avg({col}), max({col}), min({col}) from stb"
|
sql = f"select count({col}), sum({col}), avg({col}), max({col}), min({col}), stddev({col}, leastsquares({col},1,9)) from stb"
|
||||||
tdSql.query(sql)
|
tdSql.query(sql)
|
||||||
# sum
|
# sum
|
||||||
tdSql.checkData(0, 0, 4*10000, True)
|
tdSql.checkData(0, 0, 4*10000, True)
|
||||||
|
@ -240,6 +240,9 @@ class TDTestCase:
|
||||||
tdSql.checkData(0, 3, 1, True)
|
tdSql.checkData(0, 3, 1, True)
|
||||||
# min
|
# min
|
||||||
tdSql.checkData(0, 4, 1, True)
|
tdSql.checkData(0, 4, 1, True)
|
||||||
|
# stddev
|
||||||
|
tdSql.checkData(0, 5, 0, True)
|
||||||
|
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue