config_test.cpp 3.7 KB
Newer Older
J
jinhai 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you 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.

G
groot 已提交
18
#include <gtest/gtest.h>
G
groot 已提交
19
#include <gtest/gtest-death-test.h>
G
groot 已提交
20

G
groot 已提交
21
#include "config/ConfigMgr.h"
G
groot 已提交
22 23
#include "utils/CommonUtil.h"
#include "utils/ValidationUtil.h"
G
groot 已提交
24
#include "server/Config.h"
G
groot 已提交
25 26 27

using namespace zilliz::milvus;

G
groot 已提交
28 29
namespace {

J
jinhai 已提交
30 31
static const char* CONFIG_FILE_PATH = "./milvus/conf/server_config.yaml";
static const char* LOG_FILE_PATH = "./milvus/conf/log_config.conf";
G
groot 已提交
32

G
groot 已提交
33 34 35 36
static constexpr uint64_t KB = 1024;
static constexpr uint64_t MB = KB*1024;
static constexpr uint64_t GB = MB*1024;

G
groot 已提交
37
}
G
groot 已提交
38 39

TEST(ConfigTest, CONFIG_TEST) {
G
groot 已提交
40
    server::ConfigMgr* config_mgr = server::ConfigMgr::GetInstance();
G
groot 已提交
41

G
groot 已提交
42 43
    ErrorCode err = config_mgr->LoadConfigFile("");
    ASSERT_EQ(err, SERVER_UNEXPECTED_ERROR);
G
groot 已提交
44 45

    err = config_mgr->LoadConfigFile(LOG_FILE_PATH);
G
groot 已提交
46
    ASSERT_EQ(err, SERVER_UNEXPECTED_ERROR);
G
groot 已提交
47 48

    err = config_mgr->LoadConfigFile(CONFIG_FILE_PATH);
G
groot 已提交
49
    ASSERT_EQ(err, SERVER_SUCCESS);
G
groot 已提交
50

G
groot 已提交
51 52
    config_mgr->Print();

G
groot 已提交
53 54 55 56 57
    server::ConfigNode& root_config = config_mgr->GetRootNode();
    server::ConfigNode& server_config = root_config.GetChild("server_config");
    server::ConfigNode& db_config = root_config.GetChild("db_config");
    server::ConfigNode& metric_config = root_config.GetChild("metric_config");
    server::ConfigNode& cache_config = root_config.GetChild("cache_config");
G
groot 已提交
58 59 60 61
    server::ConfigNode invalid_config = root_config.GetChild("invalid_config");
    auto valus = invalid_config.GetSequence("not_exist");
    float ff = invalid_config.GetFloatValue("not_exist", 3.0);
    ASSERT_EQ(ff, 3.0);
G
groot 已提交
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91

    std::string address = server_config.GetValue("address");
    ASSERT_TRUE(!address.empty());
    int64_t port = server_config.GetInt64Value("port");
    ASSERT_TRUE(port != 0);

    server_config.SetValue("test", "2.5");
    double test = server_config.GetDoubleValue("test");
    ASSERT_EQ(test, 2.5);

    server::ConfigNode fake;
    server_config.AddChild("fake", fake);
    fake = server_config.GetChild("fake");
    server::ConfigNodeArr arr;
    server_config.GetChildren(arr);
    ASSERT_EQ(arr.size(), 1UL);

    server_config.ClearChildren();
    auto children = server_config.GetChildren();
    ASSERT_TRUE(children.empty());

    server_config.ClearConfig();
    auto configs = server_config.GetConfig();
    ASSERT_TRUE(configs.empty());

    server_config.AddSequenceItem("seq", "aaa");
    server_config.AddSequenceItem("seq", "bbb");
    auto seq = server_config.GetSequence("seq");
    ASSERT_EQ(seq.size(), 2UL);

G
groot 已提交
92 93 94 95 96 97 98
    server::ConfigNode combine;
    combine.Combine(server_config);

    combine.PrintAll();
    std::string all = combine.DumpString();
    ASSERT_TRUE(!all.empty());

G
groot 已提交
99 100 101 102 103 104
    server_config.ClearSequences();
    auto seqs = server_config.GetSequences();
    ASSERT_TRUE(seqs.empty());
}

TEST(ConfigTest, SERVER_CONFIG_TEST) {
Y
yudong.cai 已提交
105 106 107
    server::Config& config = server::Config::GetInstance();
    Status s = config.LoadConfigFile(CONFIG_FILE_PATH);
    ASSERT_TRUE(s.ok());
G
groot 已提交
108

Y
yudong.cai 已提交
109 110
    s = config.ValidateConfig();
    ASSERT_TRUE(s.ok());
G
groot 已提交
111

Y
yudong.cai 已提交
112
    config.PrintAll();
G
groot 已提交
113
}