1/**
2 * Copyright 2021 Alibaba, Inc. and its affiliates. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * \author haichao.chc
17 * \date Dec 2020
18 * \brief
19 */
20
21#define private public
22#define protected public
23#include "common/config.h"
24#undef private
25#undef protected
26
27#include <thread>
28#include <ailego/io/file.h>
29#include <gtest/gtest.h>
30
31
32using namespace proxima::be;
33
34TEST(ConfigTest, TestGeneral) {
35 auto &config = Config::Instance();
36 std::string pwd_path;
37 ailego::FileHelper::GetWorkingDirectory(&pwd_path);
38
39 ASSERT_EQ(config.get_protocol(), "grpc|http");
40 ASSERT_EQ(config.get_grpc_listen_port(), 16000);
41 ASSERT_EQ(config.get_http_listen_port(), 16001);
42 ASSERT_EQ(config.get_log_dir(), pwd_path + "/log/");
43 ASSERT_EQ(config.get_log_file(), "proxima_be.log");
44 ASSERT_EQ(config.get_log_level(), 2);
45 ASSERT_EQ(config.get_logger_type(), "AppendLogger");
46 ASSERT_EQ(config.get_index_build_thread_count(), 10);
47 ASSERT_EQ(config.get_index_dump_thread_count(), 3);
48 ASSERT_EQ(config.get_index_max_build_qps(), 0);
49 ASSERT_EQ(config.get_index_directory(), pwd_path);
50 ASSERT_EQ(config.get_index_flush_internal(), 300);
51 ASSERT_EQ(config.get_meta_uri(), std::string("sqlite://")
52 .append(pwd_path)
53 .append("/proxima_be_meta.sqlite"));
54 ASSERT_EQ(config.get_query_thread_count(),
55 std::thread::hardware_concurrency());
56
57 // check wrong config
58 auto *common_config = config.config_.mutable_common_config();
59 common_config->set_protocol("h2sofa");
60 ASSERT_EQ(config.validate_config(), false);
61 common_config->set_protocol("http");
62 ASSERT_EQ(config.validate_config(), true);
63 common_config->set_protocol("grpc");
64 ASSERT_EQ(config.validate_config(), true);
65
66 common_config->set_grpc_listen_port(127433);
67 ASSERT_EQ(config.validate_config(), false);
68 common_config->set_grpc_listen_port(12345);
69 ASSERT_EQ(config.validate_config(), true);
70 common_config->set_grpc_listen_port(0);
71 ASSERT_EQ(config.validate_config(), true);
72
73 common_config->set_http_listen_port(123456);
74 ASSERT_EQ(config.validate_config(), false);
75 common_config->set_http_listen_port(12345);
76 ASSERT_EQ(config.validate_config(), true);
77 common_config->set_http_listen_port(0);
78 ASSERT_EQ(config.validate_config(), true);
79
80 common_config->set_logger_type("XXLogger");
81 ASSERT_EQ(config.validate_config(), false);
82 common_config->set_logger_type("SysLogger");
83 ASSERT_EQ(config.validate_config(), true);
84 common_config->set_logger_type("ConsoleLogger");
85 ASSERT_EQ(config.validate_config(), true);
86
87 auto *index_config = config.config_.mutable_index_config();
88 index_config->set_build_thread_count(1000);
89 ASSERT_EQ(config.validate_config(), false);
90 index_config->set_build_thread_count(0);
91 ASSERT_EQ(config.validate_config(), true);
92
93 index_config->set_dump_thread_count(1000);
94 ASSERT_EQ(config.validate_config(), false);
95 index_config->set_dump_thread_count(0);
96 ASSERT_EQ(config.validate_config(), true);
97
98 auto *query_config = config.config_.mutable_query_config();
99 query_config->set_query_thread_count(1000);
100 ASSERT_EQ(config.validate_config(), false);
101 query_config->set_query_thread_count(0);
102 ASSERT_EQ(config.validate_config(), true);
103}
104