milvus/core/unittest/db/utils.cpp
groot 28eca5de38
wal implement (#3464)
* refactor LogMgr (#3372)

Signed-off-by: Wang Xiangyu <xy.wang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* add wal unittest (#3367)

* add wal unittest

Signed-off-by: groot <yihua.mo@zilliz.com>

* fix test fail

Signed-off-by: groot <yihua.mo@zilliz.com>

* Find system headers with cmake and clang-tidy (#3364)

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci]add google/crc32c into NOTICE.md (#3373)

Signed-off-by: Wang Xiangyu <xy.wang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* prepare change memmanager for wal

Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci]update issue template (#3379)

Signed-off-by: Wang Xiangyu <xy.wang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* fix wal test case

Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] fix java sdk test case (#3375)

* java main class

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] fix java sdk test

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] fix java sdk test

Signed-off-by: zongyufen <zongyufen@foxmail.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* optimize download & compile of sqlite (#3361)

* optimize sqlite

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* rm sqlite url

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* fix bug

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] rm log (#3378)

Signed-off-by: shengjun.li <shengjun.li@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci]  fix generate default entities (#3382)

* java main class

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] fix java sdk test

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] fix java sdk test

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] fix generate default entities

Signed-off-by: zongyufen <zongyufen@foxmail.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Skip flat search params (#3381)

* assert top ids

Signed-off-by: zw <zw@milvus.io>

* update milvus-helm to 0.11.0

Signed-off-by: zw <zw@milvus.io>

Co-authored-by: zw <zw@milvus.io>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] update clang-tidy rules (#3386)

* [skip ci] update clang-tidy rules

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* [skip ci] update clang-tidy rules

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Optimize download & compile of Aws (#3384)

* runable aws

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* optimize aws

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] modify test flush and compact (#3390)

* java main class

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] fix java sdk test

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] fix java sdk test

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] fix generate default entities

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] modify test flush

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] modify test compact

Signed-off-by: zongyufen <zongyufen@foxmail.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* rewrite insert memmanager

Signed-off-by: groot <yihua.mo@zilliz.com>

* Optimize thirdparty download workflow  (#3394)

* Optimize thirdparty download workflow

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Optimize thirdparty download workflow

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Optimize thirdparty download workflow

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Optimize thirdparty download workflow

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Enlarge event queue (#3393)

Signed-off-by: yinghao.zou <yinghao.zou@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Add GetPageEntity unittest (#3397)

* Add web server interface

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Add unittest/server

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Add web server ut

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix web server insert bug

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix web server ut crash bug

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix web server ut gpu compile error

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix codacy quality

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix row_num error

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Change row insert to column insert

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix dsl issue

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix GetEntityByID bug

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Add GetPageEntity interface

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix some webserver bugs

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Remove server_config.yaml

Signed-off-by: fishpenguin <kun.yu@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Fix thirdparty not find ccache but still use it (#3398)

* fix sqlite ccache

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* thirdparty EP using ccache configure

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* optimize oatpp  (#3377)

* optimize oatpp

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* fix some bug

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* fit atomic not find bug

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* add one config fo oatpp

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* change oatpp version

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* comment url_md5

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* change oatpp version

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* change aws target name

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Split Ftype into Ftype and FEtype (#3341)

* fix include directories not find bug (#3323)

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* reduce grpc download file size from 380M to 130M  (#3326)

* reduce grpc download file size from 380M to 130M

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* fix bug

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* update clang-tidy config (#3314)

* update clang-tidy config

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* update .clang-tidy

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* update clang-tidy config

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* update clang-tidy HeaderFilterRegex

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* enable fetype

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* rename field_element_method

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* add FETYPE_TYPE

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* Add WebServer unittest (#3321)

* Add web server interface

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Add unittest/server

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Add web server ut

Signed-off-by: fishpenguin <kun.yu@zilliz.com>
Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* modify db schema and remove conversion

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* weak fetype

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* enforce strong fetype

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* lint

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* format code

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

* [skip ci] fix

Signed-off-by: fluorinedog <fluorinedog@gmail.com>

Co-authored-by: XuanYang-cn <51370125+XuanYang-cn@users.noreply.github.com>
Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Co-authored-by: Cai Yudong <yudong.cai@zilliz.com>
Co-authored-by: yukun <kun.yu@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Master codacy check (#3366)

* codacy fix

Signed-off-by: cqy <yaya645@126.com>

* codacy

Signed-off-by: cqy <yaya645@126.com>

* codacy

Signed-off-by: cqy <yaya645@126.com>

* codacy check

Signed-off-by: cqy <yaya645@126.com>

* codacy

Signed-off-by: cqy <yaya645@126.com>

* codacy

Signed-off-by: cqy <yaya645@126.com>

* codacy

Signed-off-by: cqy <yaya645@126.com>

* clang-tiny

Signed-off-by: cqy <yaya645@126.com>

* clang-tidy check

Signed-off-by: cqy <yaya645@126.com>

* clang-tindy check

Signed-off-by: cqy <yaya645@126.com>

* clang-tidy check

Signed-off-by: cqy <yaya645@126.com>

* clang-tidy

Signed-off-by: cqy <yaya645@126.com>

* clang-tidy check

Signed-off-by: cqy <yaya645@126.com>

* clang-tidy check

Signed-off-by: cqy <yaya645@126.com>

* clang-tidy check

Signed-off-by: cqy <yaya645@126.com>

* clang-tidy check

Signed-off-by: cqy <yaya645@126.com>

Co-authored-by: Cai Yudong <yudong.cai@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] add constants.java (#3404)

Signed-off-by: zw <zw@milvus.io>

Co-authored-by: zw <zw@milvus.io>
Signed-off-by: groot <yihua.mo@zilliz.com>

* fix dsl term with multi fields (#3403)

Signed-off-by: zongyufen <zongyufen@foxmail.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] comment unused insert case (#3405)

Signed-off-by: yinghao.zou <yinghao.zou@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* enable clang-tidy check (#3396)

* enable clang-tidy check

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* update run_clang_tidy.py

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* enable clang-tidy check

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* update run_clang_tidy.py

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* update run_clang_tidy.py

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* update run_clang_tidy.py

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>

* remove rule modernize-use-equals-default

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* fix the bugs of delete all and compact (#3395)

* fix the bugs of delete all and compact

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>

* fix the wrong usages in unittest

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>

* fix the bug of insert makes no effect

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>

* add character check in ExtraFileInfo and change the const size and type

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>

* format code

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>

* fix wrong test case

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Fix TestSearchDSL multi fields bug (#3411)

Signed-off-by: fishpenguin <kun.yu@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Optimize fiu and finish thirdparty optimization (#3412)

* fiu runable

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* runable riu

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* optimize fiu and rm ThirdPartyPackages.cmake

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* fix bug

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* fix test using fiu

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] Java sdk test: add testIndex.java  (#3409)

* [skip ci] add constants.java

Signed-off-by: zw <zw@milvus.io>

* [skip ci] add testIndex.java

Signed-off-by: zw <zw@milvus.io>

* [skip ci] add TestDeleteEntities.java

Signed-off-by: zw <zw@milvus.io>

Co-authored-by: zw <zw@milvus.io>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] Test get entity by id (#3417)

* [skip ci] update for Contasts

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] test get entity by id

Signed-off-by: zongyufen <zongyufen@foxmail.com>

* [skip ci] test get entity by id

Signed-off-by: zongyufen <zongyufen@foxmail.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* update clang-tidy rules (#3416)

Signed-off-by: yudong.cai <yudong.cai@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* fix unittest failed

Signed-off-by: groot <yihua.mo@zilliz.com>

* remove the _id fileld when get collection info (#3414)

* fix the bug of issue #3336

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>

* fix wrong test case

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* rewrite insert machinery

Signed-off-by: groot <yihua.mo@zilliz.com>

* insert fields validation

Signed-off-by: groot <yihua.mo@zilliz.com>

* code format

Signed-off-by: groot <yihua.mo@zilliz.com>

* Milvus build stage parallel processing (#3423)

* Milvus build stage parallel processing

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Milvus build stage parallel processing

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Milvus build stage parallel processing

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Milvus build stage parallel processing

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Milvus build stage parallel processing

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Milvus build stage parallel processing

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* avoid build hang

Signed-off-by: groot <yihua.mo@zilliz.com>

* fix faiss cannot build gpu bug (#3424)

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* wal path

Signed-off-by: groot <yihua.mo@zilliz.com>

* typo

Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] add TestSearchEntities.java  (#3433)

* [skip ci] add constants.java

Signed-off-by: zw <zw@milvus.io>

* [skip ci] add testIndex.java

Signed-off-by: zw <zw@milvus.io>

* [skip ci] add TestDeleteEntities.java

Signed-off-by: zw <zw@milvus.io>

* update TestSearchEntities.java

Signed-off-by: zw <zw@milvus.io>

* [skip ci] add TestSearchEntities.java

Signed-off-by: zw <zw@milvus.io>

Co-authored-by: zw <zw@milvus.io>
Signed-off-by: groot <yihua.mo@zilliz.com>

* #3265 fix memory leak (#3413)

* #3265 fix memory leak

Signed-off-by: Wang Xiangyu <xy.wang@zilliz.com>

* fix clang-format

Signed-off-by: Wang Xiangyu <xy.wang@zilliz.com>

* update

Signed-off-by: Wang Xiangyu <xy.wang@zilliz.com>

* comment some change

Signed-off-by: Wang Xiangyu <xy.wang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Fix webserver set_config bug (#3425)

* Fix TestSearchDSL multi fields bug

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix set_config bug

Signed-off-by: fishpenguin <kun.yu@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Update mergify

Signed-off-by: jinhai <hai.jin@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Fix Server get stuck if create index with invalide metric types after entities inserted (#3428)

* add create index with invalid metric type case

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* fix bin index validation

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

* change changelog

Signed-off-by: yangxuan <xuan.yang@zilliz.com>

Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Add partition_tag in GetPageEntities (#3434)

* Fix TestSearchDSL multi fields bug

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Fix set_config bug

Signed-off-by: fishpenguin <kun.yu@zilliz.com>

* Add partition_tag in GetPageEntities

Signed-off-by: fishpenguin <kun.yu@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Fix Server crashed during random test (#3436)

Signed-off-by: yinghao.zou <yinghao.zou@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* Optimize clang-tidy workflow for code static analysis (#3432)

* Optimize clang-tidy for code static analysis

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>

* Optimize clang-tidy for code static analysis

Signed-off-by: quicksilver <zhifeng.zhang@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] add assert by collection stats (#3437)

Signed-off-by: zongyufen <zongyufen@foxmail.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* fix get entity by id bug

Signed-off-by: groot <yihua.mo@zilliz.com>

* typo

Signed-off-by: groot <yihua.mo@zilliz.com>

* fix wal bug

Signed-off-by: groot <yihua.mo@zilliz.com>

* [skip ci] upgrade master version to v0.11.0 (fix #3449) (#3450)

Signed-off-by: yinghao.zou <yinghao.zou@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* fix a bug

Signed-off-by: groot <yihua.mo@zilliz.com>

* fix wal bug

Signed-off-by: groot <yihua.mo@zilliz.com>

* fix wal test bug

Signed-off-by: groot <yihua.mo@zilliz.com>

* fix the data type of crc32c (#3455)

Signed-off-by: godchen0212 <qingxiang.chen@zilliz.com>
Signed-off-by: groot <yihua.mo@zilliz.com>

* fix wal path bug

Signed-off-by: groot <yihua.mo@zilliz.com>

* Update version (#3454)

* [skip ci] add constants.java

Signed-off-by: zw <zw@milvus.io>

* [skip ci] update server version to 0.11.0 in test cases

Signed-off-by: zw <zw@milvus.io>

Co-authored-by: zw <zw@milvus.io>
Signed-off-by: groot <yihua.mo@zilliz.com>

* fix: shards/requirements.txt to reduce vulnerabilities (#3457)

The following vulnerabilities are fixed by pinning transitive dependencies:
- https://snyk.io/vuln/SNYK-PYTHON-SQLALCHEMY-590109

Signed-off-by: groot <yihua.mo@zilliz.com>

* fix test failure

Signed-off-by: groot <yihua.mo@zilliz.com>

* typo

Signed-off-by: groot <yihua.mo@zilliz.com>

Co-authored-by: Wang Xiangyu <xy.wang@zilliz.com>
Co-authored-by: quicksilver <zhifeng.zhang@zilliz.com>
Co-authored-by: ThreadDao <zongyufen@foxmail.com>
Co-authored-by: XuanYang-cn <51370125+XuanYang-cn@users.noreply.github.com>
Co-authored-by: yangxuan <xuan.yang@zilliz.com>
Co-authored-by: shengjun.li <shengjun.li@zilliz.com>
Co-authored-by: del-zhenwu <56623710+del-zhenwu@users.noreply.github.com>
Co-authored-by: zw <zw@milvus.io>
Co-authored-by: Cai Yudong <yudong.cai@zilliz.com>
Co-authored-by: BossZou <40255591+BossZou@users.noreply.github.com>
Co-authored-by: yukun <kun.yu@zilliz.com>
Co-authored-by: FluorineDog <fluorinedog@gmail.com>
Co-authored-by: cqy123456 <39671710+cqy123456@users.noreply.github.com>
Co-authored-by: chen qingxiang <67679556+godchen0212@users.noreply.github.com>
Co-authored-by: jinhai <hai.jin@zilliz.com>
Co-authored-by: Snyk bot <snyk-bot@snyk.io>
2020-08-27 09:43:01 +08:00

351 lines
11 KiB
C++

// Copyright (C) 2019-2020 Zilliz. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
// or implied. See the License for the specific language governing permissions and limitations under the License.
#include "db/utils.h"
#include <opentracing/mocktracer/tracer.h>
#include <experimental/filesystem>
#include <boost/filesystem.hpp>
#include <iostream>
#include <memory>
#include <string>
#include <thread>
#include <utility>
#include <fiu-control.h>
#include <random>
#include "cache/CpuCacheMgr.h"
#include "cache/GpuCacheMgr.h"
#include "config/ServerConfig.h"
#include "codecs/Codec.h"
#include "db/DBFactory.h"
#include "db/snapshot/EventExecutor.h"
#include "db/snapshot/OperationExecutor.h"
#include "db/snapshot/Snapshots.h"
#include "db/snapshot/ResourceHolders.h"
#ifdef MILVUS_GPU_VERSION
#include "knowhere/index/vector_index/helpers/FaissGpuResourceMgr.h"
#endif
#include "db/meta/backend/MockEngine.h"
#include "db/meta/backend/MySqlEngine.h"
#include "db/meta/backend/SqliteEngine.h"
#include "db/wal/WalProxy.h"
#include "scheduler/ResourceFactory.h"
#include "scheduler/SchedInst.h"
#include "utils/CommonUtil.h"
INITIALIZE_EASYLOGGINGPP
namespace {
class DBTestEnvironment : public ::testing::Environment {
public:
explicit DBTestEnvironment(const std::string &uri) : uri_(uri) {
}
std::string
getURI() const {
return uri_;
}
void
SetUp() override {
getURI();
}
private:
std::string uri_;
};
DBTestEnvironment *test_env = nullptr;
} // namespace
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
BaseTest::InitLog() {
el::Configurations defaultConf;
defaultConf.setToDefault();
defaultConf.set(el::Level::Debug, el::ConfigurationType::Format, "[%thread-%datetime-%level]: %msg (%fbase:%line)");
el::Loggers::reconfigureLogger("default", defaultConf);
}
void
BaseTest::SnapshotStart(bool mock_store, DBOptions options) {
auto store = Store::Build(options.meta_.backend_uri_, options.meta_.path_,
milvus::codec::Codec::instance().GetSuffixSet());
milvus::engine::snapshot::OperationExecutor::Init(store);
milvus::engine::snapshot::OperationExecutor::GetInstance().Start();
milvus::engine::snapshot::EventExecutor::Init(store);
milvus::engine::snapshot::EventExecutor::GetInstance().Start();
milvus::engine::snapshot::CollectionCommitsHolder::GetInstance().Reset();
milvus::engine::snapshot::CollectionsHolder::GetInstance().Reset();
milvus::engine::snapshot::SchemaCommitsHolder::GetInstance().Reset();
milvus::engine::snapshot::FieldCommitsHolder::GetInstance().Reset();
milvus::engine::snapshot::FieldsHolder::GetInstance().Reset();
milvus::engine::snapshot::FieldElementsHolder::GetInstance().Reset();
milvus::engine::snapshot::PartitionsHolder::GetInstance().Reset();
milvus::engine::snapshot::PartitionCommitsHolder::GetInstance().Reset();
milvus::engine::snapshot::SegmentsHolder::GetInstance().Reset();
milvus::engine::snapshot::SegmentCommitsHolder::GetInstance().Reset();
milvus::engine::snapshot::SegmentFilesHolder::GetInstance().Reset();
if (mock_store) {
store->Mock();
} else {
store->DoReset();
}
milvus::engine::snapshot::Snapshots::GetInstance().Reset();
milvus::engine::snapshot::Snapshots::GetInstance().Init(store);
}
void
BaseTest::SnapshotStop() {
// TODO: Temp to delay some time. OperationExecutor should wait all resources be destructed before stop
std::this_thread::sleep_for(std::chrono::milliseconds(20));
milvus::engine::snapshot::EventExecutor::GetInstance().Stop();
milvus::engine::snapshot::OperationExecutor::GetInstance().Stop();
}
void
BaseTest::SetUp() {
InitLog();
fiu_init(0);
fiu_enable_random("Store.ApplyOperation.mock_timeout", 1, nullptr, 0, 0.2);
}
void
BaseTest::TearDown() {
fiu_disable("Store.ApplyOperation.mock_timeout");
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
SnapshotTest::SetUp() {
BaseTest::SetUp();
DBOptions options;
options.meta_.path_ = "/tmp/milvus_ss";
options.meta_.backend_uri_ = "mock://:@:/";
options.wal_enable_ = false;
BaseTest::SnapshotStart(true, options);
}
void
SnapshotTest::TearDown() {
BaseTest::SnapshotStop();
BaseTest::TearDown();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DBOptions
DBTest::GetOptions() {
milvus::cache::CpuCacheMgr::GetInstance().SetCapacity(256 * milvus::engine::MB);
auto options = DBOptions();
options.meta_.path_ = "/tmp/milvus_ss";
options.meta_.backend_uri_ = "mock://:@:/";
options.wal_enable_ = false;
options.auto_flush_interval_ = 1;
return options;
}
void
DBTest::SetUp() {
BaseTest::SetUp();
BaseTest::SnapshotStart(false, GetOptions());
dummy_context_ = std::make_shared<milvus::server::Context>("dummy_request_id");
opentracing::mocktracer::MockTracerOptions tracer_options;
auto mock_tracer =
std::shared_ptr<opentracing::Tracer>{new opentracing::mocktracer::MockTracer{std::move(tracer_options)}};
auto mock_span = mock_tracer->StartSpan("mock_span");
auto trace_context = std::make_shared<milvus::tracing::TraceContext>(mock_span);
dummy_context_->SetTraceContext(trace_context);
db_ = milvus::engine::DBFactory::BuildDB(GetOptions());
db_->Start();
auto res_mgr = milvus::scheduler::ResMgrInst::GetInstance();
res_mgr->Clear();
res_mgr->Add(milvus::scheduler::ResourceFactory::Create("disk", "DISK", 0, false));
res_mgr->Add(milvus::scheduler::ResourceFactory::Create("cpu", "CPU", 0));
auto default_conn = milvus::scheduler::Connection("IO", 500.0);
res_mgr->Connect("disk", "cpu", default_conn);
#ifdef MILVUS_GPU_VERSION
auto PCIE = milvus::scheduler::Connection("IO", 11000.0);
res_mgr->Add(milvus::scheduler::ResourceFactory::Create("0", "GPU", 0));
res_mgr->Connect("cpu", "0", PCIE);
#endif
res_mgr->Start();
milvus::scheduler::SchedInst::GetInstance()->Start();
milvus::scheduler::JobMgrInst::GetInstance()->Start();
milvus::scheduler::CPUBuilderInst::GetInstance()->Start();
}
void
DBTest::TearDown() {
db_->Stop();
db_ = nullptr; // db must be stopped before JobMgr and Snapshot
milvus::scheduler::JobMgrInst::GetInstance()->Stop();
milvus::scheduler::SchedInst::GetInstance()->Stop();
milvus::scheduler::CPUBuilderInst::GetInstance()->Stop();
milvus::scheduler::ResMgrInst::GetInstance()->Stop();
milvus::scheduler::ResMgrInst::GetInstance()->Clear();
BaseTest::SnapshotStop();
auto options = GetOptions();
/* boost::filesystem::remove_all(options.meta_.path_); */
std::experimental::filesystem::remove_all(options.meta_.path_);
BaseTest::TearDown();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
SegmentTest::SetUp() {
BaseTest::SetUp();
DBOptions options;
options.meta_.path_ = "/tmp/milvus_ss";
options.meta_.backend_uri_ = "mock://:@:/";
options.wal_enable_ = false;
BaseTest::SnapshotStart(false, options);
db_ = milvus::engine::DBFactory::BuildDB(options);
db_->Start();
}
void
SegmentTest::TearDown() {
BaseTest::SnapshotStop();
db_->Stop();
db_ = nullptr;
BaseTest::TearDown();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
MetaTest::SetUp() {
auto engine = std::make_shared<milvus::engine::meta::MockEngine>();
// milvus::engine::DBMetaOptions options;
// options.backend_uri_ = "mysql://root:12345678@127.0.0.1:3309/milvus";
// auto engine = std::make_shared<milvus::engine::meta::MySqlEngine>(options);
meta_ = std::make_shared<milvus::engine::meta::MetaAdapter>(engine);
meta_->TruncateAll();
}
void
MetaTest::TearDown() {
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
SchedulerTest::SetUp() {
BaseTest::SetUp();
DBOptions options;
options.meta_.path_ = "/tmp/milvus_ss";
options.meta_.backend_uri_ = "mock://:@:/";
options.wal_enable_ = false;
BaseTest::SnapshotStart(true, options);
db_ = milvus::engine::DBFactory::BuildDB(options);
db_->Start();
auto res_mgr = milvus::scheduler::ResMgrInst::GetInstance();
res_mgr->Clear();
res_mgr->Add(milvus::scheduler::ResourceFactory::Create("disk", "DISK", 0, false));
res_mgr->Add(milvus::scheduler::ResourceFactory::Create("cpu", "CPU", 0));
auto default_conn = milvus::scheduler::Connection("IO", 500.0);
res_mgr->Connect("disk", "cpu", default_conn);
#ifdef MILVUS_GPU_VERSION
auto PCIE = milvus::scheduler::Connection("IO", 11000.0);
res_mgr->Add(milvus::scheduler::ResourceFactory::Create("0", "GPU", 0));
res_mgr->Connect("cpu", "0", PCIE);
#endif
res_mgr->Start();
milvus::scheduler::SchedInst::GetInstance()->Start();
milvus::scheduler::JobMgrInst::GetInstance()->Start();
milvus::scheduler::CPUBuilderInst::GetInstance()->Start();
}
void
SchedulerTest::TearDown() {
db_->Stop();
db_ = nullptr; // db must be stopped before JobMgr and Snapshot
milvus::scheduler::JobMgrInst::GetInstance()->Stop();
milvus::scheduler::SchedInst::GetInstance()->Stop();
milvus::scheduler::CPUBuilderInst::GetInstance()->Stop();
milvus::scheduler::ResMgrInst::GetInstance()->Stop();
milvus::scheduler::ResMgrInst::GetInstance()->Clear();
BaseTest::SnapshotStop();
BaseTest::TearDown();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
EventTest::SetUp() {
auto uri = "mock://:@:/";
store_ = Store::Build(uri, "/tmp/milvus_ss/db");
store_->DoReset();
}
void
EventTest::TearDown() {
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DBOptions
WalTest::GetOptions() {
DBOptions options;
options.wal_path_ = "/tmp/milvus_wal";
options.wal_enable_ = true;
return options;
}
void
WalTest::SetUp() {
auto options = GetOptions();
std::experimental::filesystem::create_directory(options.wal_path_);
milvus::engine::DBPtr db = std::make_shared<milvus::engine::DBProxy>(nullptr, GetOptions());
db_ = std::make_shared<milvus::engine::WalProxy>(db, options);
db_->Start();
}
void
WalTest::TearDown() {
db_->Stop();
db_ = nullptr;
std::experimental::filesystem::remove_all(GetOptions().wal_path_);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int
main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
std::string uri;
if (argc > 1) {
uri = argv[1];
}
test_env = new DBTestEnvironment(uri);
::testing::AddGlobalTestEnvironment(test_env);
return RUN_ALL_TESTS();
}