Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
88d11b95
M
milvus
项目概览
milvus
/
milvus
11 个月 前同步成功
通知
261
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
88d11b95
编写于
4月 12, 2022
作者:
Z
zhuwenxing
提交者:
GitHub
4月 12, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add negtive tescases for load balance (#16460)
Signed-off-by:
N
zhuwenxing
<
wenxing.zhu@zilliz.com
>
上级
d5a0e8b7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
111 addition
and
0 deletion
+111
-0
tests/python_client/testcases/test_utility.py
tests/python_client/testcases/test_utility.py
+111
-0
未找到文件。
tests/python_client/testcases/test_utility.py
浏览文件 @
88d11b95
...
...
@@ -1493,3 +1493,114 @@ class TestUtilityAdvanced(TestcaseBase):
des_sealed_segment_ids
+=
segment_distribution
[
des_node_id
][
"sealed"
]
# assert sealed_segment_ids is subset of des_sealed_segment_ids
assert
set
(
sealed_segment_ids
).
issubset
(
des_sealed_segment_ids
)
@
pytest
.
mark
.
tags
(
CaseLabel
.
L1
)
def
test_load_balance_with_src_node_not_exist
(
self
):
"""
target: test load balance of collection
method: init a collection and load balance with src_node not exist
expected: raise exception
"""
# init a collection
c_name
=
cf
.
gen_unique_str
(
prefix
)
collection_w
=
self
.
init_collection_wrap
(
name
=
c_name
)
ms
=
MilvusSys
()
nb
=
3000
df
=
cf
.
gen_default_dataframe_data
(
nb
)
collection_w
.
insert
(
df
)
# get sealed segments
collection_w
.
num_entities
# get growing segments
collection_w
.
insert
(
df
)
collection_w
.
load
()
# prepare load balance params
res
,
_
=
self
.
utility_wrap
.
get_query_segment_info
(
c_name
)
segment_distribution
=
cf
.
get_segment_distribution
(
res
)
all_querynodes
=
[
node
[
"identifier"
]
for
node
in
ms
.
query_nodes
]
all_querynodes
=
sorted
(
all_querynodes
,
key
=
lambda
x
:
len
(
segment_distribution
[
x
][
"sealed"
])
if
x
in
segment_distribution
else
0
,
reverse
=
True
)
# set src_node_id as the id of indexnode's id, which is not exist for querynode
invalid_src_node_id
=
[
node
[
"identifier"
]
for
node
in
ms
.
index_nodes
][
0
]
src_node_id
=
all_querynodes
[
0
]
dst_node_ids
=
all_querynodes
[
1
:]
sealed_segment_ids
=
segment_distribution
[
src_node_id
][
"sealed"
]
# load balance
self
.
utility_wrap
.
load_balance
(
invalid_src_node_id
,
dst_node_ids
,
sealed_segment_ids
,
check_task
=
CheckTasks
.
err_res
,
check_items
=
{
ct
.
err_code
:
1
,
ct
.
err_msg
:
"is not exist to balance"
})
@
pytest
.
mark
.
tags
(
CaseLabel
.
L1
)
def
test_load_balance_with_all_dst_node_not_exist
(
self
):
"""
target: test load balance of collection
method: init a collection and load balance with all dst_node not exist
expected: raise exception
"""
# init a collection
c_name
=
cf
.
gen_unique_str
(
prefix
)
collection_w
=
self
.
init_collection_wrap
(
name
=
c_name
)
ms
=
MilvusSys
()
nb
=
3000
df
=
cf
.
gen_default_dataframe_data
(
nb
)
collection_w
.
insert
(
df
)
# get sealed segments
collection_w
.
num_entities
# get growing segments
collection_w
.
insert
(
df
)
collection_w
.
load
()
# prepare load balance params
res
,
_
=
self
.
utility_wrap
.
get_query_segment_info
(
c_name
)
segment_distribution
=
cf
.
get_segment_distribution
(
res
)
all_querynodes
=
[
node
[
"identifier"
]
for
node
in
ms
.
query_nodes
]
all_querynodes
=
sorted
(
all_querynodes
,
key
=
lambda
x
:
len
(
segment_distribution
[
x
][
"sealed"
])
if
x
in
segment_distribution
else
0
,
reverse
=
True
)
src_node_id
=
all_querynodes
[
0
]
# add indexnode's id, which is not exist for querynode, to dst_node_ids
dst_node_ids
=
[
node
[
"identifier"
]
for
node
in
ms
.
index_nodes
]
sealed_segment_ids
=
segment_distribution
[
src_node_id
][
"sealed"
]
# load balance
self
.
utility_wrap
.
load_balance
(
src_node_id
,
dst_node_ids
,
sealed_segment_ids
,
check_task
=
CheckTasks
.
err_res
,
check_items
=
{
ct
.
err_code
:
1
,
ct
.
err_msg
:
"no available queryNode to allocate"
})
@
pytest
.
mark
.
tags
(
CaseLabel
.
L1
)
def
test_load_balance_with_one_sealed_segment_id_not_exist
(
self
):
"""
target: test load balance of collection
method: init a collection and load balance with one of sealed segment ids not exist
expected: raise exception
"""
# init a collection
c_name
=
cf
.
gen_unique_str
(
prefix
)
collection_w
=
self
.
init_collection_wrap
(
name
=
c_name
)
ms
=
MilvusSys
()
nb
=
3000
df
=
cf
.
gen_default_dataframe_data
(
nb
)
collection_w
.
insert
(
df
)
# get sealed segments
collection_w
.
num_entities
# get growing segments
collection_w
.
insert
(
df
)
collection_w
.
load
()
# prepare load balance params
res
,
_
=
self
.
utility_wrap
.
get_query_segment_info
(
c_name
)
segment_distribution
=
cf
.
get_segment_distribution
(
res
)
all_querynodes
=
[
node
[
"identifier"
]
for
node
in
ms
.
query_nodes
]
all_querynodes
=
sorted
(
all_querynodes
,
key
=
lambda
x
:
len
(
segment_distribution
[
x
][
"sealed"
])
if
x
in
segment_distribution
else
0
,
reverse
=
True
)
src_node_id
=
all_querynodes
[
0
]
dst_node_ids
=
all_querynodes
[
1
:]
dst_node_ids
.
append
([
node
[
"identifier"
]
for
node
in
ms
.
index_nodes
][
0
])
sealed_segment_ids
=
segment_distribution
[
src_node_id
][
"sealed"
]
# add a segment id which is not exist or a growing segment
if
len
(
segment_distribution
[
src_node_id
][
"growing"
])
>
0
:
sealed_segment_ids
.
append
(
segment_distribution
[
src_node_id
][
"growing"
][
0
])
else
:
sealed_segment_ids
.
append
(
max
(
segment_distribution
[
src_node_id
][
"sealed"
])
+
1
)
# load balance
self
.
utility_wrap
.
load_balance
(
src_node_id
,
dst_node_ids
,
sealed_segment_ids
,
check_task
=
CheckTasks
.
err_res
,
check_items
=
{
ct
.
err_code
:
1
,
ct
.
err_msg
:
"is not exist"
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录