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

laiyingchun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git


The following commit(s) were added to refs/heads/master by this push:
     new 18e378dc8 refactor(function_test): make [backup_]restore_test derive 
from test_util (#1710)
18e378dc8 is described below

commit 18e378dc83f4bba6191a9faf4f59e6d1a9954c4b
Author: Yingchun Lai <[email protected]>
AuthorDate: Wed Dec 6 10:51:53 2023 +0800

    refactor(function_test): make [backup_]restore_test derive from test_util 
(#1710)
    
    There is no functional changes in this patch, but only make class
    backup_restore_test and restore_test derive from test_util.
---
 run.sh                                             |   2 +-
 .../function_test/backup_restore/CMakeLists.txt    |   2 +-
 .../backup_restore/test_backup_and_restore.cpp     | 115 ++++++---------------
 src/test/function_test/config.ini                  |   2 -
 src/test/function_test/restore/test_restore.cpp    |  87 +++++-----------
 src/test/function_test/utils/test_util.cpp         |   2 +-
 src/test/kill_test/config.ini                      |   1 -
 7 files changed, 64 insertions(+), 147 deletions(-)

diff --git a/run.sh b/run.sh
index dd8106102..5e46da9e4 100755
--- a/run.sh
+++ b/run.sh
@@ -473,7 +473,7 @@ function run_test()
                 
opts="cold_backup_disabled=false,cold_backup_checkpoint_reserve_minutes=0,cold_backup_root=onebox"
             fi
             if [ "${module}" == "restore_test" ]; then
-                
opts="cold_backup_disabled=false,cold_backup_checkpoint_reserve_minutes=0,cold_backup_root=mycluster"
+                
opts="cold_backup_disabled=false,cold_backup_checkpoint_reserve_minutes=0,cold_backup_root=onebox"
             fi
             [ -z ${onebox_opts} ] || opts="${opts},${onebox_opts}"
             if ! run_start_onebox -m ${m_count} -w -c --opts ${opts}; then
diff --git a/src/test/function_test/backup_restore/CMakeLists.txt 
b/src/test/function_test/backup_restore/CMakeLists.txt
index 51fea317e..4b12451ec 100644
--- a/src/test/function_test/backup_restore/CMakeLists.txt
+++ b/src/test/function_test/backup_restore/CMakeLists.txt
@@ -24,12 +24,12 @@ set(MY_PROJ_LIBS
     dsn_client
     dsn_replication_common
     dsn_utils
-    pegasus_client_static
     gtest
     sasl2
     gssapi_krb5
     krb5
     function_test_utils
+    pegasus_client_static
     )
 
 set(MY_BOOST_LIBS Boost::system Boost::filesystem)
diff --git a/src/test/function_test/backup_restore/test_backup_and_restore.cpp 
b/src/test/function_test/backup_restore/test_backup_and_restore.cpp
index d5a6cefda..12dceb930 100644
--- a/src/test/function_test/backup_restore/test_backup_and_restore.cpp
+++ b/src/test/function_test/backup_restore/test_backup_and_restore.cpp
@@ -25,12 +25,12 @@
 #include "backup_types.h"
 #include "base/pegasus_const.h"
 #include "client/replication_ddl_client.h"
-#include "common/replication_other_types.h"
 #include "dsn.layer2_types.h"
 #include "gtest/gtest.h"
 #include "include/pegasus/client.h"
 #include "include/pegasus/error.h"
 #include "runtime/rpc/rpc_address.h"
+#include "test/function_test/utils/test_util.h"
 #include "utils/error_code.h"
 #include "utils/errors.h"
 #include "utils/utils.h"
@@ -39,54 +39,21 @@ using namespace dsn;
 using namespace dsn::replication;
 using namespace pegasus;
 
-// TODO(yingchun): backup & restore festure is on refactoring, we can refactor 
the related function
-// test later.
-class backup_restore_test : public testing::Test
+class backup_restore_test : public test_util
 {
 public:
-    backup_restore_test()
-        : _ddl_client(nullptr),
-          _num_of_rows(1000),
-          _check_interval_sec(10),
-          _cluster_name("onebox"),
-          _old_app_name("test_app"),
-          _new_app_name("new_app"),
-          _provider("local_service")
-    {
-    }
-
-    static void SetUpTestCase() { 
ASSERT_TRUE(pegasus_client_factory::initialize("config.ini")); }
-
-    void SetUp() override
-    {
-        // initialize ddl_client
-        std::vector<rpc_address> meta_list;
-        ASSERT_TRUE(replica_helper::load_meta_servers(
-            meta_list, PEGASUS_CLUSTER_SECTION_NAME.c_str(), 
_cluster_name.c_str()));
-        ASSERT_FALSE(meta_list.empty());
-        _ddl_client = std::make_shared<replication_ddl_client>(meta_list);
-        ASSERT_TRUE(_ddl_client != nullptr);
-    }
-
     void TearDown() override
     {
-        ASSERT_EQ(ERR_OK, _ddl_client->drop_app(_old_app_name, 0));
-        ASSERT_EQ(ERR_OK, _ddl_client->drop_app(_new_app_name, 0));
+        ASSERT_EQ(ERR_OK, ddl_client_->drop_app(app_name_, 0));
+        ASSERT_EQ(ERR_OK, ddl_client_->drop_app(s_new_app_name, 0));
     }
 
     bool write_data()
     {
-        pegasus::pegasus_client *client = 
pegasus::pegasus_client_factory::get_client(
-            _cluster_name.c_str(), _old_app_name.c_str());
-        if (client == nullptr) {
-            std::cout << "get pegasus client failed" << std::endl;
-            return false;
-        }
-
-        for (int i = 0; i < _num_of_rows; ++i) {
-            int ret = client->set("hashkey_" + std::to_string(i),
-                                  "sortkey_" + std::to_string(i),
-                                  "value_" + std::to_string(i));
+        for (int i = 0; i < s_num_of_rows; ++i) {
+            int ret = client_->set("hashkey_" + std::to_string(i),
+                                   "sortkey_" + std::to_string(i),
+                                   "value_" + std::to_string(i));
             if (ret != pegasus::PERR_OK) {
                 std::cout << "write data failed. " << std::endl;
                 return false;
@@ -97,18 +64,11 @@ public:
 
     bool verify_data(const std::string &app_name)
     {
-        pegasus::pegasus_client *client =
-            pegasus::pegasus_client_factory::get_client(_cluster_name.c_str(), 
app_name.c_str());
-        if (client == nullptr) {
-            std::cout << "get pegasus client failed" << std::endl;
-            return false;
-        }
-
-        for (int i = 0; i < _num_of_rows; ++i) {
+        for (int i = 0; i < s_num_of_rows; ++i) {
             const std::string &expected_value = "value_" + std::to_string(i);
             std::string value;
             int ret =
-                client->get("hashkey_" + std::to_string(i), "sortkey_" + 
std::to_string(i), value);
+                client_->get("hashkey_" + std::to_string(i), "sortkey_" + 
std::to_string(i), value);
             if (ret != pegasus::PERR_OK) {
                 return false;
             }
@@ -121,23 +81,23 @@ public:
 
     start_backup_app_response start_backup(const std::string 
&user_specified_path = "")
     {
-        return _ddl_client->backup_app(_old_app_id, _provider, 
user_specified_path).get_value();
+        return ddl_client_->backup_app(app_id_, s_provider_type, 
user_specified_path).get_value();
     }
 
     query_backup_status_response query_backup(int64_t backup_id)
     {
-        return _ddl_client->query_backup(_old_app_id, backup_id).get_value();
+        return ddl_client_->query_backup(app_id_, backup_id).get_value();
     }
 
     error_code start_restore(int64_t backup_id, const std::string 
&user_specified_path = "")
     {
-        return _ddl_client->do_restore(_provider,
-                                       _cluster_name,
+        return ddl_client_->do_restore(s_provider_type,
+                                       cluster_name_,
                                        /*policy_name=*/"",
                                        backup_id,
-                                       _old_app_name,
-                                       _old_app_id,
-                                       _new_app_name,
+                                       app_name_,
+                                       app_id_,
+                                       s_new_app_name,
                                        /*skip_bad_partition=*/false,
                                        user_specified_path);
     }
@@ -148,8 +108,8 @@ public:
         bool is_backup_complete = false;
         while (!is_backup_complete && sleep_sec <= max_sleep_seconds) {
             std::cout << "sleep a while to wait backup complete." << std::endl;
-            sleep(_check_interval_sec);
-            sleep_sec += _check_interval_sec;
+            sleep(s_check_interval_sec);
+            sleep_sec += s_check_interval_sec;
 
             auto resp = query_backup(backup_id);
             if (resp.err != ERR_OK) {
@@ -168,13 +128,12 @@ public:
         bool is_app_healthy = false;
         while (!is_app_healthy && sleep_sec <= max_sleep_seconds) {
             std::cout << "sleep a while to wait app become healthy." << 
std::endl;
-            sleep(_check_interval_sec);
-            sleep_sec += _check_interval_sec;
+            sleep(s_check_interval_sec);
+            sleep_sec += s_check_interval_sec;
 
-            int32_t new_app_id;
             int32_t partition_count;
             std::vector<partition_configuration> partitions;
-            auto err = _ddl_client->list_app(app_name, _old_app_id, 
partition_count, partitions);
+            auto err = ddl_client_->list_app(app_name, app_id_, 
partition_count, partitions);
             if (err != ERR_OK) {
                 std::cout << "list app " + app_name + " failed" << std::endl;
                 return false;
@@ -196,37 +155,31 @@ public:
 
     void test_backup_and_restore(const std::string &user_specified_path = "")
     {
-        error_code err = _ddl_client->create_app(_old_app_name, "pegasus", 4, 
3, {}, false);
-        ASSERT_EQ(ERR_OK, err);
-        ASSERT_TRUE(wait_app_become_healthy(_old_app_name, 180));
+        ASSERT_TRUE(wait_app_become_healthy(app_name_, 180));
 
         ASSERT_TRUE(write_data());
-        ASSERT_TRUE(verify_data(_old_app_name));
+        ASSERT_TRUE(verify_data(app_name_));
 
         auto resp = start_backup(user_specified_path);
         ASSERT_EQ(ERR_OK, resp.err);
         int64_t backup_id = resp.backup_id;
         ASSERT_TRUE(wait_backup_complete(backup_id, 180));
-        err = start_restore(backup_id, user_specified_path);
-        ASSERT_EQ(ERR_OK, err);
-        ASSERT_TRUE(wait_app_become_healthy(_new_app_name, 180));
+        ASSERT_EQ(ERR_OK, start_restore(backup_id, user_specified_path));
+        ASSERT_TRUE(wait_app_become_healthy(s_new_app_name, 180));
 
-        ASSERT_TRUE(verify_data(_new_app_name));
+        ASSERT_TRUE(verify_data(s_new_app_name));
     }
 
 private:
-    std::shared_ptr<replication_ddl_client> _ddl_client;
-
-    const uint32_t _num_of_rows;
-    const uint8_t _check_interval_sec;
-    const std::string _cluster_name;
-    const std::string _old_app_name;
-    const std::string _new_app_name;
-    const std::string _provider;
-
-    int32_t _old_app_id;
+    static const uint32_t s_num_of_rows = 1000;
+    static const uint8_t s_check_interval_sec = 10;
+    static const std::string s_new_app_name;
+    static const std::string s_provider_type;
 };
 
+const std::string backup_restore_test::s_new_app_name = "new_app";
+const std::string backup_restore_test::s_provider_type = "local_service";
+
 TEST_F(backup_restore_test, test_backup_and_restore) { 
test_backup_and_restore(); }
 
 TEST_F(backup_restore_test, test_backup_and_restore_with_user_specified_path)
diff --git a/src/test/function_test/config.ini 
b/src/test/function_test/config.ini
index 01c7bae70..21ede3ff2 100644
--- a/src/test/function_test/config.ini
+++ b/src/test/function_test/config.ini
@@ -75,8 +75,6 @@ rpc_timeout_milliseconds = 5000
 lb_interval_ms = 3000
 
 [pegasus.clusters]
-; TODO(yingchun): leave only 1 cluster config
-mycluster = 127.0.0.1:34601,127.0.0.1:34602,127.0.0.1:34603
 onebox = 127.0.0.1:34601,127.0.0.1:34602,127.0.0.1:34603
 single_master_cluster = 127.0.0.1:34601
 
diff --git a/src/test/function_test/restore/test_restore.cpp 
b/src/test/function_test/restore/test_restore.cpp
index 3ee5003b7..a2350a408 100644
--- a/src/test/function_test/restore/test_restore.cpp
+++ b/src/test/function_test/restore/test_restore.cpp
@@ -33,7 +33,6 @@
 #include "client/partition_resolver.h"
 #include "client/replication_ddl_client.h"
 #include "common/gpid.h"
-#include "common/replication_other_types.h"
 #include "dsn.layer2_types.h"
 #include "gtest/gtest.h"
 #include "include/pegasus/client.h"
@@ -41,6 +40,7 @@
 #include "runtime/api_layer1.h"
 #include "runtime/rpc/rpc_address.h"
 #include "test/function_test/utils/global_env.h"
+#include "test/function_test/utils/test_util.h"
 #include "test_util/test_util.h"
 #include "utils/error_code.h"
 #include "utils/filesystem.h"
@@ -51,57 +51,32 @@ using namespace ::dsn;
 using namespace ::dsn::replication;
 using namespace pegasus;
 
-// TODO(yingchun): backup & restore festure is on refactoring, we can refactor 
the related function
-// test later.
-class restore_test : public testing::Test
+class restore_test : public test_util
 {
 public:
-    static void SetUpTestCase() { 
ASSERT_TRUE(pegasus_client_factory::initialize("config.ini")); }
-
     void SetUp() override
     {
+        test_util::SetUp();
+
         std::string provider_dir = "block_service/local_service";
         policy_dir = "onebox/" + provider_dir + '/' +
-                     dsn::utils::filesystem::path_combine(cluster_name, 
policy_name);
-        backup_dir = "onebox/" + provider_dir + '/' + cluster_name;
-
-        std::vector<dsn::rpc_address> meta_list;
-        ASSERT_TRUE(replica_helper::load_meta_servers(
-            meta_list, PEGASUS_CLUSTER_SECTION_NAME.c_str(), 
cluster_name.c_str()));
-        ASSERT_FALSE(meta_list.empty());
-        ddl_client = std::make_shared<replication_ddl_client>(meta_list);
-        ASSERT_TRUE(ddl_client != nullptr);
-        error_code err =
-            ddl_client->create_app(app_name, "pegasus", default_partition_cnt, 
3, {}, false);
-        ASSERT_EQ(err, ERR_OK);
-        int32_t app_id = 0;
-        {
-            int32_t partition_id;
-            std::vector<partition_configuration> partitions;
-            err = ddl_client->list_app(app_name, app_id, partition_id, 
partitions);
-            ASSERT_EQ(err, ERR_OK);
-            old_app_id = app_id;
-        }
-        ASSERT_GE(app_id, 0);
-        pg_client =
-            pegasus::pegasus_client_factory::get_client(cluster_name.c_str(), 
app_name.c_str());
-        ASSERT_NE(pg_client, nullptr);
+                     dsn::utils::filesystem::path_combine(cluster_name_, 
policy_name);
+        backup_dir = "onebox/" + provider_dir + '/' + cluster_name_;
 
         write_data();
 
-        std::vector<int32_t> app_ids;
-        app_ids.emplace_back(app_id);
-        err = ddl_client->add_backup_policy(policy_name,
-                                            backup_provider_name,
-                                            app_ids,
-                                            backup_interval_seconds,
-                                            backup_history_count_to_keep,
-                                            start_time);
+        std::vector<int32_t> app_ids({app_id_});
+        auto err = ddl_client_->add_backup_policy(policy_name,
+                                                  backup_provider_name,
+                                                  app_ids,
+                                                  backup_interval_seconds,
+                                                  backup_history_count_to_keep,
+                                                  start_time);
         std::cout << "add backup policy complete with err = " << 
err.to_string() << std::endl;
         ASSERT_EQ(err, ERR_OK);
     }
 
-    void TearDown() override { ASSERT_EQ(ERR_OK, 
ddl_client->drop_app(app_name, 0)); }
+    void TearDown() override { ASSERT_EQ(ERR_OK, 
ddl_client_->drop_app(app_name_, 0)); }
 
     void write_data()
     {
@@ -109,13 +84,13 @@ public:
                   << std::endl;
         int64_t start = dsn_now_ms();
         int err = PERR_OK;
-        ASSERT_NE(pg_client, nullptr);
+        ASSERT_NE(client_, nullptr);
         for (int i = 1; i <= kv_pair_cnt; i++) {
             std::string index = std::to_string(i);
             std::string h_key = hash_key_prefix + "_" + index;
             std::string s_key = sort_key_prefix + "_" + index;
             std::string value = value_prefix + "_" + index;
-            err = pg_client->set(h_key, s_key, value);
+            err = client_->set(h_key, s_key, value);
             ASSERT_EQ(err, PERR_OK);
         }
         int64_t end = dsn_now_ms();
@@ -127,8 +102,8 @@ public:
     {
         std::cout << "start to get " << kv_pair_cnt << " key-value pairs, 
using get()..."
                   << std::endl;
-        new_pg_client =
-            pegasus::pegasus_client_factory::get_client(cluster_name.c_str(), 
new_app_name.c_str());
+        pegasus_client *new_pg_client = 
pegasus::pegasus_client_factory::get_client(
+            cluster_name_.c_str(), new_app_name.c_str());
         ASSERT_NE(nullptr, new_pg_client);
 
         int64_t start = dsn_now_ms();
@@ -151,14 +126,14 @@ public:
     {
         std::this_thread::sleep_for(std::chrono::seconds(30));
         ASSERT_EQ(ERR_OK,
-                  ddl_client->do_restore(backup_provider_name,
-                                         cluster_name,
-                                         /*old_policy_name=*/"",
-                                         time_stamp,
-                                         app_name,
-                                         old_app_id,
-                                         new_app_name,
-                                         false));
+                  ddl_client_->do_restore(backup_provider_name,
+                                          cluster_name_,
+                                          /*old_policy_name=*/"",
+                                          time_stamp,
+                                          app_name_,
+                                          app_id_,
+                                          new_app_name,
+                                          false));
         ASSERT_NO_FATAL_FAILURE(wait_app_healthy());
     }
 
@@ -170,7 +145,7 @@ public:
                 int32_t partition_cnt = 0;
                 std::vector<partition_configuration> p_confs;
                 ASSERT_EQ(ERR_OK,
-                          ddl_client->list_app(new_app_name, app_id, 
partition_cnt, p_confs));
+                          ddl_client_->list_app(new_app_name, app_id, 
partition_cnt, p_confs));
                 for (int i = 0; i < p_confs.size(); i++) {
                     const auto &pc = p_confs[i];
                     ASSERT_FALSE(pc.primary.is_invalid());
@@ -245,15 +220,10 @@ public:
     }
 
 public:
-    pegasus_client *pg_client;
-    pegasus_client *new_pg_client;
-    std::shared_ptr<replication_ddl_client> ddl_client;
     std::string policy_dir;
     std::string backup_dir;
 
-    const std::string cluster_name = "mycluster";
     const std::string new_app_name = "backup_test_new";
-    int32_t old_app_id;
     int64_t time_stamp;
 
     const std::string policy_name = "policy_1";
@@ -269,14 +239,11 @@ public:
     const int backup_history_count_to_keep = 6;
     const std::string start_time = "24:0";
 
-    const std::string app_name = "backup_test";
-
     const std::string hash_key_prefix = "hash_key";
     const std::string sort_key_prefix = "sort_key";
     const std::string value_prefix = "value";
 
     const int kv_pair_cnt = 10000;
-    const int default_partition_cnt = 8;
 };
 
 TEST_F(restore_test, restore)
diff --git a/src/test/function_test/utils/test_util.cpp 
b/src/test/function_test/utils/test_util.cpp
index 81fded73b..3a7cb3870 100644
--- a/src/test/function_test/utils/test_util.cpp
+++ b/src/test/function_test/utils/test_util.cpp
@@ -54,7 +54,7 @@ using std::vector;
 namespace pegasus {
 
 test_util::test_util(map<string, string> create_envs)
-    : cluster_name_("mycluster"), app_name_("temp"), 
create_envs_(std::move(create_envs))
+    : cluster_name_("onebox"), app_name_("temp"), 
create_envs_(std::move(create_envs))
 {
 }
 
diff --git a/src/test/kill_test/config.ini b/src/test/kill_test/config.ini
index a40ac9491..426bd2a61 100644
--- a/src/test/kill_test/config.ini
+++ b/src/test/kill_test/config.ini
@@ -114,5 +114,4 @@ onebox_run_path = @ONEBOX_RUN_PATH@
 
 [pegasus.clusters]
 onebox = @LOCAL_HOSTNAME@:34601,@LOCAL_HOSTNAME@:34602,@LOCAL_HOSTNAME@:34603
-mycluster = 
@LOCAL_HOSTNAME@:34601,@LOCALOCAL_HOSTNAMEL_IP@:34602,@LOCAL_HOSTNAME@:34603
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to