You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@inlong.apache.org by do...@apache.org on 2022/08/23 08:22:40 UTC

[inlong] branch master updated: [INLONG-5437][SDK] Support initializing SDK(cpp) by ClientConfig object (#5641)

This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new c9a640d4c [INLONG-5437][SDK] Support initializing SDK(cpp) by ClientConfig object (#5641)
c9a640d4c is described below

commit c9a640d4cbb6b15727594f3bd85adc0380bf6566
Author: xueyingzhang <86...@users.noreply.github.com>
AuthorDate: Tue Aug 23 16:22:35 2022 +0800

    [INLONG-5437][SDK] Support initializing SDK(cpp) by ClientConfig object (#5641)
---
 .../dataproxy-sdk-cpp/README.md                    |   6 +-
 .../{src/base => release/inc}/client_config.h      |   3 +
 .../dataproxy-sdk-cpp/release/inc/tc_api.h         |  11 +-
 .../dataproxy-sdk-cpp/src/base/client_config.cc    |  52 +++++++++-
 .../dataproxy-sdk-cpp/src/base/logger.h            |  12 +--
 .../dataproxy-sdk-cpp/src/base/pack_queue.h        |   1 -
 .../dataproxy-sdk-cpp/src/base/proxylist_config.cc |   1 -
 .../dataproxy-sdk-cpp/src/base/proxylist_config.h  |   1 -
 .../dataproxy-sdk-cpp/src/base/sdk_constant.h      |   2 +-
 .../dataproxy-sdk-cpp/src/base/sdk_core.cc         | 112 ++++++++++++++-------
 .../dataproxy-sdk-cpp/src/base/sdk_core.h          |   2 +-
 .../dataproxy-sdk-cpp/src/net/buffer_pool.cc       |   2 +-
 .../dataproxy-sdk-cpp/src/net/buffer_pool.h        |   1 -
 .../src/net/executor_thread_pool.cc                |   2 -
 .../src/net/executor_thread_pool.h                 |   1 -
 .../dataproxy-sdk-cpp/src/net/send_buffer.h        |   2 -
 .../dataproxy-sdk-cpp/src/net/socket_connection.cc |   1 -
 .../dataproxy-sdk-cpp/src/net/socket_connection.h  |   1 -
 .../dataproxy-sdk-cpp/test/CMakeLists.txt          |   1 +
 .../test/base/client_config_test.cc                |  21 ++++
 .../test/base/proxylist_config_test.cc             |   2 +-
 .../dataproxy-sdk-cpp/test/net/big_pack_test.cc    |   4 -
 .../dataproxy-sdk-cpp/test/net/buffer_pool_test.cc |  16 ++-
 .../dataproxy-sdk-cpp/test/net/send_buffer_test.cc |   2 +-
 .../test/net/socket_connection_test.cc             |   3 +-
 25 files changed, 183 insertions(+), 79 deletions(-)

diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/README.md b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/README.md
index f6c3b09df..526eabd91 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/README.md
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/README.md
@@ -66,14 +66,16 @@ Refer to `release/conf/config_example.json`.
 |log_file_type|2|type of log output: 2->file, 1->console|
 |log_path|./logs/|log path|
 |proxy_update_interval|10|interval of requesting and updating dataproxy lists from manager|
-|proxy_cfg_preurl|"http://127.0.0.1:8099/api/inlong/manager/openapi/dataproxy/getIpList"|the url of manager openapi|
+|proxy_cfg_preurl|"http://127.0.0.1:8099/inlong/manager/openapi/dataproxy/getIpList"|the url of manager openapi|
 |need_auth|false|whether need authentication while interacting with manager|
 |auth_id|""|authenticate id if need authentication|
 |auth_key|""|authenticate key if need authentication|
 
 ## Usage
 
-1. First, init dataproxy-sdk: `int32_t tc_api_init(const char* config_file)`. Here, `config_file` is the path of your config file, and absolute path is recommended. Note that only once called is needed in one process.
+1. First, init dataproxy-sdk, there are two ways you can choose:
+- A) `int32_t tc_api_init(const char* config_file)`. Here, `config_file` is the path of your config file, and absolute path is recommended. Note that only once called is needed in one process.
+- B) `int32_t tc_api_init(ClientConfig* client_config)`. Here, `client_config` is the pointer of a `ClientConfig` object.
 
 2. Then, send data: `int32_t tc_api_send(const char* inlong_group_id, const char* inlong_stream_id, const char* msg, int32_t msg_len, UserCallBack call_back = NULL)`. If you set `call_back`, it will be callbacked if your data failed to send. See the signature of `UserCallBack` in `release/inc/user_msg.h`.
 
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/client_config.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/inc/client_config.h
similarity index 95%
rename from inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/client_config.h
rename to inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/inc/client_config.h
index 94bc9c009..ed8eaad5d 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/client_config.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/inc/client_config.h
@@ -94,9 +94,12 @@ namespace dataproxy_sdk
     std::string auth_key_;
 
     ClientConfig(const std::string config_path) : config_path_(config_path) {}
+    ClientConfig(const std::string& proxy_url, bool need_auth, const std::string& auth_id, const std::string& auth_key);
+
     bool parseConfig(); // return false if parse failed
     void defaultInit();
     void showClientConfig();
+    void updateBufSize();
 
     inline bool enableCharGroupid() const { return (((extend_field_)&0x4) >> 2); } // use char type groupId、streadmId
     inline bool enableTraceIP() const { return (((extend_field_)&0x2) >> 1); }
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/inc/tc_api.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/inc/tc_api.h
index 156b06e83..5518d9b4b 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/inc/tc_api.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/release/inc/tc_api.h
@@ -20,6 +20,7 @@
 
 #include <stdint.h>
 #include "user_msg.h"
+#include "client_config.h"
 
 namespace dataproxy_sdk
 {
@@ -39,7 +40,8 @@ enum SDKInvalidResult {
     kFailWriteToBuf    = 15,
     kErrorCURL         = 16,  // request manager error
     kErrorParseJson    = 17,
-    kFailGetPackQueue  = 18  // failed to get pack queue
+    kFailGetPackQueue  = 18,  // failed to get pack queue
+    kErrorAuthInfo     = 19 // wrong authen
 
 };
 
@@ -58,6 +60,13 @@ int32_t tc_api_init(const char* config_file);
  */
 int32_t tc_api_init_ext(const char* config_file, int32_t use_def);
 
+/**
+ * @description: Using ClientConfig to init api
+ * @return 0 if success
+ * @param {ClientConfig&} refer to client_config.h
+ */
+int32_t tc_api_init(ClientConfig* client_config);
+
 
 /**
  * @description: send data
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/client_config.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/client_config.cc
index bd9ba31a2..0aad0f6d8 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/client_config.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/client_config.cc
@@ -27,6 +27,44 @@
 
 namespace dataproxy_sdk
 {
+    ClientConfig::ClientConfig(const std::string& proxy_url, bool need_auth, const std::string& auth_id, const std::string& auth_key): 
+        proxy_URL_(proxy_url),
+        need_auth_(need_auth),
+        auth_id_(auth_id),
+        auth_key_(auth_key),
+        thread_nums_(constants::kThreadNums), 
+        shared_buf_nums_(constants::kSharedBufferNums),
+        enable_groupId_isolation_(constants::kEnableGroupidIsolation),
+        buffer_num_per_groupId_(constants::kBufferNumPerGroupid),
+        net_tag_(constants::kNetTag),
+        enable_pack_(constants::kEnablePack),
+        pack_size_(constants::kPackSize),
+        pack_timeout_(constants::kPackTimeout),
+        ext_pack_size_(constants::kExtPackSize),
+        enable_zip_(constants::kEnableZip),
+        min_zip_len_(constants::kMinZipLen),
+        enable_retry_(constants::kEnableRetry),
+        retry_interval_(constants::kRetryInterval),
+        retry_num_(constants::kRetryNum),
+        log_num_(constants::kLogNum),
+        log_size_(constants::kLogSize),
+        log_level_(constants::kLogLevel),
+        log_file_type_(constants::kLogFileType),
+        log_path_(constants::kLogPath),
+        log_enable_limit_(constants::kLogEnableLimit),
+        enable_proxy_URL_from_cluster_(constants::kEnableProxyURLFromCluster),
+        proxy_cluster_URL_(constants::kProxyClusterURL),
+        proxy_update_interval_(constants::kProxyUpdateInterval),
+        proxy_URL_timeout_(constants::kProxyURLTimeout),
+        max_active_proxy_num_(constants::kMaxActiveProxyNum),
+        ser_ip_(constants::kSerIP),
+        max_buf_pool_(constants::kMaxBufPool),
+        msg_type_(constants::kMsgType),
+        enable_TCP_nagle_(constants::kEnableTCPNagle),
+        mask_cpu_affinity_(constants::kMaskCPUAffinity),
+        is_from_DC_(constants::kIsFromDC),
+        extend_field_(constants::kExtendField) {}
+
     bool ClientConfig::parseConfig()
     {
         std::string file_content;
@@ -382,7 +420,7 @@ namespace dataproxy_sdk
         }
         else
         {
-            proxy_cluster_URL_ = constants::kBusClusterURL;
+            proxy_cluster_URL_ = constants::kProxyClusterURL;
             LOG_WARN("proxy_cluster_URL(proxy_cfg_url) in user config is not expect, then use default: %s", proxy_cluster_URL_.c_str());
         }
         // enable_proxy_URL_from_cluster
@@ -592,13 +630,19 @@ namespace dataproxy_sdk
         }
 
         // set bufNum
-        buf_size_ = ext_pack_size_ + 400;
-        buf_num_ = max_buf_pool_ / (buf_size_);
+        updateBufSize();
+        
         LOG_WARN("sendBuf num of a pool is %d", buf_num_);
 
         return true;
     }
 
+    void ClientConfig::updateBufSize()
+    {
+        buf_size_ = ext_pack_size_ + 400;
+        buf_num_ = max_buf_pool_ / (buf_size_);
+    }
+
     void ClientConfig::defaultInit(){
         user_config_err_=true;
 
@@ -630,7 +674,7 @@ namespace dataproxy_sdk
         proxy_URL_=constants::kProxyURL;
         enable_proxy_URL_from_cluster_=constants::kEnableProxyURLFromCluster;
 
-        proxy_cluster_URL_=constants::kBusClusterURL;
+        proxy_cluster_URL_=constants::kProxyClusterURL;
         proxy_update_interval_=constants::kProxyUpdateInterval;
         proxy_URL_timeout_=constants::kProxyURLTimeout;
         max_active_proxy_num_=constants::kMaxActiveProxyNum;
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/logger.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/logger.h
index e7582f25f..b2bd25783 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/logger.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/logger.h
@@ -49,13 +49,13 @@ Logger& getLogger();
         }                                                                                                                        \
     }
 
-#define LOG_TRACE(fmt, ...) LOG_TDBUSCAPI(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogTrace, fmt, ##__VA_ARGS__)
-#define LOG_DEBUG(fmt, ...) LOG_TDBUSCAPI(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogDebug, fmt, ##__VA_ARGS__)
-#define LOG_INFO(fmt, ...) LOG_TDBUSCAPI(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogInfo, fmt, ##__VA_ARGS__)
-#define LOG_WARN(fmt, ...) LOG_TDBUSCAPI(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogWarn, fmt, ##__VA_ARGS__)
-#define LOG_ERROR(fmt, ...) LOG_TDBUSCAPI(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogError, fmt, ##__VA_ARGS__)
+#define LOG_TRACE(fmt, ...) LOG_SDKCPP(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogTrace, fmt, ##__VA_ARGS__)
+#define LOG_DEBUG(fmt, ...) LOG_SDKCPP(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogDebug, fmt, ##__VA_ARGS__)
+#define LOG_INFO(fmt, ...) LOG_SDKCPP(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogInfo, fmt, ##__VA_ARGS__)
+#define LOG_WARN(fmt, ...) LOG_SDKCPP(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogWarn, fmt, ##__VA_ARGS__)
+#define LOG_ERROR(fmt, ...) LOG_SDKCPP(dataproxy_sdk::getLogger(), dataproxy_sdk::Logger::kLogError, fmt, ##__VA_ARGS__)
 
-#define LOG_TDBUSCAPI(logger, level, fmt, ...)                                                                                   \
+#define LOG_SDKCPP(logger, level, fmt, ...)                                                                                   \
     {                                                                                                                            \
         if (logger.enableLevel(level))                                                                                           \
         {                                                                                                                        \
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.h
index f6f0690b5..4debb899d 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/pack_queue.h
@@ -29,7 +29,6 @@
 #include "atomic.h"
 #include "buffer_pool.h"
 #include "sdk_core.h"
-#include "client_config.h"
 #include "noncopyable.h"
 #include "user_msg.h"
 namespace dataproxy_sdk
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/proxylist_config.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/proxylist_config.cc
index d915df572..065dd0e3b 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/proxylist_config.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/proxylist_config.cc
@@ -29,7 +29,6 @@
 #include <stdlib.h>
 
 #include "sdk_constant.h"
-#include "sdk_core.h"
 #include "executor_thread_pool.h"
 #include "ini_help.h"
 #include "logger.h"
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/proxylist_config.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/proxylist_config.h
index 9be77a917..ed6dd7b5f 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/proxylist_config.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/proxylist_config.h
@@ -31,7 +31,6 @@
 #include <unordered_map>
 
 #include "sdk_core.h"
-#include "client_config.h"
 #include "noncopyable.h"
 #include "read_write_mutex.h"
 namespace dataproxy_sdk
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_constant.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_constant.h
index ff39fe3d1..9b48ded52 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_constant.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_constant.h
@@ -68,7 +68,7 @@ namespace dataproxy_sdk
 
         static const std::string kProxyURL = "http://127.0.0.1:8099/api/dataproxy_ip_v2";
         static const bool kEnableProxyURLFromCluster = false;
-        static const std::string kBusClusterURL =
+        static const std::string kProxyClusterURL =
             "http://127.0.0.1:8099/heartbeat/dataproxy_ip_v2?cluster_id=0&net_tag=normal";
         static const uint32_t kProxyUpdateInterval = 10;
         static const uint32_t kProxyURLTimeout = 2;
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_core.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_core.cc
index 9afeaece4..3e3a03188 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_core.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_core.cc
@@ -51,45 +51,13 @@ namespace dataproxy_sdk
     ExecutorThreadPool *g_executors = nullptr;
     int32_t g_use_default = 0; // whether use default config to init sdk if user's config file error
 
-    int32_t tc_api_init(const char *config_file)
+    int32_t init_helper ()
     {
-        getLogger().init(5, 15, Logger::Level(3), 2, true, "./", ".cpplog");
-
-        // one process is only initialized once
-        if (!init_flag.compareAndSwap(0, 1))
-        {
-            LOG_ERROR("dataproxy_sdk_cpp has been initialized before!");
-            return SDKInvalidResult::kMultiInit;
-        }
-        user_exit_flag.getAndSet(0);
-
-        g_config = new ClientConfig(config_file);
-
-        if (!g_config){
-            LOG_ERROR("dataproxy_sdk_cpp init error");
-            return SDKInvalidResult::kErrorInit;
-        }
-        bool res = g_config->parseConfig();
-        
-        if (!res){
-            // init error and not allow default init
-            if (g_use_default)
-            {
-                g_config->defaultInit();
-            }
-            else
-            {
-                LOG_ERROR("dataproxy_sdk_cpp init error");
-                return SDKInvalidResult::kErrorInit;
-            }         
-        }
-        
-        remove("./.cpplog");
-
         getLogger().init(g_config->log_size_, g_config->log_num_, Logger::Level(g_config->log_level_), g_config->log_file_type_,
                          g_config->log_enable_limit_, g_config->log_path_);
 
-        LOG_WARN("dataproxy_sdk_cpp start init, config path:%s, version:%s", config_file, constants::kTDBusCAPIVersion);
+        LOG_WARN("dataproxy_sdk_cpp start init, version:%s", constants::kTDBusCAPIVersion);
+        
         g_config->showClientConfig();
 
         // get local ip
@@ -155,6 +123,79 @@ namespace dataproxy_sdk
         LOG_WARN("dataproxy_sdk_cpp init complete!");
 
         return 0;
+
+    }
+
+    int32_t tc_api_init(const char *config_file)
+    {
+        getLogger().init(5, 15, Logger::Level(3), 2, true, "./", ".cpplog");
+
+        // one process is only initialized once
+        if (!init_flag.compareAndSwap(0, 1))
+        {
+            LOG_ERROR("dataproxy_sdk_cpp has been initialized before!");
+            return SDKInvalidResult::kMultiInit;
+        }
+        user_exit_flag.getAndSet(0);
+
+        g_config = new ClientConfig(config_file);
+        if (!g_config){
+            LOG_ERROR("dataproxy_sdk_cpp init error");
+            return SDKInvalidResult::kErrorInit;
+        }
+        bool res = g_config->parseConfig();
+        
+        if (!res){
+            // init error and not allow default init
+            if (g_use_default)
+            {
+                g_config->defaultInit();
+            }
+            else
+            {
+                LOG_ERROR("dataproxy_sdk_cpp init error");
+                return SDKInvalidResult::kErrorInit;
+            }         
+        }
+        
+        remove("./.cpplog");
+
+        return init_helper();
+
+        
+    }
+
+
+    int32_t tc_api_init(ClientConfig* client_config)
+    {
+        if (!init_flag.compareAndSwap(0, 1))
+        {
+            return SDKInvalidResult::kMultiInit;
+        }
+
+        if (!client_config)
+        {
+            return SDKInvalidResult::kErrorInit;
+
+        }
+        
+        // check and proxy url
+        if (client_config->proxy_URL_.empty())
+        {
+            return SDKInvalidResult::kErrorInit;
+            
+        }
+        // check auth setting
+        if (client_config->need_auth_ && (client_config->auth_id_.empty() || client_config->auth_key_.empty()))
+        {
+            return SDKInvalidResult::kErrorAuthInfo;
+        }
+
+        g_config = client_config;
+        g_config->updateBufSize(); 
+
+        return init_helper();
+       
     }
 
     int32_t tc_api_init_ext(const char *config_file, int32_t use_def)
@@ -295,4 +336,5 @@ namespace dataproxy_sdk
 
         return 0;
     }
+
 } // namespace dataproxy_sdk
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_core.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_core.h
index df8c21b8e..14dafb3a5 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_core.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/base/sdk_core.h
@@ -27,10 +27,10 @@
 
 #include "atomic.h"
 #include "user_msg.h"
+#include "client_config.h"
 
 // #include "buffer_pool.h"
 namespace dataproxy_sdk {
-class ClientConfig;
 class GlobalCluster;
 class GlobalQueues;
 class TotalPools;
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/buffer_pool.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/buffer_pool.cc
index 48da3cee1..aaa6ce85b 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/buffer_pool.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/buffer_pool.cc
@@ -278,7 +278,7 @@ namespace dataproxy_sdk
 
     BufferPoolPtr TotalPools::getPool(const std::string &inlong_group_id)
     {
-        if (g_config->enable_groupId_isolation_) // groupid隔离
+        if (g_config->enable_groupId_isolation_) // groupid isolate
         {
             auto groupid_pool = groupid2pool_map_.find(inlong_group_id);
             if (groupid_pool == groupid2pool_map_.end() || groupid_pool->second.empty())
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/buffer_pool.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/buffer_pool.h
index 26ae2942b..dc48cdcaf 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/buffer_pool.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/buffer_pool.h
@@ -27,7 +27,6 @@
 #include <unordered_map>
 #include <vector>
 
-#include "atomic.h"
 #include "sdk_core.h"
 #include "noncopyable.h"
 #include "pack_queue.h"
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/executor_thread_pool.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/executor_thread_pool.cc
index c7c0010fb..8d5653ba9 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/executor_thread_pool.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/executor_thread_pool.cc
@@ -19,8 +19,6 @@
 
 #include "executor_thread_pool.h"
 
-#include "sdk_core.h"
-
 namespace dataproxy_sdk
 {
     ExecutorThread::ExecutorThread(int32_t id)
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/executor_thread_pool.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/executor_thread_pool.h
index e8f7013b9..bfc5d74f7 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/executor_thread_pool.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/executor_thread_pool.h
@@ -27,7 +27,6 @@
 #include <thread>
 
 #include "sdk_core.h"
-#include "client_config.h"
 #include "logger.h"
 #include "noncopyable.h"
 
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/send_buffer.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/send_buffer.h
index 16977944c..2699eb462 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/send_buffer.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/send_buffer.h
@@ -23,12 +23,10 @@
 #include <mutex>
 #include <string>
 
-#include "atomic.h"
 #include "sdk_core.h"
 // #include "executor_thread_pool.h"
 #include "logger.h"
 #include "noncopyable.h"
-#include "user_msg.h"
 // #include "socket_connection.h"
 
 namespace dataproxy_sdk
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/socket_connection.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/socket_connection.cc
index f350d2f68..88e6c6ca9 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/socket_connection.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/socket_connection.cc
@@ -26,7 +26,6 @@
 #include "buffer_pool.h"
 #include "proxylist_config.h"
 #include "sdk_constant.h"
-#include "client_config.h"
 #include "send_buffer.h"
 #include "utils.h"
 
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/socket_connection.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/socket_connection.h
index 7eaf8a602..6b541b678 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/socket_connection.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/net/socket_connection.h
@@ -28,7 +28,6 @@
 #include <system_error>
 #include <unordered_map>
 
-#include "atomic.h"
 #include "sdk_core.h"
 #include "executor_thread_pool.h"
 #include "logger.h"
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/CMakeLists.txt b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/CMakeLists.txt
index d32bd60a2..f543df660 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/CMakeLists.txt
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/CMakeLists.txt
@@ -21,6 +21,7 @@ function(sdk_add_tests _name)
     set(_srcs ${ARGN})
     message(STATUS "${_name} sources: ${_srcs}")
     add_executable(${_name} ${_srcs})
+    include_directories(release/inc)
     target_link_libraries(${_name} sdk_base sdk_net pthread gtest gmock)
 endfunction(sdk_add_tests _name)
 
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/base/client_config_test.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/base/client_config_test.cc
index 65a4568a4..695f0685e 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/base/client_config_test.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/base/client_config_test.cc
@@ -46,6 +46,27 @@ TEST(client, test2)
     EXPECT_EQ(client.parseConfig(), true);
 }
 
+TEST(client, init)
+{
+    ClientConfig client = ClientConfig("proxy_url", false, "", "key");
+    EXPECT_EQ(client.proxy_URL_, "proxy_url");
+    EXPECT_EQ(client.need_auth_, false);
+    EXPECT_EQ(client.auth_id_, "");
+    EXPECT_EQ(client.auth_key_, "key");
+    EXPECT_EQ(client.enable_pack_, constants::kEnablePack);
+}
+
+TEST(sdk, init)
+{
+    ClientConfig client = ClientConfig("proxy_url", false, "", "key");
+    int32_t init_first = tc_api_init("./release/conf/config_example.json");
+    int32_t init_second = tc_api_init(&client);
+    EXPECT_EQ(init_first, 0);
+    EXPECT_EQ(init_second, SDKInvalidResult::kMultiInit);
+    EXPECT_EQ(tc_api_close(1000), 0);
+
+}
+
 int main(int argc, char* argv[])
 {
     getLogger().init(5, 15, Logger::Level(4), 2, true, "./newlogs/");
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/base/proxylist_config_test.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/base/proxylist_config_test.cc
index ba846a887..a176bef1b 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/base/proxylist_config_test.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/base/proxylist_config_test.cc
@@ -21,7 +21,7 @@
 
 TEST(businfo, basetest)
 {
-    ProxyInfoPtr proxy = make_shared<ProxyInfo>("1", "0.0.0.0", 11009);
+    ProxyInfoPtr proxy = make_shared<ProxyInfo>(1, "0.0.0.0", 11009);
     EXPECT_EQ(proxy->getString(), "[ip:0.0.0.0, port:11009]");
 }
 
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/big_pack_test.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/big_pack_test.cc
index 3c936c7fa..6d76036a9 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/big_pack_test.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/big_pack_test.cc
@@ -21,10 +21,6 @@
 #include <string>
 #include <system_error>
 
-#include "sdk_core.h"
-#include "executor_thread_pool.h"
-#include "logger.h"
-#include "recv_buffer.h"
 #include "socket_connection.h"
 
 using namespace std;
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/buffer_pool_test.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/buffer_pool_test.cc
index f7e186e19..cf96c66c5 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/buffer_pool_test.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/buffer_pool_test.cc
@@ -19,7 +19,7 @@
 
 #include "atomic.h"
 #include "buffer_pool.h"
-#include "buslist_config.h"
+#include "proxylist_config.h"
 #include "executor_thread_pool.h"
 #include "logger.h"
 #include "send_buffer.h"
@@ -44,17 +44,15 @@ TEST(bufpool, basetest)
     EXPECT_EQ(g_config->parseConfig(), true);
     cout << g_config->bufNum() << endl;
 
-    g_pools = new TotalPools(g_config->thread_nums_, g_config->bufNum(), g_config->buf_size_);
-    EXPECT_NE(g_pools->getPool(0), nullptr);
-    EXPECT_NE(g_pools->getPool(1), nullptr);
-    EXPECT_NE(g_pools->getPool(2), nullptr);
-    EXPECT_EQ(g_pools->getPool(3), nullptr);
+    g_pools = new TotalPools();
+    EXPECT_NE(g_pools->getPool("groupid_1"), nullptr);
+    EXPECT_NE(g_pools->getPool("groupid_2"), nullptr);
 
     SendBuffer* buf = nullptr;
-    EXPECT_EQ(g_pools->getPool(0)->writeId(), 0);
-    EXPECT_EQ(g_pools->getPool(0)->getSendBuf(buf), 0);
+    EXPECT_EQ(g_pools->getPool("groupid_1")->writeId(), 0);
+    EXPECT_EQ(g_pools->getPool("groupid_2")->getSendBuf(buf), 0);
     EXPECT_NE(buf, nullptr);
-    EXPECT_EQ(g_pools->getPool(0)->writeId(), 1);
+    EXPECT_EQ(g_pools->getPool("groupid_1")->writeId(), 1);
 }
 
 int main(int argc, char* argv[])
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/send_buffer_test.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/send_buffer_test.cc
index a54c646e4..3ea1f33b3 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/send_buffer_test.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/send_buffer_test.cc
@@ -45,7 +45,7 @@ int32_t callBackFunc(const char* inlong_group_id, const char* inlong_stream_id,
 TEST(sendBuffer, callbacktest)
 {
     SendBuffer* buf = new SendBuffer(102400);
-    buf->setBid("bid1");
+    buf->setGroupid("inlong_group_id_1");
     buf->setStreamid("inlong_stream_id");
 
     UserMsgPtr req = make_shared<UserMsg>("lksdewoigiore", "127.0.0.1", 0, callBackFunc, "no_attr", "127.0.0.1", 0);
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/socket_connection_test.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/socket_connection_test.cc
index 707f27378..e1778ee1a 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/socket_connection_test.cc
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/test/net/socket_connection_test.cc
@@ -20,7 +20,7 @@
 #include "../common.h"
 
 ExecutorThreadPtr th1 = make_shared<ExecutorThread>(1);
-ProxyInfoPtr proxy        = make_shared<ProxyInfo>("1", "127.0.0.1", 4000);
+ProxyInfoPtr proxy        = make_shared<ProxyInfo>(1, "127.0.0.1", 4000);
 ConnectionPtr conn1   = make_shared<Connection>(th1, proxy);
 
 TEST(connection, sendBufTest1)
@@ -34,7 +34,6 @@ TEST(connection, sendBufTest1)
     conn1->decreaseWaiting();
     EXPECT_EQ(conn1->getWaitingSend(), 0);
     EXPECT_EQ(conn1->getRemoteInfo(), "[ip:127.0.0.1, port:4000]");
-    EXPECT_EQ(conn1->getProxyInfo(), proxy);
 
     this_thread::sleep_for(chrono::seconds(3));
     EXPECT_EQ(conn1->isConnected(), true);