From 6f5fe654d7baed5cbbbbb0e52c30b14dbaf297ba Mon Sep 17 00:00:00 2001 From: "wenzhouwww@live.cn" Date: Thu, 19 May 2022 15:43:46 +0800 Subject: [PATCH] add test case for udf --- tests/system-test/0-others/udfTest.py | 113 +++++++++++++------------- 1 file changed, 57 insertions(+), 56 deletions(-) diff --git a/tests/system-test/0-others/udfTest.py b/tests/system-test/0-others/udfTest.py index 3aeee69b41..7d5bb6a8c1 100644 --- a/tests/system-test/0-others/udfTest.py +++ b/tests/system-test/0-others/udfTest.py @@ -50,6 +50,8 @@ class TDTestCase: def prepare_data(self): + tdSql.execute("drop database if exists db ") + tdSql.execute("create database if not exists db days 300") tdSql.execute("use db") tdSql.execute( '''create table stb1 @@ -470,51 +472,43 @@ class TDTestCase: tdSql.checkData(0,1,169.661427555) def try_query_sql(self): - sql_lists = [ + udf1_sqls = [ "select num1 , udf1(num1) ,num2 ,udf1(num2),num3 ,udf1(num3),num4 ,udf1(num4) from tb" , "select c1 , udf1(c1) ,c2 ,udf1(c2), c3 ,udf1(c3), c4 ,udf1(c4) from stb1 order by c1" , + "select udf1(num1) , max(num1) from tb;" , + "select udf1(num1) , min(num1) from tb;" , + "select udf1(num1) , top(num1,1) from tb;" , + "select udf1(num1) , bottom(num1,1) from tb;" , + "select udf1(c1) , max(c1) from stb1;" , + "select udf1(c1) , min(c1) from stb1;" , + "select udf1(c1) , top(c1 ,1) from stb1;" , + "select udf1(c1) , bottom(c1,1) from stb1;" , + "select udf1(num1) , abs(num1) from tb;" , + "select udf1(num1) , csum(num1) from tb;" , + "select udf1(c1) , csum(c1) from stb1;" , + "select udf1(c1) , abs(c1) from stb1;" , + "select abs(udf1(c1)) , abs(ceil(c1)) from stb1 order by ts;" , + "select abs(udf1(c1)) , abs(ceil(c1)) from ct1 order by ts;" , + "select abs(udf1(c1)) , abs(ceil(c1)) from stb1 where c1 is null order by ts;" , + "select c1 ,udf1(c1) , c6 ,udf1(c6) from stb1 where c1 > 8 order by ts" , + "select udf1(sub1.c1), udf1(sub2.c2) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , + "select sub1.c1 , udf1(sub1.c1), sub2.c2 ,udf1(sub2.c2) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , + "select udf1(c1) from ct1 group by c1" , + "select udf1(c1) from stb1 group by c1" , + "select c1,c2, udf1(c1,c2) from ct1 group by c1,c2" , + "select c1,c2, udf1(c1,c2) from stb1 group by c1,c2" , + "select num1,num2,num3,udf1(num1,num2,num3) from tb" , + "select c1,c6,udf1(c1,c6) from stb1 order by ts" , + "select abs(udf1(c1,c6,c1,c6)) , abs(ceil(c1)) from stb1 where c1 is not null order by ts;" + ] + udf2_sqls = ["select udf2(sub1.c1), udf2(sub2.c2) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , + "select udf2(c1) from stb1 group by 1-udf1(c1)" , "select udf2(num1) ,udf2(num2), udf2(num3) from tb" , "select udf2(num1)+100 ,udf2(num2)-100, udf2(num3)*100 ,udf2(num3)/100 from tb" , "select udf2(c1) ,udf2(c6) from stb1 " , "select udf2(c1)+100 ,udf2(c6)-100 ,udf2(c1)*100 ,udf2(c6)/100 from stb1 " , "select udf2(c1+100) ,udf2(c6-100) ,udf2(c1*100) ,udf2(c6/100) from ct1" , "select udf2(c1+100) ,udf2(c6-100) ,udf2(c1*100) ,udf2(c6/100) from stb1 " , - "select udf1(num1) , max(num1) from tb;" , - "select floor(num1) , max(num1) from tb;" , - "select udf1(num1) , min(num1) from tb;" , - "select ceil(num1) , min(num1) from tb;" , - "select udf1(num1) , top(num1,1) from tb;" , - "select udf1(num1) , bottom(num1,1) from tb;" , - "select udf1(c1) , max(c1) from stb1;" , - "select abs(c1) , max(c1) from stb1;" , - "select udf1(c1) , min(c1) from stb1;" , - "select floor(c1) , min(c1) from stb1;" , - "select udf1(c1) , top(c1 ,1) from stb1;" , - "select abs(c1) , top(c1 ,1) from stb1;" , - "select udf1(c1) , bottom(c1,1) from stb1;" , - "select ceil(c1) , bottom(c1,1) from stb1;" , - "select udf1(num1) , abs(num1) from tb;" , - "select floor(num1) , abs(num1) from tb;" , - "select udf1(num1) , csum(num1) from tb;" , - "select ceil(num1) , csum(num1) from tb;" , - "select udf1(c1) , csum(c1) from stb1;" , - "select floor(c1) , csum(c1) from stb1;" , - "select udf1(c1) , abs(c1) from stb1;" , - "select abs(c1) , ceil(c1) from stb1;" , - "select abs(udf1(c1)) , abs(ceil(c1)) from stb1 order by ts;" , - "select abs(udf1(c1)) , abs(ceil(c1)) from ct1 order by ts;" , - "select udf2(c1) from stb1 group by 1-udf1(c1)" , - - "select abs(udf1(c1)) , abs(ceil(c1)) from stb1 where c1 is null order by ts;" , - "select c1 ,udf1(c1) , c6 ,udf1(c6) from stb1 where c1 > 8 order by ts" , - "select sub1.c1, sub2.c2 from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , - "select udf1(sub1.c1), udf1(sub2.c2) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , - "select sub1.c1 , udf1(sub1.c1), sub2.c2 ,udf1(sub2.c2) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , - "select udf2(sub1.c1), udf2(sub2.c2) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , - "select udf1(c1) from ct1 group by c1" , - "select udf1(c1) from stb1 group by c1" , - "select c1,c2, udf1(c1,c2) from ct1 group by c1,c2" , - "select c1,c2, udf1(c1,c2) from stb1 group by c1,c2" , "select udf2(c1) from ct1 group by c1" , "select udf2(c1) from stb1 group by c1" , "select c1,c2, udf2(c1,c6) from ct1 group by c1,c2" , @@ -522,23 +516,13 @@ class TDTestCase: "select udf2(c1) from stb1 group by udf1(c1)" , "select udf2(c1) from stb1 group by floor(c1)" , "select udf2(c1) from stb1 group by floor(c1) order by udf2(c1)" , - "select num1,num2,num3,udf1(num1,num2,num3) from tb" , - "select c1,c6,udf1(c1,c6) from stb1 order by ts" , - "select abs(udf1(c1,c6,c1,c6)) , abs(ceil(c1)) from stb1 where c1 is not null order by ts;" , - "select udf2(sub1.c1 ,sub1.c2), udf2(sub2.c2 ,sub2.c1) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , - "drop function udf1 " , - "drop function udf2 " , + + "select udf2(sub1.c1 ,sub1.c2), udf2(sub2.c2 ,sub2.c1) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , "select udf2(sub1.c1 ,sub1.c2), udf2(sub2.c2 ,sub2.c1) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , "select udf2(sub1.c1 ,sub1.c2), udf2(sub2.c2 ,sub2.c1) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null" , - "select count(*) from stb1" , "select udf2(sub1.c1 ,sub1.c2), udf2(sub2.c2 ,sub2.c1) from sub1, sub2 where sub1.ts=sub2.ts and sub1.c1 is not null"] - tdSql.execute("use db") - for sql in sql_lists: - try: - tdSql.execute(sql) - except: - pass + return udf1_sqls ,udf2_sqls @@ -551,7 +535,12 @@ class TDTestCase: # create function without buffer tdSql.execute("create function udf1 as '/tmp/udf/libudf1.so' outputtype int") tdSql.execute("create aggregate function udf2 as '/tmp/udf/libudf2.so' outputtype double") - # self.try_query_sql() + udf1_sqls ,udf2_sqls = self.try_query_sql() + + for scalar_sql in udf1_sqls: + tdSql.query(scalar_sql) + for aggregate_sql in udf2_sqls: + tdSql.error(aggregate_sql) # create function without aggregate @@ -562,7 +551,13 @@ class TDTestCase: # create function without buffer tdSql.execute("create aggregate function udf1 as '/tmp/udf/libudf1.so' outputtype int bufSize 8 ") tdSql.execute("create function udf2 as '/tmp/udf/libudf2.so' outputtype double bufSize 8") - # self.try_query_sql() + udf1_sqls ,udf2_sqls = self.try_query_sql() + + for scalar_sql in udf1_sqls: + tdSql.error(scalar_sql) + for aggregate_sql in udf2_sqls: + tdSql.error(aggregate_sql) + @@ -601,6 +596,7 @@ class TDTestCase: # tdLog.info("start udfd : %s " % start_udfd) def test_function_name(self): + tdLog.info(" create function name is not build_in functions ") tdSql.execute(" drop function udf1 ") tdSql.execute(" drop function udf2 ") tdSql.error("create function max as '/tmp/udf/libudf1.so' outputtype int bufSize 8") @@ -634,20 +630,25 @@ class TDTestCase: def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring - tdSql.prepare() + print(" env is ok for all ") self.prepare_udf_so() self.prepare_data() self.create_udf_function() self.basic_udf_query() self.loop_kill_udfd() self.restart_taosd_query_udf() - # self.unexpected_create() - # self.test_function_name() + self.unexpected_create() + tdSql.execute(" drop function udf1 ") + tdSql.execute(" drop function udf2 ") + self.create_udf_function() + self.basic_udf_query() + self.test_function_name() + def stop(self): tdSql.close() tdLog.success(f"{__file__} successfully executed") tdCases.addLinux(__file__, TDTestCase()) -tdCases.addWindows(__file__, TDTestCase()) +tdCases.addWindows(__file__, TDTestCase()) \ No newline at end of file