Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e71df1ac
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22019
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e71df1ac
编写于
3月 16, 2023
作者:
S
slzhou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enhance: add taospyudf test and run it in CI
上级
40b9cd21
变更
6
展开全部
隐藏空白更改
内联
并排
Showing
6 changed file
with
337 addition
and
1115 deletion
+337
-1115
tests/parallel_test/cases.task
tests/parallel_test/cases.task
+1
-1104
tests/parallel_test/run_case.sh
tests/parallel_test/run_case.sh
+8
-0
tests/script/sh/l2norm.c
tests/script/sh/l2norm.c
+2
-11
tests/script/sh/pybitand.py
tests/script/sh/pybitand.py
+21
-0
tests/script/sh/pyl2norm.py
tests/script/sh/pyl2norm.py
+27
-0
tests/script/tsim/query/udfpy.sim
tests/script/tsim/query/udfpy.sim
+278
-0
未找到文件。
tests/parallel_test/cases.task
浏览文件 @
e71df1ac
此差异已折叠。
点击以展开。
tests/parallel_test/run_case.sh
浏览文件 @
e71df1ac
...
...
@@ -51,6 +51,9 @@ if [ $ent -eq 0 ]; then
ln
-s
/home/TDengine/debug/build/lib/libtaos.so /usr/lib/libtaos.so 2>/dev/null
ln
-s
/home/TDengine/debug/build/lib/libtaos.so /usr/lib/libtaos.so.1 2>/dev/null
ln
-s
/home/TDengine/include/client/taos.h /usr/include/taos.h 2>/dev/null
ln
-s
/home/TDengine/include/common/taosdef.h /usr/include/taosdef.h 2>/dev/null
ln
-s
/home/TDengine/include/util/taoserror.h /usr/include/taoserror.h 2>/dev/null
ln
-s
/home/TDengine/include/libs/function/taosudf.h /usr/include/taosudf.h 2>/dev/null
CONTAINER_TESTDIR
=
/home/TDengine
else
export
PATH
=
$PATH
:/home/TDinternal/debug/build/bin
...
...
@@ -58,6 +61,9 @@ else
ln
-s
/home/TDinternal/debug/build/lib/libtaos.so /usr/lib/libtaos.so 2>/dev/null
ln
-s
/home/TDinternal/debug/build/lib/libtaos.so /usr/lib/libtaos.so.1 2>/dev/null
ln
-s
/home/TDinternal/community/include/client/taos.h /usr/include/taos.h 2>/dev/null
ln
-s
/home/TDinternal/community/include/common/taosdef.h /usr/include/taosdef.h 2>/dev/null
ln
-s
/home/TDinternal/community/include/util/taoserror.h /usr/include/taoserror.h 2>/dev/null
ln
-s
/home/TDinternal/community/include/libs/function/taosudf.h /usr/include/taosudf.h 2>/dev/null
CONTAINER_TESTDIR
=
/home/TDinternal/community
fi
mkdir
-p
/var/lib/taos/subscribe
...
...
@@ -75,6 +81,8 @@ pip3 list|grep taospy
pip3 uninstall taospy
-y
pip3
install
taospy
==
2.7.6
pip3
install
taospyudf
$TIMEOUT_CMD
$cmd
RET
=
$?
echo
"cmd exit code:
$RET
"
...
...
tests/script/sh/l2norm.c
浏览文件 @
e71df1ac
...
...
@@ -16,7 +16,7 @@ DLL_EXPORT int32_t l2norm_destroy() {
DLL_EXPORT
int32_t
l2norm_start
(
SUdfInterBuf
*
buf
)
{
*
(
int64_t
*
)(
buf
->
buf
)
=
0
;
buf
->
bufLen
=
sizeof
(
double
);
buf
->
numOfResult
=
0
;
buf
->
numOfResult
=
1
;
return
0
;
}
...
...
@@ -58,20 +58,11 @@ DLL_EXPORT int32_t l2norm(SUdfDataBlock* block, SUdfInterBuf *interBuf, SUdfInte
*
(
double
*
)(
newInterBuf
->
buf
)
=
sumSquares
;
newInterBuf
->
bufLen
=
sizeof
(
double
);
if
(
interBuf
->
numOfResult
==
0
&&
numNotNull
==
0
)
{
newInterBuf
->
numOfResult
=
0
;
}
else
{
newInterBuf
->
numOfResult
=
1
;
}
newInterBuf
->
numOfResult
=
1
;
return
0
;
}
DLL_EXPORT
int32_t
l2norm_finish
(
SUdfInterBuf
*
buf
,
SUdfInterBuf
*
resultData
)
{
if
(
buf
->
numOfResult
==
0
)
{
resultData
->
numOfResult
=
0
;
return
0
;
}
double
sumSquares
=
*
(
double
*
)(
buf
->
buf
);
*
(
double
*
)(
resultData
->
buf
)
=
sqrt
(
sumSquares
);
resultData
->
bufLen
=
sizeof
(
double
);
...
...
tests/script/sh/pybitand.py
0 → 100644
浏览文件 @
e71df1ac
def
init
():
pass
def
process
(
block
):
(
rows
,
cols
)
=
block
.
shape
()
result
=
[]
for
i
in
range
(
rows
):
r
=
2
**
32
-
1
for
j
in
range
(
cols
):
cell
=
block
.
data
(
i
,
j
)
if
cell
is
None
:
result
.
append
(
None
)
break
else
:
r
=
r
&
cell
else
:
result
.
append
(
r
)
return
result
def
destroy
():
pass
tests/script/sh/pyl2norm.py
0 → 100644
浏览文件 @
e71df1ac
import
json
import
math
def
init
():
pass
def
destroy
():
pass
def
start
():
return
json
.
dumps
(
0.0
).
encode
(
'utf-8'
)
def
finish
(
buf
):
sum_squares
=
json
.
loads
(
buf
)
result
=
math
.
sqrt
(
sum_squares
)
return
result
def
reduce
(
datablock
,
buf
):
(
rows
,
cols
)
=
datablock
.
shape
()
sum_squares
=
json
.
loads
(
buf
)
for
i
in
range
(
rows
):
for
j
in
range
(
cols
):
cell
=
datablock
.
data
(
i
,
j
)
if
cell
is
not
None
:
sum_squares
+=
cell
*
cell
return
json
.
dumps
(
sum_squares
).
encode
(
'utf-8'
)
tests/script/tsim/query/udfpy.sim
0 → 100644
浏览文件 @
e71df1ac
system_content printf %OS%
if $system_content == Windows_NT then
return 0;
endi
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c udf -v 1
system sh/exec.sh -n dnode1 -s start
sql connect
print ======== step1 udf
system sh/compile_udf.sh
system mkdir -p /tmp/pyudf
system cp sh/pybitand.py /tmp/pyudf/
system cp sh/pyl2norm.py /tmp/pyudf/
system ls /tmp/pyudf
sql create database udf vgroups 3;
sql use udf;
sql select * from information_schema.ins_databases;
sql create table t (ts timestamp, f int);
sql insert into t values(now, 1)(now+1s, 2);
system_content printf %OS%
if $system_content == Windows_NT then
return 0;
endi
if $system_content == Windows_NT then
sql create function bit_and as 'C:\\Windows\\Temp\\bitand.dll' outputtype int bufSize 8;
sql create aggregate function l2norm as 'C:\\Windows\\Temp\\l2norm.dll' outputtype double bufSize 8;
else
sql create function bit_and as '/tmp/udf/libbitand.so' outputtype int bufSize 8;
sql create aggregate function l2norm as '/tmp/udf/libl2norm.so' outputtype double bufSize 8;
endi
sql create function pybitand as '/tmp/pyudf/pybitand.py' outputtype int language 'python';
sql create aggregate function pyl2norm as '/tmp/pyudf/pyl2norm.py' outputtype double bufSize 128 language 'python';
sql show functions;
if $rows != 4 then
return -1
endi
sql select bit_and(f, f) from t;
if $rows != 2 then
return -1
endi
if $data00 != 1 then
return -1
endi
if $data10 != 2 then
return -1
endi
sql select pybitand(f, f) from t;
if $rows != 2 then
return -1
endi
if $data00 != 1 then
return -1
endi
if $data10 != 2 then
return -1
endi
sql select l2norm(f) from t;
if $rows != 1 then
print expect 1, actual $rows
return -1
endi
if $data00 != 2.236067977 then
return -1
endi
sql select pyl2norm(f) from t;
if $rows != 1 then
print expect 1, actual $rows
return -1
endi
if $data00 != 2.236067977 then
return -1
endi
sql create table t2 (ts timestamp, f1 int, f2 int);
sql insert into t2 values(now, 0, 0)(now+1s, 1, 1);
sql select bit_and(f1, f2) from t2;
if $rows != 2 then
return -1
endi
if $data00 != 0 then
return -1
endi
if $data10 != 1 then
return -1
endi
sql select l2norm(f1, f2) from t2;
if $rows != 1 then
return -1
endi
if $data00 != 1.414213562 then
return -1
endi
sql select pybitand(f1, f2) from t2;
if $rows != 2 then
return -1
endi
if $data00 != 0 then
return -1
endi
if $data10 != 1 then
return -1
endi
sql select pyl2norm(f1, f2) from t2;
if $rows != 1 then
return -1
endi
if $data00 != 1.414213562 then
return -1
endi
sql insert into t2 values(now+2s, 1, null)(now+3s, null, 2);
sql select bit_and(f1, f2) from t2;
print $rows , $data00 , $data10 , $data20 , $data30
if $rows != 4 then
return -1
endi
if $data00 != 0 then
return -1
endi
if $data10 != 1 then
return -1
endi
if $data20 != NULL then
return -1
endi
if $data30 != NULL then
return -1
endi
sql select l2norm(f1, f2) from t2;
print $rows, $data00
if $rows != 1 then
return -1
endi
if $data00 != 2.645751311 then
return -1
endi
sql select pybitand(f1, f2) from t2;
print $rows , $data00 , $data10 , $data20 , $data30
if $rows != 4 then
return -1
endi
if $data00 != 0 then
return -1
endi
if $data10 != 1 then
return -1
endi
if $data20 != NULL then
return -1
endi
if $data30 != NULL then
return -1
endi
sql select pyl2norm(f1, f2) from t2;
print $rows, $data00
if $rows != 1 then
return -1
endi
if $data00 != 2.645751311 then
return -1
endi
sql insert into t2 values(now+4s, 4, 8)(now+5s, 5, 9);
sql select l2norm(f1-f2), l2norm(f1+f2) from t2;
print $rows , $data00 , $data01
if $rows != 1 then
return -1;
endi
if $data00 != 5.656854249 then
return -1
endi
if $data01 != 18.547236991 then
return -1
endi
sql select l2norm(bit_and(f2, f1)), l2norm(bit_and(f1, f2)) from t2;
print $rows , $data00 , $data01
if $rows != 1 then
return -1
endi
if $data00 != 1.414213562 then
return -1
endi
if $data01 != 1.414213562 then
return -1
endi
sql select l2norm(f2) from udf.t2 group by 1-bit_and(f1, f2) order by 1-bit_and(f1,f2);
print $rows , $data00 , $data10 , $data20
if $rows != 3 then
return -1
endi
if $data00 != 2.000000000 then
return -1
endi
if $data10 != 9.055385138 then
return -1
endi
if $data20 != 8.000000000 then
return -1
endi
sql select pyl2norm(f1-f2), pyl2norm(f1+f2) from t2;
print $rows , $data00 , $data01
if $rows != 1 then
return -1;
endi
if $data00 != 5.656854249 then
return -1
endi
if $data01 != 18.547236991 then
return -1
endi
sql select pyl2norm(pybitand(f2, f1)), pyl2norm(pybitand(f1, f2)) from t2;
print $rows , $data00 , $data01
if $rows != 1 then
return -1
endi
if $data00 != 1.414213562 then
return -1
endi
if $data01 != 1.414213562 then
return -1
endi
sql select pyl2norm(f2) from udf.t2 group by 1-pybitand(f1, f2) order by 1-pybitand(f1,f2);
print $rows , $data00 , $data10 , $data20
if $rows != 3 then
return -1
endi
if $data00 != 2.000000000 then
return -1
endi
if $data10 != 9.055385138 then
return -1
endi
if $data20 != 8.000000000 then
return -1
endi
#sql drop function bit_and;
#sql show functions;
#if $rows != 1 then
# return -1
#endi
#if $data00 != @l2norm@ then
# return -1
# endi
#sql drop function l2norm;
#sql show functions;
#if $rows != 0 then
# return -1
#endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录