Merge pull request #22369 from taosdata/td_25179_update
udpate user_privilege_show test case and add it to cases.task by charles
This commit is contained in:
commit
88617027a3
|
@ -155,7 +155,8 @@
|
|||
,,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/user_privilege.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_privilege_multi_users.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_privilege_show.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 0-others/user_privilege_all.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
|
||||
|
|
|
@ -258,6 +258,66 @@ class TDTestCase:
|
|||
"insert into tb values(now, 20.0, 20);",
|
||||
"select * from tb;"],
|
||||
"res": [True, True, True, True, False, True, False]
|
||||
},
|
||||
"test_db_all_childtable_none": {
|
||||
"db_privilege": "all",
|
||||
"stable_priviege": "none",
|
||||
"child_table_ct1_privilege": "none",
|
||||
"child_table_ct2_privilege": "none",
|
||||
"table_tb_privilege": "none",
|
||||
"sql": ["insert into ct2 using stb tags('ct2') values(now, 20.2, 20)",
|
||||
"insert into ct1 using stb tags('ct1') values(now, 21.21, 21)",
|
||||
"select * from stb;",
|
||||
"select * from ct1;",
|
||||
"select * from ct2;",
|
||||
"insert into tb values(now, 22.22, 22);",
|
||||
"select * from tb;"],
|
||||
"res": [True, True, True, True, True, True, True]
|
||||
},
|
||||
"test_db_none_stable_all_childtable_none": {
|
||||
"db_privilege": "none",
|
||||
"stable_priviege": "all",
|
||||
"child_table_ct1_privilege": "none",
|
||||
"child_table_ct2_privilege": "none",
|
||||
"table_tb_privilege": "none",
|
||||
"sql": ["insert into ct2 using stb tags('ct2') values(now, 23.23, 23)",
|
||||
"insert into ct1 using stb tags('ct1') values(now, 24.24, 24)",
|
||||
"select * from stb;",
|
||||
"select * from ct1;",
|
||||
"select * from ct2;",
|
||||
"insert into tb values(now, 25.25, 25);",
|
||||
"select * from tb;"],
|
||||
"res": [True, True, True, True, True, False, False]
|
||||
},
|
||||
"test_db_no_permission_childtable_all": {
|
||||
"db_privilege": "none",
|
||||
"stable_priviege": "none",
|
||||
"child_table_ct1_privilege": "all",
|
||||
"child_table_ct2_privilege": "none",
|
||||
"table_tb_privilege": "none",
|
||||
"sql": ["insert into ct2 using stb tags('ct2') values(now, 26.26, 26)",
|
||||
"insert into ct1 using stb tags('ct1') values(now, 27.27, 27)",
|
||||
"select * from stb;",
|
||||
"select * from ct1;",
|
||||
"select * from ct2;",
|
||||
"insert into tb values(now, 28.28, 28);",
|
||||
"select * from tb;"],
|
||||
"res": [False, True, True, True, False, False, False]
|
||||
},
|
||||
"test_db_none_stable_none_table_all": {
|
||||
"db_privilege": "none",
|
||||
"stable_priviege": "none",
|
||||
"child_table_ct1_privilege": "none",
|
||||
"child_table_ct2_privilege": "none",
|
||||
"table_tb_privilege": "all",
|
||||
"sql": ["insert into ct2 using stb tags('ct2') values(now, 26.26, 26)",
|
||||
"insert into ct1 using stb tags('ct1') values(now, 27.27, 27)",
|
||||
"select * from stb;",
|
||||
"select * from ct1;",
|
||||
"select * from ct2;",
|
||||
"insert into tb values(now, 29.29, 29);",
|
||||
"select * from tb;"],
|
||||
"res": [False, False, False, False, False, True, True]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -361,7 +421,7 @@ class TDTestCase:
|
|||
data = res.fetch_all()
|
||||
tdLog.debug("query result: {}".format(data))
|
||||
# check query results by cases
|
||||
if case_name in ["test_db_no_permission_childtable_read", "test_db_write_childtable_read"] and self.cases[case_name]["sql"][index] == "select * from ct2;":
|
||||
if case_name in ["test_db_no_permission_childtable_read", "test_db_write_childtable_read", "test_db_no_permission_childtable_all"] and self.cases[case_name]["sql"][index] == "select * from ct2;":
|
||||
if not self.cases[case_name]["res"][index]:
|
||||
if 0 == len(data):
|
||||
tdLog.debug("Query with sql {} successfully as expected with empty result".format(self.cases[case_name]["sql"][index]))
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
import sys
|
||||
import re
|
||||
import time
|
||||
import threading
|
||||
from taos.tmq import *
|
||||
from util.log import *
|
||||
from util.sql import *
|
||||
from util.cases import *
|
||||
from util.dnodes import *
|
||||
from util.common import *
|
||||
sys.path.append("./7-tmq")
|
||||
from tmqCommon import *
|
||||
|
||||
|
||||
class TDTestCase:
|
||||
def init(self, conn, logSql, replicaVar=1):
|
||||
self.replicaVar = int(replicaVar)
|
||||
tdLog.debug(f"start to excute {__file__}")
|
||||
tdSql.init(conn.cursor(), False)
|
||||
|
||||
self.db_name = "tmq_db"
|
||||
self.topic_name = "tmq_topic"
|
||||
self.stable_name = "tmqst"
|
||||
|
||||
|
||||
def prepareData(self):
|
||||
# create database
|
||||
tdSql.execute("create database if not exists %s;"%(self.db_name))
|
||||
tdSql.execute("use %s;"%(self.db_name))
|
||||
# create stable
|
||||
tdSql.execute("create table %s.tmqst (ts timestamp, col0 int) tags(groupid int);"%(self.db_name))
|
||||
# create child tables
|
||||
tdSql.execute("create table tmqct_1 using %s.%s tags(1);"%(self.db_name, self.stable_name))
|
||||
tdSql.execute("create table tmqct_2 using %s.%s tags(2);"%(self.db_name, self.stable_name))
|
||||
tdSql.execute("create table tmqct_3 using %s.%s tags(3);"%(self.db_name, self.stable_name))
|
||||
tdSql.execute("create table tmqct_4 using %s.%s tags(4);"%(self.db_name, self.stable_name))
|
||||
tdSql.execute("create table tmqct_5 using %s.%s tags(5);"%(self.db_name, self.stable_name))
|
||||
# insert into data
|
||||
ctb_list = ["tmqct_1", "tmqct_2", "tmqct_3", "tmqct_4", "tmqct_5"]
|
||||
for i in range(5):
|
||||
sql = "insert into %s "%(ctb_list[i])
|
||||
sql_values = "values"
|
||||
for j in range(1000 * i, 1000 * (i+1)):
|
||||
sql_values += "(%s, %s)"%("now" if j == 0 else "now+%s"%(str(j) + "s"), str(j))
|
||||
sql += sql_values + ";"
|
||||
tdLog.info(sql)
|
||||
tdSql.execute(sql)
|
||||
tdLog.info("Insert data into child tables successfully")
|
||||
# create topic
|
||||
tdSql.execute("create topic %s as select * from %s;"%(self.topic_name, self.stable_name))
|
||||
|
||||
def tmqSubscribe(self, inputDict):
|
||||
consumer_dict = {
|
||||
"group.id": inputDict['group_id'],
|
||||
"client.id": "client",
|
||||
"td.connect.user": "root",
|
||||
"td.connect.pass": "taosdata",
|
||||
"auto.commit.interval.ms": "1000",
|
||||
"enable.auto.commit": inputDict['auto_commit'],
|
||||
"auto.offset.reset": inputDict['offset_reset'],
|
||||
"experimental.snapshot.enable": "false",
|
||||
"msg.with.table.name": "false"
|
||||
}
|
||||
|
||||
consumer = Consumer(consumer_dict)
|
||||
try:
|
||||
consumer.subscribe([inputDict['topic_name']])
|
||||
except Exception as e:
|
||||
tdLog.info("consumer.subscribe() fail ")
|
||||
tdLog.info("%s"%(e))
|
||||
|
||||
tdLog.info("create consumer success!")
|
||||
return consumer
|
||||
|
||||
def test_seek_and_committed_position_with_autocommit(self):
|
||||
try:
|
||||
self.prepareData()
|
||||
inputDict = {
|
||||
"topic_name": self.topic_name,
|
||||
"group_id": "1",
|
||||
"auto_commit": "true",
|
||||
"offset_reset": "earliest"
|
||||
}
|
||||
consumer = self.tmqSubscribe(inputDict)
|
||||
while(True):
|
||||
res = consumer.poll(1)
|
||||
if not res:
|
||||
break
|
||||
err = res.error()
|
||||
if err is not None:
|
||||
raise err
|
||||
val = res.value()
|
||||
for block in val:
|
||||
tdLog.info("block.fetchall() number: %s"%(len(block.fetchall())))
|
||||
|
||||
partitions = consumer.assignment()
|
||||
position_partitions = consumer.position(partitions)
|
||||
tdLog.info("position_partitions: %s"%(position_partitions))
|
||||
for i in range(len(position_partitions)):
|
||||
tdLog.info("position_partitions[%s].offset: %s"%(i, position_partitions[i].offset))
|
||||
committed_partitions = consumer.committed(partitions)
|
||||
tdLog.info("committed_partitions: %s"%(committed_partitions))
|
||||
for i in range(len(committed_partitions)):
|
||||
tdLog.info("committed_partitions[%s].offset: %s"%(i, committed_partitions[i].offset))
|
||||
assert(len(position_partitions) == len(committed_partitions))
|
||||
for i in range(len(position_partitions)):
|
||||
assert(position_partitions[i].offset == committed_partitions[i].offset)
|
||||
# seek to the beginning of the topic
|
||||
|
||||
except Exception as ex:
|
||||
raise Exception("Failed to test seek and committed position with autocommit with error: {}".format(str(ex)))
|
||||
finally:
|
||||
consumer.unsubscribe()
|
||||
consumer.close()
|
||||
|
||||
def test_commit_by_offset(self):
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
self.test_seek_and_committed_position_with_autocommit()
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
tdLog.success(f"{__file__} successfully executed")
|
||||
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
Loading…
Reference in New Issue