Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
73fb498f
milvus
项目概览
BaiXuePrincess
/
milvus
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
73fb498f
编写于
5月 23, 2019
作者:
X
Xu Peng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(db): add Archive conf in options
Former-commit-id: caa950e7119264fd911f21cd10b4fbb2db896b7d
上级
a7c22f8e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
106 addition
and
0 deletion
+106
-0
cpp/src/db/Options.cpp
cpp/src/db/Options.cpp
+44
-0
cpp/src/db/Options.h
cpp/src/db/Options.h
+17
-0
cpp/unittest/db/db_tests.cpp
cpp/unittest/db/db_tests.cpp
+45
-0
未找到文件。
cpp/src/db/Options.cpp
浏览文件 @
73fb498f
...
...
@@ -3,6 +3,11 @@
* Unauthorized copying of this file, via any medium is strictly prohibited.
* Proprietary and confidential.
******************************************************************************/
#include <stdlib.h>
#include <assert.h>
#include <easylogging++.h>
#include <boost/algorithm/string.hpp>
#include "Options.h"
#include "Env.h"
#include "DBMetaImpl.h"
...
...
@@ -15,6 +20,45 @@ Options::Options()
:
env
(
Env
::
Default
())
{
}
ArchiveConf
::
ArchiveConf
(
const
std
::
string
&
type
,
const
std
::
string
&
criterias
)
{
ParseType
(
type
);
ParseCritirias
(
criterias
);
}
void
ArchiveConf
::
ParseCritirias
(
const
std
::
string
&
criterias
)
{
std
::
stringstream
ss
(
criterias
);
std
::
vector
<
std
::
string
>
tokens
;
boost
::
algorithm
::
split
(
tokens
,
criterias
,
boost
::
is_any_of
(
";"
));
if
(
tokens
.
size
()
==
0
)
{
return
;
}
for
(
auto
&
token
:
tokens
)
{
std
::
vector
<
std
::
string
>
kv
;
boost
::
algorithm
::
split
(
kv
,
token
,
boost
::
is_any_of
(
":"
));
if
(
kv
.
size
()
!=
2
)
{
LOG
(
WARNING
)
<<
"Invalid ArchiveConf Criterias: "
<<
token
<<
" Ignore!"
;
continue
;
}
if
(
kv
[
0
]
!=
"disk"
&&
kv
[
0
]
!=
"days"
)
{
LOG
(
WARNING
)
<<
"Invalid ArchiveConf Criterias: "
<<
token
<<
" Ignore!"
;
continue
;
}
auto
value
=
std
::
stoi
(
kv
[
1
]);
criterias_
[
kv
[
0
]]
=
value
;
}
}
void
ArchiveConf
::
ParseType
(
const
std
::
string
&
type
)
{
if
(
type
!=
"delete"
&&
type
!=
"swap"
)
{
LOG
(
ERROR
)
<<
"Invalid Archive"
;
assert
(
false
);
}
type_
=
type
;
}
/* DBMetaOptions::DBMetaOptions(const std::string& dbpath, */
/* const std::string& uri) */
/* : path(dbpath), backend_uri(uri) { */
...
...
cpp/src/db/Options.h
浏览文件 @
73fb498f
...
...
@@ -7,6 +7,7 @@
#include <string>
#include <memory>
#include <map>
namespace
zilliz
{
namespace
vecwise
{
...
...
@@ -14,6 +15,22 @@ namespace engine {
class
Env
;
struct
ArchiveConf
{
using
CriteriaT
=
std
::
map
<
std
::
string
,
int
>
;
ArchiveConf
(
const
std
::
string
&
type
,
const
std
::
string
&
criterias
=
"disk:512"
);
const
std
::
string
&
GetType
()
const
{
return
type_
;
}
const
CriteriaT
GetCriterias
()
const
{
return
criterias_
;
}
private:
void
ParseCritirias
(
const
std
::
string
&
type
);
void
ParseType
(
const
std
::
string
&
criterias
);
std
::
string
type_
;
CriteriaT
criterias_
;
};
struct
DBMetaOptions
{
/* DBMetaOptions(const std::string&, const std::string&); */
std
::
string
path
;
...
...
cpp/unittest/db/db_tests.cpp
浏览文件 @
73fb498f
...
...
@@ -12,6 +12,51 @@
using
namespace
zilliz
::
vecwise
;
TEST_F
(
DBTest
,
CONFIG_TEST
)
{
{
EXPECT_DEATH
(
engine
::
ArchiveConf
conf
(
"wrong"
),
""
);
}
{
engine
::
ArchiveConf
conf
(
"delete"
);
ASSERT_EQ
(
conf
.
GetType
(),
"delete"
);
auto
criterias
=
conf
.
GetCriterias
();
ASSERT_TRUE
(
criterias
.
size
()
==
1
);
ASSERT_TRUE
(
criterias
[
"disk"
]
==
512
);
}
{
engine
::
ArchiveConf
conf
(
"swap"
);
ASSERT_EQ
(
conf
.
GetType
(),
"swap"
);
auto
criterias
=
conf
.
GetCriterias
();
ASSERT_TRUE
(
criterias
.
size
()
==
1
);
ASSERT_TRUE
(
criterias
[
"disk"
]
==
512
);
}
{
ASSERT_ANY_THROW
(
engine
::
ArchiveConf
conf1
(
"swap"
,
"disk:"
));
ASSERT_ANY_THROW
(
engine
::
ArchiveConf
conf2
(
"swap"
,
"disk:a"
));
engine
::
ArchiveConf
conf
(
"swap"
,
"disk:1024"
);
auto
criterias
=
conf
.
GetCriterias
();
ASSERT_TRUE
(
criterias
.
size
()
==
1
);
ASSERT_TRUE
(
criterias
[
"disk"
]
==
1024
);
}
{
ASSERT_ANY_THROW
(
engine
::
ArchiveConf
conf1
(
"swap"
,
"days:"
));
ASSERT_ANY_THROW
(
engine
::
ArchiveConf
conf2
(
"swap"
,
"days:a"
));
engine
::
ArchiveConf
conf
(
"swap"
,
"days:100"
);
auto
criterias
=
conf
.
GetCriterias
();
ASSERT_TRUE
(
criterias
.
size
()
==
1
);
ASSERT_TRUE
(
criterias
[
"days"
]
==
100
);
}
{
ASSERT_ANY_THROW
(
engine
::
ArchiveConf
conf1
(
"swap"
,
"days:"
));
ASSERT_ANY_THROW
(
engine
::
ArchiveConf
conf2
(
"swap"
,
"days:a"
));
engine
::
ArchiveConf
conf
(
"swap"
,
"days:100;disk:200"
);
auto
criterias
=
conf
.
GetCriterias
();
ASSERT_TRUE
(
criterias
.
size
()
==
2
);
ASSERT_TRUE
(
criterias
[
"days"
]
==
100
);
ASSERT_TRUE
(
criterias
[
"disk"
]
==
200
);
}
}
TEST_F
(
DBTest
,
DB_TEST
)
{
static
const
std
::
string
group_name
=
"test_group"
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录