From 3026c80073e5e63bb4f7c1b593a8ca2d098dffa0 Mon Sep 17 00:00:00 2001 From: xsren <285808407@qq.com> Date: Tue, 19 Sep 2023 16:52:03 +0800 Subject: [PATCH] add fill test case --- tests/parallel_test/cases.task | 2 + tests/system-test/2-query/fill.py | 262 ++++++++++++++++++++++++++++ tests/system-test/2-query/interp.py | 16 ++ tests/system-test/runAllOne.sh | 2 + tests/system-test/win-test-file | 2 + 5 files changed, 284 insertions(+) create mode 100644 tests/system-test/2-query/fill.py diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index bd2294367b..bdbf7ac282 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -331,6 +331,8 @@ ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/hyperloglog.py -R ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/interp.py ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/interp.py -R +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/fill.py +,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/fill.py -R ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/irate.py ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/irate.py -R ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/join.py diff --git a/tests/system-test/2-query/fill.py b/tests/system-test/2-query/fill.py new file mode 100644 index 0000000000..f5cd2d5855 --- /dev/null +++ b/tests/system-test/2-query/fill.py @@ -0,0 +1,262 @@ +import taos +import sys + +from util.log import * +from util.sql import * +from util.cases 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()) + tdSql.init(conn.cursor(), logSql) # output sql.txt file + + def run(self): + dbname = "db" + tbname = "tb" + + tdSql.prepare() + + tdLog.printNoPrefix("==========step1:create table") + + tdSql.execute( + f'''create table if not exists {dbname}.{tbname} + (ts timestamp, c0 int, c1 bool, c2 varchar(100), c3 nchar(100), c4 varbinary(100)) + ''' + ) + + tdLog.printNoPrefix("==========step2:insert data") + + tdSql.execute(f"use db") + + tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:05', 5, true, 'varchar', 'nchar', 'varbinary')") + tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:10', 10, true, 'varchar', 'nchar', 'varbinary')") + tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:15', 15, NULL, NULL, NULL, NULL)") + + tdLog.printNoPrefix("==========step3:fill data") + tdSql.query(f"select avg(c0), last(c1) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, 'xx');") + tdSql.checkRows(5) + tdSql.checkData(0, 0, 9) + tdSql.checkData(1, 0, 5) + tdSql.checkData(2, 0, 10) + tdSql.checkData(3, 0, 15) + tdSql.checkData(4, 0, 9) + tdSql.checkData(0, 1, False) + tdSql.checkData(1, 1, True) + tdSql.checkData(2, 1, True) + tdSql.checkData(3, 1, False) + tdSql.checkData(4, 1, False) + + tdSql.query(f"select avg(c0), last(c1) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, True);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, True) + tdSql.checkData(1, 1, True) + tdSql.checkData(2, 1, True) + tdSql.checkData(3, 1, True) + tdSql.checkData(4, 1, True) + + tdSql.query(f"select avg(c0), last(c1) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, False);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, False) + tdSql.checkData(1, 1, True) + tdSql.checkData(2, 1, True) + tdSql.checkData(3, 1, False) + tdSql.checkData(4, 1, False) + + tdSql.query(f"select avg(c0), last(c2) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, 'abc');") + tdSql.checkRows(5) + tdSql.checkData(0, 1, "abc") + tdSql.checkData(1, 1, 'varchar') + tdSql.checkData(2, 1, 'varchar') + tdSql.checkData(3, 1, "abc") + tdSql.checkData(4, 1, "abc") + + tdSql.query(f"select avg(c0), last(c2) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, '我是#$^中文');") + tdSql.checkRows(5) + tdSql.checkData(0, 1, '我是#$^中文') + tdSql.checkData(1, 1, 'varchar') + tdSql.checkData(2, 1, 'varchar') + tdSql.checkData(3, 1, "我是#$^中文") + tdSql.checkData(4, 1, "我是#$^中文") + + tdSql.query(f"select avg(c0), last(c3) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, '我是#$^中文');") + tdSql.checkRows(5) + tdSql.checkData(0, 1, '我是#$^中文') + tdSql.checkData(1, 1, 'nchar') + tdSql.checkData(2, 1, 'nchar') + tdSql.checkData(3, 1, "我是#$^中文") + tdSql.checkData(4, 1, "我是#$^中文") + + tdSql.query(f"select avg(c0), last(c4) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, '我是中文');") + tdSql.checkRows(5) + tdSql.checkData(0, 1, b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87') + tdSql.checkData(1, 1, b'varbinary') + tdSql.checkData(2, 1, b'varbinary') + tdSql.checkData(3, 1, b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87') + tdSql.checkData(4, 1, b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87') + + tdLog.printNoPrefix("==========step4:fill null") + tdSql.query(f"select avg(c0), last(c1) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, NULL, NULL);") + tdSql.checkRows(5) + tdSql.checkData(0, 0, None) + tdSql.checkData(1, 0, 5) + tdSql.checkData(2, 0, 10) + tdSql.checkData(3, 0, 15) + tdSql.checkData(4, 0, None) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, True) + tdSql.checkData(2, 1, True) + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdSql.query(f"select avg(c0), last(c1) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, NULL);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, True) + tdSql.checkData(2, 1, True) + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdSql.query(f"select avg(c0), last(c2) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, NULL);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, 'varchar') + tdSql.checkData(2, 1, 'varchar') + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdSql.query(f"select avg(c0), last(c3) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, NULL);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, 'nchar') + tdSql.checkData(2, 1, 'nchar') + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdSql.query(f"select avg(c0), last(c4) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(value, 9, NULL);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, b'varbinary') + tdSql.checkData(2, 1, b'varbinary') + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdLog.printNoPrefix("==========step5:fill prev") + tdSql.query(f"select avg(c0), last(c1) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(PREV);") + tdSql.checkRows(5) + tdSql.checkData(0, 0, None) + tdSql.checkData(1, 0, 5) + tdSql.checkData(2, 0, 10) + tdSql.checkData(3, 0, 15) + tdSql.checkData(4, 0, 15) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, True) + tdSql.checkData(2, 1, True) + tdSql.checkData(3, 1, True) + tdSql.checkData(4, 1, True) + + tdSql.query(f"select avg(c0), last(c2) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(PREV);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, 'varchar') + tdSql.checkData(2, 1, 'varchar') + tdSql.checkData(3, 1, 'varchar') + tdSql.checkData(4, 1, 'varchar') + + tdSql.query(f"select avg(c0), last(c3) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(PREV);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, 'nchar') + tdSql.checkData(2, 1, 'nchar') + tdSql.checkData(3, 1, 'nchar') + tdSql.checkData(4, 1, 'nchar') + + tdSql.query(f"select avg(c0), last(c4) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(PREV);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, None) + tdSql.checkData(1, 1, b'varbinary') + tdSql.checkData(2, 1, b'varbinary') + tdSql.checkData(3, 1, b'varbinary') + tdSql.checkData(4, 1, b'varbinary') + + tdLog.printNoPrefix("==========step6:fill next") + tdSql.query(f"select avg(c0), last(c1) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(NEXT);") + tdSql.checkRows(5) + tdSql.checkData(0, 0, 5) + tdSql.checkData(1, 0, 5) + tdSql.checkData(2, 0, 10) + tdSql.checkData(3, 0, 15) + tdSql.checkData(4, 0, None) + tdSql.checkData(0, 1, True) + tdSql.checkData(1, 1, True) + tdSql.checkData(2, 1, True) + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdSql.query(f"select avg(c0), last(c2) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(NEXT);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, 'varchar') + tdSql.checkData(1, 1, 'varchar') + tdSql.checkData(2, 1, 'varchar') + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdSql.query(f"select avg(c0), last(c3) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(NEXT);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, 'nchar') + tdSql.checkData(1, 1, 'nchar') + tdSql.checkData(2, 1, 'nchar') + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdSql.query(f"select avg(c0), last(c4) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(NEXT);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, b'varbinary') + tdSql.checkData(1, 1, b'varbinary') + tdSql.checkData(2, 1, b'varbinary') + tdSql.checkData(3, 1, None) + tdSql.checkData(4, 1, None) + + tdSql.execute(f"insert into {dbname}.{tbname} values ('2020-02-01 00:00:20', 15, False, '中文', '中文', '中文');") + tdLog.printNoPrefix("==========step6:fill next") + tdSql.query(f"select avg(c0), last(c1) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(NEXT);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, True) + tdSql.checkData(1, 1, True) + tdSql.checkData(2, 1, True) + tdSql.checkData(3, 1, False) + tdSql.checkData(4, 1, False) + + tdSql.query(f"select avg(c0), last(c2) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(NEXT);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, 'varchar') + tdSql.checkData(1, 1, 'varchar') + tdSql.checkData(2, 1, 'varchar') + tdSql.checkData(3, 1, '中文') + tdSql.checkData(4, 1, '中文') + + tdSql.query(f"select avg(c0), last(c3) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(NEXT);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, 'nchar') + tdSql.checkData(1, 1, 'nchar') + tdSql.checkData(2, 1, 'nchar') + tdSql.checkData(3, 1, '中文') + tdSql.checkData(4, 1, '中文') + + tdSql.query(f"select avg(c0), last(c4) from {dbname}.{tbname} where ts>='2020-02-01 00:00:00' and ts<='2020-02-01 00:00:20' interval(5s) fill(NEXT);") + tdSql.checkRows(5) + tdSql.checkData(0, 1, b'varbinary') + tdSql.checkData(1, 1, b'varbinary') + tdSql.checkData(2, 1, b'varbinary') + tdSql.checkData(3, 1, b'\xe4\xb8\xad\xe6\x96\x87') + tdSql.checkData(4, 1, b'\xe4\xb8\xad\xe6\x96\x87') + def stop(self): + tdSql.close() + tdLog.success(f"{__file__} successfully executed") + +tdCases.addLinux(__file__, TDTestCase()) +tdCases.addWindows(__file__, TDTestCase()) diff --git a/tests/system-test/2-query/interp.py b/tests/system-test/2-query/interp.py index c2eb7bee2e..86d010209d 100644 --- a/tests/system-test/2-query/interp.py +++ b/tests/system-test/2-query/interp.py @@ -375,6 +375,22 @@ class TDTestCase: tdSql.checkData(11, 0, True) tdSql.checkData(12, 0, True) + tdSql.query(f"select interp(c6) from {dbname}.{tbname} range('2020-02-01 00:00:04', '2020-02-01 00:00:16') every(1s) fill(value, false)") + tdSql.checkRows(13) + tdSql.checkData(0, 0, False) + tdSql.checkData(1, 0, True) + tdSql.checkData(2, 0, False) + tdSql.checkData(3, 0, False) + tdSql.checkData(4, 0, False) + tdSql.checkData(5, 0, False) + tdSql.checkData(6, 0, True) + tdSql.checkData(7, 0, False) + tdSql.checkData(8, 0, False) + tdSql.checkData(9, 0, False) + tdSql.checkData(10, 0, False) + tdSql.checkData(11, 0, True) + tdSql.checkData(12, 0, False) + tdSql.query(f"select interp(c6) from {dbname}.{tbname} range('2020-02-01 00:00:04', '2020-02-01 00:00:16') every(1s) fill(value, NULL)") tdSql.checkRows(13) tdSql.checkData(0, 0, None) diff --git a/tests/system-test/runAllOne.sh b/tests/system-test/runAllOne.sh index a870e36935..0eb2efdb57 100644 --- a/tests/system-test/runAllOne.sh +++ b/tests/system-test/runAllOne.sh @@ -210,6 +210,8 @@ python3 ./test.py -f 2-query/hyperloglog.py -P python3 ./test.py -f 2-query/hyperloglog.py -P -R python3 ./test.py -f 2-query/interp.py -P python3 ./test.py -f 2-query/interp.py -P -R +python3 ./test.py -f 2-query/fill.py -P +python3 ./test.py -f 2-query/fill.py -P -R python3 ./test.py -f 2-query/irate.py -P python3 ./test.py -f 2-query/irate.py -P -R python3 ./test.py -f 2-query/join.py -P diff --git a/tests/system-test/win-test-file b/tests/system-test/win-test-file index 443c27fd7e..df8f589407 100644 --- a/tests/system-test/win-test-file +++ b/tests/system-test/win-test-file @@ -271,6 +271,8 @@ python3 ./test.py -f 2-query/hyperloglog.py python3 ./test.py -f 2-query/hyperloglog.py -R python3 ./test.py -f 2-query/interp.py python3 ./test.py -f 2-query/interp.py -R +python3 ./test.py -f 2-query/fill.py +python3 ./test.py -f 2-query/fill.py -R python3 ./test.py -f 2-query/irate.py python3 ./test.py -f 2-query/irate.py -R python3 ./test.py -f 2-query/join.py