taosdemoTestInsertWithJson.py 16.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
###################################################################
#           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)
26

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
    def getBuildPath(self):
        selfPath = os.path.dirname(os.path.realpath(__file__))

        if ("community" in selfPath):
            projPath = selfPath[:selfPath.find("community")]
        else:
            projPath = selfPath[:selfPath.find("tests")]

        for root, dirs, files in os.walk(projPath):
            if ("taosd" in files):
                rootRealPath = os.path.dirname(os.path.realpath(root))
                if ("packaging" not in rootRealPath):
                    buildPath = root[:len(root)-len("/build/bin")]
                    break
        return buildPath
42

43 44 45 46 47 48 49 50
    def run(self):
        buildPath = self.getBuildPath()
        if (buildPath == ""):
            tdLog.exit("taosd not found!")
        else:
            tdLog.info("taosd found in %s" % buildPath)
        binPath = buildPath+ "/build/bin/"

51
        # insert: create one  or mutiple tables per sql and insert multiple rows per sql
52 53 54 55 56 57 58 59 60 61 62 63 64
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-1s1tnt1r.json -y " % binPath)
        tdSql.execute("use db")
        tdSql.query("select count (tbname) from stb0")
        tdSql.checkData(0, 0, 1000)
        tdSql.query("select count (tbname) from stb1")
        tdSql.checkData(0, 0, 1000)
        tdSql.query("select count(*) from stb00_0")
        tdSql.checkData(0, 0, 100)
        tdSql.query("select count(*) from stb0")
        tdSql.checkData(0, 0, 100000)
        tdSql.query("select count(*) from stb01_1")
        tdSql.checkData(0, 0, 200)
        tdSql.query("select count(*) from stb1")
65
        tdSql.checkData(0, 0, 200000)
66

67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
        # restful connector insert data
        os.system("%staosdemo -f tools/taosdemoAllTest/insertRestful.json -y " % binPath)
        tdSql.execute("use db")
        tdSql.query("select count (tbname) from stb0")
        tdSql.checkData(0, 0, 10)
        tdSql.query("select count (tbname) from stb1")
        tdSql.checkData(0, 0, 10)
        tdSql.query("select count(*) from stb00_0")
        tdSql.checkData(0, 0, 10)
        tdSql.query("select count(*) from stb0")
        tdSql.checkData(0, 0, 100)
        tdSql.query("select count(*) from stb01_1")
        tdSql.checkData(0, 0, 20)
        tdSql.query("select count(*) from stb1")
        tdSql.checkData(0, 0, 200)

83 84 85 86 87 88 89 90 91 92 93
        # default values json files 
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-default.json -y " % binPath)
        tdSql.query("show databases;")
        for i in range(tdSql.queryRows):
            if tdSql.queryResult[i][0] == 'db':
                tdSql.checkData(i, 2, 100) 
                tdSql.checkData(i, 4, 1)     
                tdSql.checkData(i, 6, 10)       
                tdSql.checkData(i, 16, 'ms')           
    
94
        # insert: create  mutiple tables per sql and insert one rows per sql .
95 96 97 98 99 100 101
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-1s1tntmr.json -y " % binPath)
        tdSql.execute("use db")
        tdSql.query("select count (tbname) from stb0")
        tdSql.checkData(0, 0, 10)
        tdSql.query("select count (tbname) from stb1")
        tdSql.checkData(0, 0, 20)
        tdSql.query("select count(*) from stb00_0")
102
        tdSql.checkData(0, 0, 10000)
103
        tdSql.query("select count(*) from stb0")
104
        tdSql.checkData(0, 0, 100000)
105
        tdSql.query("select count(*) from stb01_0")
106
        tdSql.checkData(0, 0, 20000)
107
        tdSql.query("select count(*) from stb1")
108
        tdSql.checkData(0, 0, 400000)
109

110
        # insert: using parament "insert_interval to controls spped  of insert.
111 112 113 114 115 116
        # but We need to have accurate methods to control the speed, such as getting the speed value, checking the count and so on。
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-interval-speed.json -y" % binPath)
        tdSql.execute("use db")
        tdSql.query("show stables")
        tdSql.checkData(0, 4, 100)
        tdSql.query("select count(*) from stb00_0")
117
        tdSql.checkData(0, 0, 20000)
118
        tdSql.query("select count(*) from stb0")
119
        tdSql.checkData(0, 0, 2000000)
120 121 122
        tdSql.query("show stables")
        tdSql.checkData(1, 4, 100)
        tdSql.query("select count(*) from stb01_0")
123
        tdSql.checkData(0, 0, 20000)
124
        tdSql.query("select count(*) from stb1")
125 126
        tdSql.checkData(0, 0, 2000000)

127 128
        # spend 2min30s for 3 testcases.
        # insert: drop and child_table_exists combination test
129
        # insert: using parament "childtable_offset and childtable_limit" to control  table'offset point and offset
130 131 132 133 134 135 136 137 138 139 140
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-nodbnodrop.json -y" % binPath)
        tdSql.error("show dbno.stables")
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-newdb.json -y" % binPath)
        tdSql.execute("use db")
        tdSql.query("select count (tbname) from stb0")
        tdSql.checkData(0, 0, 5)
        tdSql.query("select count (tbname) from stb1")
        tdSql.checkData(0, 0, 6)
        tdSql.query("select count (tbname) from stb2")
        tdSql.checkData(0, 0, 7)
        tdSql.query("select count (tbname) from stb3")
141
        tdSql.checkData(0, 0, 8)
142
        tdSql.query("select count (tbname) from stb4")
143
        tdSql.checkData(0, 0, 8)
144
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-offset.json -y" % binPath)
145
        tdSql.execute("use db")
146
        tdSql.query("select count(*) from stb0")
147
        tdSql.checkData(0, 0, 50)
148
        tdSql.query("select count(*) from stb1")
149
        tdSql.checkData(0, 0, 240)
150
        tdSql.query("select count(*) from stb2")
151
        tdSql.checkData(0, 0, 220)
152 153 154 155 156
        tdSql.query("select count(*) from stb3")
        tdSql.checkData(0, 0, 180)
        tdSql.query("select count(*) from stb4")
        tdSql.checkData(0, 0, 160)
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-newtable.json -y" % binPath)
157
        tdSql.execute("use db")
158
        tdSql.query("select count(*) from stb0")
159
        tdSql.checkData(0, 0, 150)
160
        tdSql.query("select count(*) from stb1")
161
        tdSql.checkData(0, 0, 360)
162
        tdSql.query("select count(*) from stb2")
163
        tdSql.checkData(0, 0, 360)
164 165 166 167 168
        tdSql.query("select count(*) from stb3")
        tdSql.checkData(0, 0, 340)
        tdSql.query("select count(*) from stb4")
        tdSql.checkData(0, 0, 400)
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-renewdb.json -y" % binPath)
169
        tdSql.execute("use db")
170
        tdSql.query("select count(*) from stb0")
171
        tdSql.checkData(0, 0, 50)
172
        tdSql.query("select count(*) from stb1")
173
        tdSql.checkData(0, 0, 120)
174
        tdSql.query("select count(*) from stb2")
175
        tdSql.checkData(0, 0, 140)
176 177 178 179 180 181
        tdSql.query("select count(*) from stb3")
        tdSql.checkData(0, 0, 160)
        tdSql.query("select count(*) from stb4")
        tdSql.checkData(0, 0, 160)


182
        # insert:  let parament in json file  is illegal, it'll expect error.
183 184
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertColumnsAndTagNumLarge4096.json -y " % binPath)
185
        tdSql.error("use db")
186 187
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertSigcolumnsNum4096.json -y " % binPath)
188
        tdSql.error("select * from db.stb0")
189 190
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertColumnsAndTagNum4096.json -y " % binPath)
191
        tdSql.query("select count(*) from db.stb0")
192
        tdSql.checkData(0, 0, 10000) 
S
Shengliang Guan 已提交
193

194
        tdSql.execute("drop database if exists db")
195 196 197
        os.system("%staosdemo -f tools/taosdemoAllTest/insertInterlaceRowsLarge1M.json -y " % binPath)
        tdSql.query("select count(*) from db.stb0")
        tdSql.checkRows(0)
198
        tdSql.execute("drop database if exists db")
199
        os.system("%staosdemo -f tools/taosdemoAllTest/insertColumnsNum0.json -y " % binPath)
200
        tdSql.execute("use db")
201 202
        tdSql.query("show stables like 'stb0%' ")
        tdSql.checkData(0, 2, 11)
203 204 205 206 207 208
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertTagsNumLarge128.json -y " % binPath)   
        tdSql.error("use db1") 
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertBinaryLenLarge16374AllcolLar49151.json -y " % binPath)   
        tdSql.query("select count(*) from db.stb0") 
209
        tdSql.checkRows(1)
210
        tdSql.query("select count(*) from db.stb1")
211
        tdSql.checkRows(1)
212
        tdSql.error("select * from db.stb4")
213
        tdSql.error("select * from db.stb2")
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
        tdSql.query("select count(*) from db.stb3") 
        tdSql.checkRows(1)
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertNumOfrecordPerReq0.json -y " % binPath)   
        tdSql.error("select count(*) from db.stb0") 
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertNumOfrecordPerReqless0.json -y " % binPath)   
        tdSql.error("use db") 
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertChildTab0.json -y " % binPath)   
        tdSql.error("use db") 
        tdSql.execute("drop database if exists db") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertChildTabLess0.json -y " % binPath)   
        tdSql.error("use db") 
        tdSql.execute("drop database if exists blf") 
        os.system("%staosdemo -f tools/taosdemoAllTest/insertTimestepMulRowsLargeint16.json -y " % binPath)   
        tdSql.execute("use blf") 
        tdSql.query("select ts from blf.p_0_topics_7 limit 262800,1") 
232 233 234
        tdSql.checkData(0, 0, "2020-03-31 12:00:00.000")
        tdSql.query("select first(ts) from blf.p_0_topics_2")
        tdSql.checkData(0, 0, "2019-10-01 00:00:00")
235
        tdSql.query("select last(ts) from blf.p_0_topics_6 ")
236
        tdSql.checkData(0, 0, "2020-09-29 23:59:00")
237 238
        os.system("%staosdemo -f tools/taosdemoAllTest/insertMaxNumPerReq.json -y " % binPath)
        tdSql.execute("use db")
239 240 241 242
        tdSql.query("select count(*) from stb0")
        tdSql.checkData(0, 0, 5000000)
        tdSql.query("select count(*) from stb1")
        tdSql.checkData(0, 0, 5000000)
243 244


245

246
        # insert: timestamp and step
247 248 249 250 251 252 253 254
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-timestep.json -y " % binPath)
        tdSql.execute("use db")
        tdSql.query("show stables")
        tdSql.query("select count (tbname) from stb0")
        tdSql.checkData(0, 0, 10)
        tdSql.query("select count (tbname) from stb1")
        tdSql.checkData(0, 0, 20)
        tdSql.query("select last(ts) from db.stb00_0")
255
        tdSql.checkData(0, 0, "2020-10-01 00:00:00.019000")
256
        tdSql.query("select count(*) from stb0")
257
        tdSql.checkData(0, 0, 200)
258
        tdSql.query("select last(ts) from db.stb01_0")
259
        tdSql.checkData(0, 0, "2020-11-01 00:00:00.190000")
260
        tdSql.query("select count(*) from stb1")
261
        tdSql.checkData(0, 0, 400)
262 263 264 265 266 267 268 269 270

        # # insert:  disorder_ratio
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-disorder.json -g 2>&1  -y " % binPath)
        tdSql.execute("use db")
        tdSql.query("select count (tbname) from stb0")
        tdSql.checkData(0, 0, 1)
        tdSql.query("select count (tbname) from stb1")
        tdSql.checkData(0, 0, 1)
        tdSql.query("select count(*) from stb0")
271
        tdSql.checkData(0, 0, 10)
272
        tdSql.query("select count(*) from stb1")
273
        tdSql.checkData(0, 0, 10)
274

275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
        # insert:  sample json
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-sample-ts.json -y " % binPath)
        tdSql.execute("use dbtest123")
        tdSql.query("select c2 from stb0")
        tdSql.checkData(0, 0, 2147483647)
        tdSql.query("select c0 from stb0_0 order by ts")
        tdSql.checkData(3, 0, 4)
        tdSql.query("select count(*) from stb0 order by ts")
        tdSql.checkData(0, 0, 40)
        tdSql.query("select * from stb0_1 order by ts")
        tdSql.checkData(0, 0, '2021-10-28 15:34:44.735')
        tdSql.checkData(3, 0, '2021-10-31 15:34:44.735')
        tdSql.query("select * from stb1 where t1=-127")
        tdSql.checkRows(20)
        tdSql.query("select * from stb1 where t2=127")
        tdSql.checkRows(10)
        tdSql.query("select * from stb1 where t2=126")
        tdSql.checkRows(10)

294 295 296
        # insert:  sample json
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-sample.json -y " % binPath)
        tdSql.execute("use dbtest123")
297
        tdSql.query("select c2 from stb0")
298
        tdSql.checkData(0, 0, 2147483647)
299 300 301 302 303 304
        tdSql.query("select * from stb1 where t1=-127")
        tdSql.checkRows(20)
        tdSql.query("select * from stb1 where t2=127")
        tdSql.checkRows(10)
        tdSql.query("select * from stb1 where t2=126")
        tdSql.checkRows(10)
305

306

307
        # insert: test interlace parament
308 309 310 311 312
        os.system("%staosdemo -f tools/taosdemoAllTest/insert-interlace-row.json -y " % binPath)
        tdSql.execute("use db")
        tdSql.query("select count (tbname) from stb0")
        tdSql.checkData(0, 0, 100)
        tdSql.query("select count (*) from stb0")
313
        tdSql.checkData(0, 0, 15000)
314

315

316
        # # insert: auto_create
317

318 319
        tdSql.execute('drop database if exists db')
        tdSql.execute('create database db')
320
        tdSql.execute('use db')
321
        os.system("%staosdemo -y -f tools/taosdemoAllTest/insert-drop-exist-auto-N00.json " % binPath) # drop = no, child_table_exists, auto_create_table varies
322
        tdSql.execute('use db')
323
        tdSql.query('show tables like \'NN123%\'')  #child_table_exists = no, auto_create_table varies = 123
324
        tdSql.checkRows(20)
325 326 327 328 329
        tdSql.query('show tables like \'NNN%\'')    #child_table_exists = no, auto_create_table varies = no
        tdSql.checkRows(20)
        tdSql.query('show tables like \'NNY%\'')    #child_table_exists = no, auto_create_table varies = yes
        tdSql.checkRows(20)
        tdSql.query('show tables like \'NYN%\'')    #child_table_exists = yes, auto_create_table varies = no
330
        tdSql.checkRows(0)
331 332 333
        tdSql.query('show tables like \'NY123%\'')  #child_table_exists = yes, auto_create_table varies = 123
        tdSql.checkRows(0)
        tdSql.query('show tables like \'NYY%\'')    #child_table_exists = yes, auto_create_table varies = yes
334 335
        tdSql.checkRows(0)

336 337
        tdSql.execute('drop database if exists db')
        os.system("%staosdemo -y -f tools/taosdemoAllTest/insert-drop-exist-auto-Y00.json " % binPath) # drop = yes, child_table_exists, auto_create_table varies
338
        tdSql.execute('use db')
339
        tdSql.query('show tables like \'YN123%\'')  #child_table_exists = no, auto_create_table varies = 123
340
        tdSql.checkRows(20)
341
        tdSql.query('show tables like \'YNN%\'')    #child_table_exists = no, auto_create_table varies = no
342
        tdSql.checkRows(20)
343
        tdSql.query('show tables like \'YNY%\'')    #child_table_exists = no, auto_create_table varies = yes
344
        tdSql.checkRows(20)
345
        tdSql.query('show tables like \'YYN%\'')    #child_table_exists = yes, auto_create_table varies = no
346
        tdSql.checkRows(20)
347 348 349
        tdSql.query('show tables like \'YY123%\'')  #child_table_exists = yes, auto_create_table varies = 123
        tdSql.checkRows(20)
        tdSql.query('show tables like \'YYY%\'')    #child_table_exists = yes, auto_create_table varies = yes
350 351
        tdSql.checkRows(20)

352
        testcaseFilename = os.path.split(__file__)[-1]
353
        os.system("rm -rf ./insert_res.txt")
354
        os.system("rm -rf tools/taosdemoAllTest/%s.sql" % testcaseFilename )         
355 356 357
        
        
        
358

359 360 361 362 363 364 365
    def stop(self):
        tdSql.close()
        tdLog.success("%s successfully executed" % __file__)


tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())