This is an automated email from the ASF dual-hosted git repository.
harishgokul01 pushed a commit to branch release-bugs
in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb.git
The following commit(s) were added to refs/heads/release-bugs by this push:
new 1d150c47 Test cases to check ReadFromConfigFile
1d150c47 is described below
commit 1d150c4747ccab157dcba0c3d7f952ec2ac36c98
Author: harish876 <[email protected]>
AuthorDate: Mon Nov 10 18:56:12 2025 +0000
Test cases to check ReadFromConfigFile
---
platform/config/BUILD | 2 +
platform/config/resdb_config_test.cpp | 230 ++++++++++++++++--------------
platform/config/resdb_config_utils.h | 50 +++----
service/tools/config/client.config | 1 +
service/tools/config/generate_config.sh | 7 +-
service/tools/config/server.config | 4 -
service/tools/config/server/server.config | 120 +++++-----------
7 files changed, 188 insertions(+), 226 deletions(-)
diff --git a/platform/config/BUILD b/platform/config/BUILD
index cef76ade..0955ada7 100644
--- a/platform/config/BUILD
+++ b/platform/config/BUILD
@@ -31,8 +31,10 @@ cc_library(
cc_test(
name = "resdb_config_test",
srcs = ["resdb_config_test.cpp"],
+ timeout = "short",
deps = [
":resdb_config",
+ ":resdb_config_utils",
"//common/test:test_main",
],
)
diff --git a/platform/config/resdb_config_test.cpp
b/platform/config/resdb_config_test.cpp
index f480b11f..089f24ac 100644
--- a/platform/config/resdb_config_test.cpp
+++ b/platform/config/resdb_config_test.cpp
@@ -17,110 +17,126 @@
* under the License.
*/
-#include "platform/config/resdb_config.h"
-
-#include <google/protobuf/util/message_differencer.h>
-#include <gtest/gtest.h>
-
-#include <thread>
-
-#include "common/test/test_macros.h"
-#include "gmock/gmock.h"
-
-namespace resdb {
-namespace {
-
-using ::google::protobuf::util::MessageDifferencer;
-using ::resdb::testing::EqualsProto;
-
-MATCHER_P(EqualsReplicas, replicas, "") {
- if (arg.size() != replicas.size()) {
- return false;
- }
- for (size_t i = 0; i < replicas.size(); ++i) {
- if (!MessageDifferencer::Equals(replicas[i], arg[i])) {
- return false;
- }
- }
- return true;
-}
-
-ReplicaInfo GenerateReplicaInfo(const std::string& ip, int port) {
- ReplicaInfo info;
- info.set_ip(ip);
- info.set_port(port);
- return info;
-}
-
-TEST(TcpSocket, ResDBConfig) {
- ReplicaInfo self_info = GenerateReplicaInfo("127.0.0.1", 1234);
-
- std::vector<ReplicaInfo> replicas;
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1235));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1236));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1237));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1238));
-
- ResDBConfig config(replicas, self_info);
-
- EXPECT_THAT(config.GetReplicaInfos(), EqualsReplicas(replicas));
- EXPECT_THAT(config.GetSelfInfo(), EqualsProto(self_info));
- EXPECT_EQ(config.GetReplicaNum(), replicas.size());
- EXPECT_EQ(config.GetMinDataReceiveNum(), 3);
-}
-
-TEST(TcpSocket, ResDBConfigWith5Replicas) {
- ReplicaInfo self_info = GenerateReplicaInfo("127.0.0.1", 1234);
-
- std::vector<ReplicaInfo> replicas;
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1235));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1236));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1237));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1238));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1239));
-
- ResDBConfig config(replicas, self_info);
-
- EXPECT_THAT(config.GetReplicaInfos(), EqualsReplicas(replicas));
- EXPECT_THAT(config.GetSelfInfo(), EqualsProto(self_info));
- EXPECT_EQ(config.GetReplicaNum(), replicas.size());
- EXPECT_EQ(config.GetMinDataReceiveNum(), 3);
-}
-
-TEST(TcpSocket, ResDBConfigWith6Replicas) {
- ReplicaInfo self_info = GenerateReplicaInfo("127.0.0.1", 1234);
-
- std::vector<ReplicaInfo> replicas;
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1235));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1236));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1237));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1238));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1239));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1240));
-
- ResDBConfig config(replicas, self_info);
-
- EXPECT_THAT(config.GetReplicaInfos(), EqualsReplicas(replicas));
- EXPECT_THAT(config.GetSelfInfo(), EqualsProto(self_info));
- EXPECT_EQ(config.GetReplicaNum(), replicas.size());
- EXPECT_EQ(config.GetMinDataReceiveNum(), 3);
-}
-
-TEST(TcpSocket, ResDBConfigWith2Replicas) {
- ReplicaInfo self_info = GenerateReplicaInfo("127.0.0.1", 1234);
-
- std::vector<ReplicaInfo> replicas;
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1235));
- replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1236));
-
- ResDBConfig config(replicas, self_info);
-
- EXPECT_THAT(config.GetReplicaInfos(), EqualsReplicas(replicas));
- EXPECT_THAT(config.GetSelfInfo(), EqualsProto(self_info));
- EXPECT_EQ(config.GetReplicaNum(), replicas.size());
- EXPECT_EQ(config.GetMinDataReceiveNum(), 1);
-}
-
-} // namespace
-
-} // namespace resdb
+ #include "platform/config/resdb_config.h"
+ #include "platform/config/resdb_config_utils.h"
+ #include <filesystem>
+
+ #include <google/protobuf/util/message_differencer.h>
+ #include <gtest/gtest.h>
+
+
+ #include "common/test/test_macros.h"
+ #include "gmock/gmock.h"
+
+ namespace resdb {
+ namespace {
+
+ using ::google::protobuf::util::MessageDifferencer;
+ using ::resdb::testing::EqualsProto;
+ using ::resdb::ReadConfig;
+ using ::resdb::ReadConfigFromFile;
+
+ MATCHER_P(EqualsReplicas, replicas, "") {
+ if (arg.size() != replicas.size()) {
+ return false;
+ }
+ for (size_t i = 0; i < replicas.size(); ++i) {
+ if (!MessageDifferencer::Equals(replicas[i], arg[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ ReplicaInfo GenerateReplicaInfo(const std::string& ip, int port) {
+ ReplicaInfo info;
+ info.set_ip(ip);
+ info.set_port(port);
+ return info;
+ }
+
+ TEST(TcpSocket, ResDBConfig) {
+ ReplicaInfo self_info = GenerateReplicaInfo("127.0.0.1", 1234);
+
+ std::vector<ReplicaInfo> replicas;
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1235));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1236));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1237));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1238));
+
+ ResDBConfig config(replicas, self_info);
+
+ EXPECT_THAT(config.GetReplicaInfos(), EqualsReplicas(replicas));
+ EXPECT_THAT(config.GetSelfInfo(), EqualsProto(self_info));
+ EXPECT_EQ(config.GetReplicaNum(), replicas.size());
+ EXPECT_EQ(config.GetMinDataReceiveNum(), 3);
+ }
+
+ TEST(TcpSocket, ResDBConfigWith5Replicas) {
+ ReplicaInfo self_info = GenerateReplicaInfo("127.0.0.1", 1234);
+
+ std::vector<ReplicaInfo> replicas;
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1235));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1236));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1237));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1238));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1239));
+
+ ResDBConfig config(replicas, self_info);
+
+ EXPECT_THAT(config.GetReplicaInfos(), EqualsReplicas(replicas));
+ EXPECT_THAT(config.GetSelfInfo(), EqualsProto(self_info));
+ EXPECT_EQ(config.GetReplicaNum(), replicas.size());
+ EXPECT_EQ(config.GetMinDataReceiveNum(), 3);
+ }
+
+ TEST(TcpSocket, ResDBConfigWith6Replicas) {
+ ReplicaInfo self_info = GenerateReplicaInfo("127.0.0.1", 1234);
+
+ std::vector<ReplicaInfo> replicas;
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1235));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1236));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1237));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1238));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1239));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1240));
+
+ ResDBConfig config(replicas, self_info);
+
+ EXPECT_THAT(config.GetReplicaInfos(), EqualsReplicas(replicas));
+ EXPECT_THAT(config.GetSelfInfo(), EqualsProto(self_info));
+ EXPECT_EQ(config.GetReplicaNum(), replicas.size());
+ EXPECT_EQ(config.GetMinDataReceiveNum(), 3);
+ }
+
+ TEST(TcpSocket, ResDBConfigWith2Replicas) {
+ ReplicaInfo self_info = GenerateReplicaInfo("127.0.0.1", 1234);
+
+ std::vector<ReplicaInfo> replicas;
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1235));
+ replicas.push_back(GenerateReplicaInfo("127.0.0,1", 1236));
+
+ ResDBConfig config(replicas, self_info);
+
+ EXPECT_THAT(config.GetReplicaInfos(), EqualsReplicas(replicas));
+ EXPECT_THAT(config.GetSelfInfo(), EqualsProto(self_info));
+ EXPECT_EQ(config.GetReplicaNum(), replicas.size());
+ EXPECT_EQ(config.GetMinDataReceiveNum(), 1);
+ }
+
+ TEST(TcpSocket, ReadConfigFromFile) {
+ std::string config_file =
"/home/ubuntu/harish_work/incubator-resilientdb/service/tools/config/server/server.config";
//TODO: make dynamic
+
+ ResConfigData config_data = ReadConfigFromFile(config_file);
+ ResDBConfig config = ResDBConfig(config_data, ReplicaInfo(), KeyInfo(),
CertificateInfo());
+
+ EXPECT_EQ(config_data.region(0).replica_info_size(), 4)
+ << "Should have 4 replicas as per server.config";
+ EXPECT_EQ(config_data.region(0).replica_info(0).id(), 1);
+ EXPECT_EQ(config_data.region(0).replica_info(0).ip(), "127.0.0.1");
+ }
+
+ } // namespace
+
+ } // namespace resdb
+
\ No newline at end of file
diff --git a/platform/config/resdb_config_utils.h
b/platform/config/resdb_config_utils.h
index 15d77a4b..8746d06c 100644
--- a/platform/config/resdb_config_utils.h
+++ b/platform/config/resdb_config_utils.h
@@ -17,27 +17,29 @@
* under the License.
*/
-#pragma once
-
-#include <optional>
-
-#include "platform/config/resdb_config.h"
-
-namespace resdb {
-
-std::vector<ReplicaInfo> ReadConfig(const std::string& file_name);
-ReplicaInfo GenerateReplicaInfo(int id, const std::string& ip, int port);
-
-typedef std::function<std::unique_ptr<ResDBConfig>(
- const ResConfigData& config_data, const ReplicaInfo& self_info,
- const KeyInfo& private_key, const CertificateInfo& public_key_cert_info)>
- ConfigGenFunc;
-
-std::unique_ptr<ResDBConfig> GenerateResDBConfig(
- const std::string& config_file, const std::string& private_key_file,
- const std::string& cert_file,
- std::optional<ReplicaInfo> self_info = std::nullopt,
- std::optional<ConfigGenFunc> = std::nullopt);
-
-ResDBConfig GenerateResDBConfig(const std::string& config_file);
-} // namespace resdb
+ #pragma once
+
+ #include <optional>
+
+ #include "platform/config/resdb_config.h"
+
+ namespace resdb {
+
+ std::vector<ReplicaInfo> ReadConfig(const std::string& file_name);
+ ResConfigData ReadConfigFromFile(const std::string& file_name);
+ ReplicaInfo GenerateReplicaInfo(int id, const std::string& ip, int port);
+
+ typedef std::function<std::unique_ptr<ResDBConfig>(
+ const ResConfigData& config_data, const ReplicaInfo& self_info,
+ const KeyInfo& private_key, const CertificateInfo& public_key_cert_info)>
+ ConfigGenFunc;
+
+ std::unique_ptr<ResDBConfig> GenerateResDBConfig(
+ const std::string& config_file, const std::string& private_key_file,
+ const std::string& cert_file,
+ std::optional<ReplicaInfo> self_info = std::nullopt,
+ std::optional<ConfigGenFunc> = std::nullopt);
+
+ ResDBConfig GenerateResDBConfig(const std::string& config_file);
+ } // namespace resdb
+
\ No newline at end of file
diff --git a/service/tools/config/client.config
b/service/tools/config/client.config
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/service/tools/config/client.config
@@ -0,0 +1 @@
+
diff --git a/service/tools/config/generate_config.sh
b/service/tools/config/generate_config.sh
index d0baa7f5..8d9c29a7 100755
--- a/service/tools/config/generate_config.sh
+++ b/service/tools/config/generate_config.sh
@@ -40,7 +40,7 @@ ADMIN_PRIVATE_KEY=${admin_key_path}/admin.key.pri
ADMIN_PUBLIC_KEY=${admin_key_path}/admin.key.pub
CERT_TOOLS_BIN=${base_path}/bazel-bin/tools/certificate_tools
-CONFIG_TOOLS_BIN=${base_path}/bazel-bin/tools/generate_region_config_cc
+CONFIG_TOOLS_BIN=${base_path}/bazel-bin/tools/generate_region_config
KEYGEN_BIN=${base_path}/bazel-bin/tools/key_generator_tools
USERNAME=ubuntu
@@ -99,9 +99,9 @@ done
TEMPLATE_JSON=${output_path}/server/server.config
if [ -f "$TEMPLATE_JSON" ]; then
- ${CONFIG_TOOLS_BIN} ./server.config ./server.config.json ${TEMPLATE_JSON}
+ python3 ${CONFIG_TOOLS_BIN} ./server.config ./server.config.json
${TEMPLATE_JSON}
else
- ${CONFIG_TOOLS_BIN} ./server.config ./server.config.json
+ python3 ${CONFIG_TOOLS_BIN} ./server.config ./server.config.json
fi
mkdir -p ${output_path}/server
@@ -109,4 +109,3 @@ cp server.config.json ${output_path}/server/server.json
mv server.config.json ${output_path}/server/server.config
mv client.config ${output_path}/interface/service.config
echo "config done:" ${output_path}/server/server.config
-
diff --git a/service/tools/config/server.config
b/service/tools/config/server.config
index a68d1cec..8b137891 100644
--- a/service/tools/config/server.config
+++ b/service/tools/config/server.config
@@ -1,5 +1 @@
-1 127.0.0.1 10001
-2 127.0.0.1 10002
-3 127.0.0.1 10003
-4 127.0.0.1 10004
diff --git a/service/tools/config/server/server.config
b/service/tools/config/server/server.config
index e0e6fb30..ce4152d9 100644
--- a/service/tools/config/server/server.config
+++ b/service/tools/config/server/server.config
@@ -1,91 +1,37 @@
{
- "region": [
- {
- "replica_info": [
- {
- "id": "1",
- "ip": "127.0.0.1",
- "port": 10001
- },
- {
- "id": "2",
- "ip": "127.0.0.1",
- "port": 10002
- },
- {
- "id": "3",
- "ip": "127.0.0.1",
- "port": 10003
- },
- {
- "id": "4",
- "ip": "127.0.0.1",
- "port": 10004
- }
- ],
- "region_id": 0
+ region : {
+ replica_info : {
+ id:1,
+ ip:"127.0.0.1",
+ port: 10001,
+ },
+ replica_info : {
+ id:2,
+ ip:"127.0.0.1",
+ port: 10002,
+ },
+ replica_info : {
+ id:3,
+ ip:"127.0.0.1",
+ port: 10003,
+ },
+ replica_info : {
+ id:4,
+ ip:"127.0.0.1",
+ port: 10004,
+ },
+ region_id: 1,
},
- {
- "replica_info": [
- {
- "id": "1",
- "ip": "127.0.0.1",
- "port": 10001
- },
- {
- "id": "2",
- "ip": "127.0.0.1",
- "port": 10002
- },
- {
- "id": "3",
- "ip": "127.0.0.1",
- "port": 10003
- },
- {
- "id": "4",
- "ip": "127.0.0.1",
- "port": 10004
- }
- ],
- "region_id": 0
+ self_region_id:1,
+ leveldb_info : {
+ write_buffer_size_mb:128,
+ write_batch_size:1,
+ enable_block_cache: true,
+ block_cache_capacity: 100
},
- {
- "replica_info": [
- {
- "id": "1",
- "ip": "127.0.0.1",
- "port": 10001
- },
- {
- "id": "2",
- "ip": "127.0.0.1",
- "port": 10002
- },
- {
- "id": "3",
- "ip": "127.0.0.1",
- "port": 10003
- },
- {
- "id": "4",
- "ip": "127.0.0.1",
- "port": 10004
- }
- ],
- "region_id": 1
- }
- ],
- "self_region_id": 1,
- "leveldb_info": {
- "write_buffer_size_mb": 128,
- "write_batch_size": 1,
- "path": "",
- "enable_block_cache": true,
- "block_cache_capacity": 100
- },
- "enable_viewchange": false,
- "require_txn_validation": true,
- "enable_resview": true,
- "enable_faulty_switch": false
+ require_txn_validation:true,
+ enable_viewchange:false,
+ enable_resview:true,
+ enable_faulty_switch:false
}
+