From 562e76524832fe1bce455d405f8b616b315f1570 Mon Sep 17 00:00:00 2001 From: jiacy-jcy <714897623@qq.com> Date: Thu, 20 Apr 2023 17:10:21 +0800 Subject: [PATCH 1/5] =?UTF-8?q?test=EF=BC=9Aadd=20test=20case=20for=20mult?= =?UTF-8?q?istage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/parallel_test/cases.task | 1 + tests/system-test/0-others/multilevel.py | 223 +++++++++++++++++++++++ 2 files changed, 224 insertions(+) create mode 100644 tests/system-test/0-others/multilevel.py diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index dda4ec3e84..b12d1b2da7 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -127,6 +127,7 @@ ,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_control.py ,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_manage.py ,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/fsync.py +,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/multilevel.py ,,n,system-test,python3 ./test.py -f 0-others/compatibility.py ,,n,system-test,python3 ./test.py -f 0-others/tag_index_basic.py ,,n,system-test,python3 ./test.py -f 0-others/udfpy_main.py diff --git a/tests/system-test/0-others/multilevel.py b/tests/system-test/0-others/multilevel.py new file mode 100644 index 0000000000..6780ea9fef --- /dev/null +++ b/tests/system-test/0-others/multilevel.py @@ -0,0 +1,223 @@ +################################################################### +# 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 -*- + + +from util.log import * +from util.cases import * +from util.sql import * +from util.common import * +from util.sqlset import * + +class TDTestCase: + def init(self, conn, logSql, replicaVar=1): + + self.replicaVar = int(replicaVar) + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + self.setsql = TDSetSql() + + def basic(self): + tdLog.info("============== basic test ===============") + cfg={ + '/mnt/data1' : 'dataDir', + '/mnt/data2 0 0' : 'dataDir' + } + tdSql.createDir('/mnt/data1') + tdSql.createDir('/mnt/data2') + + tdLog.info("================= step1") + tdDnodes.stop(1) + tdDnodes.deploy(1,cfg) + tdDnodes.start(1) + + tdLog.info("================= step2") + tdSql.haveFile('/mnt/data1/',1) + tdSql.haveFile('/mnt/data2/',0) + tdDnodes.stop(1) + def dir_not_exist(self): + tdLog.info("============== dir_not_exist test ===============") + cfg={ + '/mnt/data1 0 0' : 'dataDir', + '/mnt/data2 0 0' : 'dataDir' + } + tdSql.createDir('/mnt/data1') + os.system('rm -rf /mnt/data2') + + + tdLog.info("================= step1") + tdDnodes.deploy(1,cfg) + tdDnodes.startWithoutSleep(1) + + tdLog.info("================= step2") + tdSql.taosdStatus(0) + + def dir_permission_denied(self): + tdDnodes.stop(1) + tdLog.info("============== dir_permission_denied test ===============") + cfg={ + '/mnt/data1 0 0' : 'dataDir', + '/mnt/data2 0 0' : 'dataDir' + } + tdSql.createDir('/mnt/data1') + tdSql.createDir('/mnt/data2') + os.system('chmod 111 /mnt/data2') + + tdLog.info("================= step1") + tdDnodes.deploy(1,cfg) + tdDnodes.startWithoutSleep(1) + + tdLog.info("================= step2") + tdSql.taosdStatus(0) + + def file_distribution_same_level(self): + tdLog.info("============== file_distribution_same_level test ===============") + dataDir = ['data00','data01','data02','data03','data04'] + dataDict = {'data00':0,'data01':0,'data02':0,'data03':0,'data04':0} + tdDnodes.stop(1) + self.ntables = 1000 + self.ts = 1520000010000 + tdLog.info("================= step1") + cfg={ + '/mnt/data00 0 1' : 'dataDir', + '/mnt/data01 0 0' : 'dataDir', + '/mnt/data02 0 0' : 'dataDir', + '/mnt/data03 0 0' : 'dataDir', + '/mnt/data04 0 0' : 'dataDir' + } + dir_list = ['/mnt/data00','/mnt/data01','/mnt/data02','/mnt/data03','/mnt/data04'] + for i in dir_list: + tdSql.createDir(i) + tdDnodes.deploy(1,cfg) + tdDnodes.start(1) + + tdSql.execute("create database test duration 1") + tdSql.execute("use test") + + tdSql.execute("create table stb(ts timestamp, c int) tags(t int)") + + for i in range(self.ntables): + tdSql.execute("create table tb%d using stb tags(%d)" %(i, i)) + tdSql.execute("insert into tb%d values(%d, 1)" % (i,self.ts + int (i / 100) * 86400000)) + + tdLog.info("================= step2") + tdDnodes.stop(1) + tdDnodes.start(1) + tdSql.query("select * from test.stb") + tdSql.checkRows(1000) + tdLog.info("================= step3") + tdSql.execute('drop database test') + for i in range(50): + tdSql.execute("create database test%d duration 1" %(i)) + tdSql.execute("use test%d" %(i)) + tdSql.execute("create table tb (ts timestamp,i int)") + for j in range(10): + tdSql.execute("insert into tb values(%d, 1)" % (self.ts + int (i / 100) * 86400000)) + tdDnodes.stop(1) + tdDnodes.start(1) + flag = True + for i in range(4): + if dataDict[dataDir[i]] == dataDict[dataDir[i+1]]: + flag = flag & True + else: + flag = flag & False + break + if not flag : tdLog.exit("%s failed, expect not occured" % (sys.argv[0])) + + def three_level_basic(self): + tdLog.info("============== three_level_basic test ===============") + tdDnodes.stop(1) + # Test1 1 dataDir + cfg={ + '/mnt/data000 0 1' : 'dataDir', + '/mnt/data001 0 0' : 'dataDir', + '/mnt/data002 0 0' : 'dataDir', + '/mnt/data010 1 0' : 'dataDir', + '/mnt/data011 1 0' : 'dataDir', + '/mnt/data012 1 0' : 'dataDir', + '/mnt/data020 2 0' : 'dataDir', + '/mnt/data021 2 0' : 'dataDir', + '/mnt/data022 2 0' : 'dataDir' + } + dir_list = ['/mnt/data000','/mnt/data001','/mnt/data002','/mnt/data010','/mnt/data011','/mnt/data012','/mnt/data020','/mnt/data021''/mnt/data022'] + for i in dir_list: + tdSql.createDir(i) + + tdDnodes.deploy(1,cfg) + tdDnodes.start(1) + for i in dir_list: + if i == '/mnt/data000': + tdSql.haveFile(i,1) + else: + tdSql.haveFile(i,0) + + def more_than_16_disks(self): + tdLog.info("============== more_than_16_disks test ===============") + cfg={} + for i in range(17): + if i == 0 : + datadir = '/mnt/data%d 0 1' % (i+1) + else: + datadir = '/mnt/data%d 0 0' % (i+1) + cfg.update({ datadir : 'dataDir' }) + tdSql.createDir('/mnt/data%d' % (i+1)) + + tdLog.info("================= step1") + tdDnodes.stop(1) + tdDnodes.deploy(1,cfg) + tdDnodes.startWithoutSleep(1) + + tdLog.info("================= step2") + tdSql.taosdStatus(0) + + def missing_middle_level(self): + tdLog.info("============== missing_middle_level test ===============") + tdDnodes.stop(1) + # Test1 1 dataDir + cfg={ + '/mnt/data1 1 0' : 'dataDir' + } + tdSql.createDir('/mnt/data1') + + tdDnodes.deploy(1,cfg) + tdDnodes.startWithoutSleep(1) + + tdSql.taosdStatus(0) + tdDnodes.stop(1) + # Test2 2 dataDir + cfg={ + '/mnt/data1 0 1' : 'dataDir', + '/mnt/data1 2 0' : 'dataDir' + } + tdSql.createDir('/mnt/data1') + + tdDnodes.deploy(1,cfg) + tdDnodes.startWithoutSleep(1) + + tdSql.taosdStatus(0) + def run(self): + self.basic() + self.dir_not_exist() + self.dir_permission_denied() + self.file_distribution_same_level() + self.three_level_basic() + self.more_than_16_disks() + self.missing_middle_level() + + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) From a952c008af937cd3f5a43614887e3a98835ac1ab Mon Sep 17 00:00:00 2001 From: jiacy-jcy <714897623@qq.com> Date: Fri, 21 Apr 2023 15:45:25 +0800 Subject: [PATCH 2/5] update test case for bug TS-3216 --- tests/system-test/0-others/multilevel.py | 43 ++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/tests/system-test/0-others/multilevel.py b/tests/system-test/0-others/multilevel.py index 6780ea9fef..350337942b 100644 --- a/tests/system-test/0-others/multilevel.py +++ b/tests/system-test/0-others/multilevel.py @@ -194,7 +194,7 @@ class TDTestCase: tdSql.taosdStatus(0) tdDnodes.stop(1) # Test2 2 dataDir - cfg={ + cfg = { '/mnt/data1 0 1' : 'dataDir', '/mnt/data1 2 0' : 'dataDir' } @@ -204,6 +204,45 @@ class TDTestCase: tdDnodes.startWithoutSleep(1) tdSql.taosdStatus(0) + + def trim_database(self): + tdLog.info("============== trim_database test ===============") + tdDnodes.stop(1) + cfg = { + '/mnt/data1 0 1' : 'dataDir' + + } + tdSql.createDir('/mnt/data1') + tdDnodes.deploy(1,cfg) + tdDnodes.start(1) + + tdSql.execute('create database dbtest') + tdSql.execute('use dbtest') + tdSql.execute('create table stb (ts timestamp,c0 int) tags(t0 int)') + tdSql.execute('create table tb1 using stb tags(1)') + for i in range(10,30): + tdSql.execute(f'insert into tb1 values(now-{i}d,10)') + tdSql.execute('flush database dbtest') + tdSql.haveFile('/mnt/data1/',1) + tdDnodes.stop(1) + cfg={ + '/mnt/data1 0 1' : 'dataDir', + '/mnt/data2 1 0' : 'dataDir', + '/mnt/data3 2 0' : 'dataDir', + } + tdSql.createDir('/mnt/data2') + tdSql.createDir('/mnt/data3') + tdDnodes.deploy(1,cfg) + tdDnodes.start(1) + tdSql.haveFile('/mnt/data1/',1) + tdSql.haveFile('/mnt/data2/',0) + tdSql.haveFile('/mnt/data3/',0) + tdSql.execute('alter database dbtest keep 10d,365d,3650d') + tdSql.execute('trim database dbtest') + time.sleep(3) + tdSql.haveFile('/mnt/data1/',1) + tdSql.haveFile('/mnt/data2/',1) + def run(self): self.basic() self.dir_not_exist() @@ -212,7 +251,7 @@ class TDTestCase: self.three_level_basic() self.more_than_16_disks() self.missing_middle_level() - + self.trim_database() def stop(self): From da42cf47992de24ae822dedcb641b69908aec32d Mon Sep 17 00:00:00 2001 From: jiacy-jcy <714897623@qq.com> Date: Sun, 23 Apr 2023 11:36:32 +0800 Subject: [PATCH 3/5] update --- tests/system-test/0-others/multilevel.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/system-test/0-others/multilevel.py b/tests/system-test/0-others/multilevel.py index 350337942b..7ad4eba645 100644 --- a/tests/system-test/0-others/multilevel.py +++ b/tests/system-test/0-others/multilevel.py @@ -250,8 +250,9 @@ class TDTestCase: self.file_distribution_same_level() self.three_level_basic() self.more_than_16_disks() - self.missing_middle_level() self.trim_database() + self.missing_middle_level() + def stop(self): From 4c0cfc18e013cf109f9bfe3caf06a8f34549a48b Mon Sep 17 00:00:00 2001 From: jiacy-jcy <714897623@qq.com> Date: Sun, 23 Apr 2023 11:36:59 +0800 Subject: [PATCH 4/5] update --- tests/system-test/0-others/multilevel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system-test/0-others/multilevel.py b/tests/system-test/0-others/multilevel.py index 7ad4eba645..8460249d04 100644 --- a/tests/system-test/0-others/multilevel.py +++ b/tests/system-test/0-others/multilevel.py @@ -251,7 +251,7 @@ class TDTestCase: self.three_level_basic() self.more_than_16_disks() self.trim_database() - self.missing_middle_level() + # self.missing_middle_level() From 3eca2ff8189b280819ba1c26dd1be3efc31bbb37 Mon Sep 17 00:00:00 2001 From: jiacy-jcy <714897623@qq.com> Date: Sun, 23 Apr 2023 16:54:50 +0800 Subject: [PATCH 5/5] update --- tests/system-test/0-others/multilevel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system-test/0-others/multilevel.py b/tests/system-test/0-others/multilevel.py index 8460249d04..7ad4eba645 100644 --- a/tests/system-test/0-others/multilevel.py +++ b/tests/system-test/0-others/multilevel.py @@ -251,7 +251,7 @@ class TDTestCase: self.three_level_basic() self.more_than_16_disks() self.trim_database() - # self.missing_middle_level() + self.missing_middle_level()