[TD-1823] <test> add test case for data loss
This commit is contained in:
parent
727ee9cc82
commit
ddd9b50e24
|
@ -152,6 +152,7 @@ python3 ./test.py -f query/queryInsertValue.py
|
|||
python3 ./test.py -f query/queryConnection.py
|
||||
python3 ./test.py -f query/natualInterval.py
|
||||
python3 ./test.py -f query/bug1471.py
|
||||
python3 ./test.py -f query/dataLossTest.py
|
||||
|
||||
#stream
|
||||
python3 ./test.py -f stream/metric_1.py
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
###################################################################
|
||||
# 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 taos
|
||||
import os
|
||||
from util.log import *
|
||||
from util.cases import *
|
||||
from util.sql import *
|
||||
from util.dnodes import *
|
||||
import inspect
|
||||
|
||||
|
||||
class TDTestCase:
|
||||
def init(self, conn, logSql):
|
||||
tdLog.debug("start to execute %s" % __file__)
|
||||
tdSql.init(conn.cursor())
|
||||
|
||||
self.numberOfTables = 240
|
||||
self.numberOfRecords = 10000
|
||||
|
||||
def run(self):
|
||||
tdSql.prepare()
|
||||
|
||||
os.system("yes | taosdemo -t %d -n %d" % (self.numberOfTables, self.numberOfRecords))
|
||||
print("==============step1")
|
||||
|
||||
tdSql.execute("use test")
|
||||
sql = "select count(*) from meters"
|
||||
tdSql.query(sql)
|
||||
rows = tdSql.getData(0, 0)
|
||||
print ("number of records: %d" % rows)
|
||||
|
||||
newRows = rows
|
||||
for i in range(10000):
|
||||
print("kill taosd")
|
||||
time.sleep(10)
|
||||
os.system("sudo kill -9 $(pgrep taosd)")
|
||||
tdDnodes.startWithoutSleep(1)
|
||||
while True:
|
||||
try:
|
||||
tdSql.query(sql)
|
||||
newRows = tdSql.getData(0, 0)
|
||||
print("numer of records after kill taosd %d" % newRows)
|
||||
time.sleep(10)
|
||||
break
|
||||
except Exception as e:
|
||||
pass
|
||||
continue
|
||||
|
||||
if newRows < rows:
|
||||
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
||||
args = (caller.filename, caller.lineno, sql, newRows, rows)
|
||||
tdLog.exit("%s(%d) failed: sql:%s, queryRows:%d != expect:%d" % args)
|
||||
break
|
||||
|
||||
tdSql.query(sql)
|
||||
tdSql.checkData(0, 0, rows)
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
tdLog.success("%s successfully executed" % __file__)
|
||||
|
||||
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
|
@ -15,6 +15,7 @@ import sys
|
|||
import os
|
||||
import os.path
|
||||
import subprocess
|
||||
from time import sleep
|
||||
from util.log import *
|
||||
|
||||
|
||||
|
@ -210,6 +211,7 @@ class TDDnode:
|
|||
(self.index, self.cfgPath))
|
||||
|
||||
def getBuildPath(self):
|
||||
buildPath = ""
|
||||
selfPath = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
if ("community" in selfPath):
|
||||
|
@ -256,6 +258,35 @@ class TDDnode:
|
|||
|
||||
tdLog.debug("wait 5 seconds for the dnode:%d to start." % (self.index))
|
||||
time.sleep(5)
|
||||
|
||||
def startWithoutSleep(self):
|
||||
buildPath = self.getBuildPath()
|
||||
|
||||
if (buildPath == ""):
|
||||
tdLog.exit("taosd not found!")
|
||||
else:
|
||||
tdLog.info("taosd found in %s" % buildPath)
|
||||
|
||||
binPath = buildPath + "/build/bin/taosd"
|
||||
|
||||
if self.deployed == 0:
|
||||
tdLog.exit("dnode:%d is not deployed" % (self.index))
|
||||
|
||||
if self.valgrind == 0:
|
||||
cmd = "nohup %s -c %s > /dev/null 2>&1 & " % (
|
||||
binPath, self.cfgDir)
|
||||
else:
|
||||
valgrindCmdline = "valgrind --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes"
|
||||
|
||||
cmd = "nohup %s %s -c %s 2>&1 & " % (
|
||||
valgrindCmdline, binPath, self.cfgDir)
|
||||
|
||||
print(cmd)
|
||||
|
||||
if os.system(cmd) != 0:
|
||||
tdLog.exit(cmd)
|
||||
self.running = 1
|
||||
tdLog.debug("dnode:%d is running with %s " % (self.index, cmd))
|
||||
|
||||
def stop(self):
|
||||
if self.valgrind == 0:
|
||||
|
@ -425,6 +456,10 @@ class TDDnodes:
|
|||
def start(self, index):
|
||||
self.check(index)
|
||||
self.dnodes[index - 1].start()
|
||||
|
||||
def startWithoutSleep(self, index):
|
||||
self.check(index)
|
||||
self.dnodes[index - 1].startWithoutSleep()
|
||||
|
||||
def stop(self, index):
|
||||
self.check(index)
|
||||
|
|
Loading…
Reference in New Issue