You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by al...@apache.org on 2018/10/11 18:15:44 UTC

[2/2] kudu git commit: [test] use LocationInfo in ts_itest_base

[test] use LocationInfo in ts_itest_base

Added LocationInfo parameter into TabletServerIntegrationTestBase
methods: BuildAndStart() and CreateCluster().
In addition, I did some minor refactoring to use move semantics
for the parameters of the methods mentioned above.

Change-Id: If6fb1f583e43b9e64e3c396b7be1977546e71347
Reviewed-on: http://gerrit.cloudera.org:8080/11643
Reviewed-by: Will Berkeley <wd...@gmail.com>
Tested-by: Alexey Serbin <as...@cloudera.com>


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/c8dd7b53
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/c8dd7b53
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/c8dd7b53

Branch: refs/heads/master
Commit: c8dd7b53fc380289e0191da30394ffe127e9de9f
Parents: 3ff4711
Author: Alexey Serbin <as...@cloudera.com>
Authored: Tue Oct 9 18:57:52 2018 -0700
Committer: Alexey Serbin <as...@cloudera.com>
Committed: Thu Oct 11 18:15:11 2018 +0000

----------------------------------------------------------------------
 src/kudu/integration-tests/linked_list-test.cc  |  3 +-
 .../integration-tests/raft_consensus-itest.cc   |  3 +-
 .../raft_consensus_election-itest.cc            |  3 +-
 src/kudu/integration-tests/ts_itest-base.cc     | 35 ++++++++++----------
 src/kudu/integration-tests/ts_itest-base.h      | 19 ++++++-----
 5 files changed, 35 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/c8dd7b53/src/kudu/integration-tests/linked_list-test.cc
----------------------------------------------------------------------
diff --git a/src/kudu/integration-tests/linked_list-test.cc b/src/kudu/integration-tests/linked_list-test.cc
index 4434474..4fa43f6 100644
--- a/src/kudu/integration-tests/linked_list-test.cc
+++ b/src/kudu/integration-tests/linked_list-test.cc
@@ -131,7 +131,8 @@ class LinkedListTest : public tserver::TabletServerIntegrationTestBase {
       ts_flags.emplace_back("--log_segment_size_mb=1");
     }
 
-    NO_FATALS(CreateCluster("linked-list-cluster", ts_flags, common_flags));
+    NO_FATALS(CreateCluster("linked-list-cluster",
+                            std::move(ts_flags), std::move(common_flags)));
     ResetClientAndTester();
     ASSERT_OK(tester_->CreateLinkedListTable());
     WaitForTSAndReplicas();

http://git-wip-us.apache.org/repos/asf/kudu/blob/c8dd7b53/src/kudu/integration-tests/raft_consensus-itest.cc
----------------------------------------------------------------------
diff --git a/src/kudu/integration-tests/raft_consensus-itest.cc b/src/kudu/integration-tests/raft_consensus-itest.cc
index 20c3c7b..e18ef75 100644
--- a/src/kudu/integration-tests/raft_consensus-itest.cc
+++ b/src/kudu/integration-tests/raft_consensus-itest.cc
@@ -538,7 +538,8 @@ void RaftConsensusITest::CreateClusterForCrashyNodesTests() {
   // log area.
   ts_flags.emplace_back("--log_preallocate_segments=false");
 
-  NO_FATALS(CreateCluster("raft_consensus-itest-crashy-nodes-cluster", ts_flags, {}));
+  NO_FATALS(CreateCluster("raft_consensus-itest-crashy-nodes-cluster",
+                          std::move(ts_flags)));
 }
 
 void RaftConsensusITest::DoTestCrashyNodes(TestWorkload* workload, int max_rows_to_insert) {

http://git-wip-us.apache.org/repos/asf/kudu/blob/c8dd7b53/src/kudu/integration-tests/raft_consensus_election-itest.cc
----------------------------------------------------------------------
diff --git a/src/kudu/integration-tests/raft_consensus_election-itest.cc b/src/kudu/integration-tests/raft_consensus_election-itest.cc
index 3debfb5..86b7763 100644
--- a/src/kudu/integration-tests/raft_consensus_election-itest.cc
+++ b/src/kudu/integration-tests/raft_consensus_election-itest.cc
@@ -19,6 +19,7 @@
 #include <ostream>
 #include <string>
 #include <unordered_set>
+#include <utility>
 #include <vector>
 
 #include <gflags/gflags_declare.h>
@@ -106,7 +107,7 @@ void RaftConsensusElectionITest::CreateClusterForChurnyElectionsTests(
 
   ts_flags.insert(ts_flags.end(), extra_ts_flags.cbegin(), extra_ts_flags.cend());
 
-  NO_FATALS(CreateCluster("raft_consensus-itest-cluster", ts_flags, {}));
+  NO_FATALS(CreateCluster("raft_consensus-itest-cluster", std::move(ts_flags)));
 }
 
 void RaftConsensusElectionITest::DoTestChurnyElections(TestWorkload* workload,

http://git-wip-us.apache.org/repos/asf/kudu/blob/c8dd7b53/src/kudu/integration-tests/ts_itest-base.cc
----------------------------------------------------------------------
diff --git a/src/kudu/integration-tests/ts_itest-base.cc b/src/kudu/integration-tests/ts_itest-base.cc
index cd2f238..09449b7 100644
--- a/src/kudu/integration-tests/ts_itest-base.cc
+++ b/src/kudu/integration-tests/ts_itest-base.cc
@@ -70,6 +70,7 @@ DEFINE_int32(num_replicas, 3, "Number of replicas per tablet server");
 using kudu::client::sp::shared_ptr;
 using kudu::itest::TServerDetails;
 using kudu::cluster::ExternalTabletServer;
+using kudu::cluster::LocationInfo;
 using std::pair;
 using std::set;
 using std::string;
@@ -84,8 +85,7 @@ namespace tserver {
 
 static const int kMaxRetries = 20;
 
-TabletServerIntegrationTestBase::
-TabletServerIntegrationTestBase()
+TabletServerIntegrationTestBase::TabletServerIntegrationTestBase()
     : random_(SeedRandom()) {
 }
 
@@ -105,10 +105,10 @@ void TabletServerIntegrationTestBase::AddExtraFlags(
 }
 
 void TabletServerIntegrationTestBase::CreateCluster(
-    const string& cluster_root_path,
-    const vector<string>& non_default_ts_flags,
-    const vector<string>& non_default_master_flags,
-    uint32_t num_data_dirs) {
+    const std::string& data_root_path,
+    vector<string> non_default_ts_flags,
+    vector<string> non_default_master_flags,
+    cluster::LocationInfo location_info) {
 
   LOG(INFO) << "Starting cluster with:";
   LOG(INFO) << "--------------";
@@ -118,8 +118,8 @@ void TabletServerIntegrationTestBase::CreateCluster(
 
   cluster::ExternalMiniClusterOptions opts;
   opts.num_tablet_servers = FLAGS_num_tablet_servers;
-  opts.cluster_root = GetTestPath(cluster_root_path);
-  opts.num_data_dirs = num_data_dirs;
+  opts.cluster_root = GetTestPath(data_root_path);
+  opts.location_info = std::move(location_info);
 
   // Enable exactly once semantics for tests.
 
@@ -131,12 +131,12 @@ void TabletServerIntegrationTestBase::CreateCluster(
         Substitute("--consensus_rpc_timeout_ms=$0",
                    FLAGS_consensus_rpc_timeout_ms));
   } else {
-    for (const string& flag : non_default_ts_flags) {
-      opts.extra_tserver_flags.push_back(flag);
+    for (auto& flag : non_default_ts_flags) {
+      opts.extra_tserver_flags.emplace_back(std::move(flag));
     }
   }
-  for (const string& flag : non_default_master_flags) {
-    opts.extra_master_flags.push_back(flag);
+  for (auto& flag : non_default_master_flags) {
+    opts.extra_master_flags.emplace_back(std::move(flag));
   }
 
   AddExtraFlags(FLAGS_ts_flags, &opts.extra_tserver_flags);
@@ -536,12 +536,13 @@ void TabletServerIntegrationTestBase::CreateTable(const string& table_id) {
   ASSERT_OK(client_->OpenTable(table_id, &table_));
 }
 
-// Starts an external cluster with a single tablet and a number of replicas equal
-// to 'FLAGS_num_replicas'. The caller can pass 'ts_flags' to specify non-default
-// flags to pass to the tablet servers.
 void TabletServerIntegrationTestBase::BuildAndStart(
-    const vector<string>& ts_flags, const vector<string>& master_flags) {
-  NO_FATALS(CreateCluster("raft_consensus-itest-cluster", ts_flags, master_flags));
+    vector<string> ts_flags,
+    vector<string> master_flags,
+    LocationInfo location_info) {
+  NO_FATALS(CreateCluster("raft_consensus-itest-cluster",
+                          std::move(ts_flags), std::move(master_flags),
+                          std::move(location_info)));
   NO_FATALS(CreateClient(&client_));
   NO_FATALS(CreateTable());
   WaitForTSAndReplicas();

http://git-wip-us.apache.org/repos/asf/kudu/blob/c8dd7b53/src/kudu/integration-tests/ts_itest-base.h
----------------------------------------------------------------------
diff --git a/src/kudu/integration-tests/ts_itest-base.h b/src/kudu/integration-tests/ts_itest-base.h
index ce41df4..4cea4a3 100644
--- a/src/kudu/integration-tests/ts_itest-base.h
+++ b/src/kudu/integration-tests/ts_itest-base.h
@@ -53,9 +53,9 @@ class TabletServerIntegrationTestBase : public TabletServerTestBase {
                      std::vector<std::string>* flags);
 
   void CreateCluster(const std::string& data_root_path,
-                     const std::vector<std::string>& non_default_ts_flags,
-                     const std::vector<std::string>& non_default_master_flags,
-                     uint32_t num_data_dirs = 1);
+                     std::vector<std::string> non_default_ts_flags = {},
+                     std::vector<std::string> non_default_master_flags = {},
+                     cluster::LocationInfo location_info = {});
 
   // Creates TSServerDetails instance for each TabletServer and stores them
   // in 'tablet_servers_'.
@@ -116,11 +116,14 @@ class TabletServerIntegrationTestBase : public TabletServerTestBase {
   // Create a table with a single tablet, with 'num_replicas'.
   void CreateTable(const std::string& table_id = kTableId);
 
-  // Starts an external cluster with a single tablet and a number of replicas equal
-  // to 'FLAGS_num_replicas'. The caller can pass 'ts_flags' to specify non-default
-  // flags to pass to the tablet servers.
-  void BuildAndStart(const std::vector<std::string>& ts_flags = {},
-                     const std::vector<std::string>& master_flags = {});
+  // Starts an external cluster with a single tablet and a number of replicas
+  // equal to 'FLAGS_num_replicas'. The caller can pass 'ts_flags' and
+  // 'master_flags' to specify non-default flags to pass to the tablet servers
+  // and masters respectively. For location-aware tests scenarios, location
+  // mapping rules can be passed using the 'location_info' parameter.
+  void BuildAndStart(std::vector<std::string> ts_flags = {},
+                     std::vector<std::string> master_flags = {},
+                     cluster::LocationInfo location_info = {});
 
   void AssertAllReplicasAgree(int expected_result_count);