This is an automated email from the ASF dual-hosted git repository. alexey pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kudu.git
commit ad81d08930591abe76875f094792e554cb60c2fe Author: Alexey Serbin <[email protected]> AuthorDate: Tue Sep 6 18:40:11 2022 -0700 [tools] mark long-running scenarios in kudu-tool-test I noticed that it takes very long time for kudu-tool-test to complete. It turned out the test suite contains many scenarios that run with HMS integration enabled and it takes a long time to start up the HMS process. This patch marks the scenarios that tend to run over 3 seconds as slow, so they are skipped unless the KUDU_ALLOW_SLOW_TESTS environment variable is set to true/yes/1. The run time of the kudu-tool-test with this patch looks like the following on a contemporary Linux machine: Without KUDU_ALLOW_SLOW_TESTS: [==========] 128 tests from 8 test suites ran. (86355 ms total) [ PASSED ] 88 tests. [ SKIPPED ] 40 tests, listed below: ... With KUDU_ALLOW_SLOW_TESTS=1: [==========] 128 tests from 8 test suites ran. (842684 ms total) [ PASSED ] 128 tests. Change-Id: I1893741fada185d819128396c88f4ac99f43ed40 Reviewed-on: http://gerrit.cloudera.org:8080/18947 Reviewed-by: Mahesh Reddy <[email protected]> Tested-by: Alexey Serbin <[email protected]> Reviewed-by: Yifan Zhang <[email protected]> --- src/kudu/tools/kudu-tool-test.cc | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/kudu/tools/kudu-tool-test.cc b/src/kudu/tools/kudu-tool-test.cc index da9dcdb17..0c6cc294f 100644 --- a/src/kudu/tools/kudu-tool-test.cc +++ b/src/kudu/tools/kudu-tool-test.cc @@ -1222,6 +1222,7 @@ TEST_F(ToolTest, TestTopLevelHelp) { } TEST_F(ToolTest, TestModeHelp) { + SKIP_IF_SLOW_NOT_ALLOWED(); { const string kCmd = "cluster"; const vector<string> kClusterModeRegexes = { @@ -3324,6 +3325,7 @@ TEST_F(ToolTest, TestLoadgenKeepAutoTableAndData) { } TEST_F(ToolTest, TestLoadgenHmsEnabled) { + SKIP_IF_SLOW_NOT_ALLOWED(); ExternalMiniClusterOptions opts; opts.hms_mode = HmsMode::ENABLE_HIVE_METASTORE; NO_FATALS(StartExternalMiniCluster(std::move(opts))); @@ -3402,6 +3404,7 @@ TEST_F(ToolTest, TestLoadgenAutoGenTablePartitioning) { // Run the loadgen with txn-related options. TEST_F(ToolTest, LoadgenTxnBasics) { + SKIP_IF_SLOW_NOT_ALLOWED(); { ExternalMiniClusterOptions opts; // Prefer lighter cluster to speed up testing. @@ -3563,6 +3566,7 @@ R"(state // Test that a non-random workload results in the behavior we would expect when // running against an auto-generated range partitioned table. TEST_F(ToolTest, TestNonRandomWorkloadLoadgen) { + SKIP_IF_SLOW_NOT_ALLOWED(); { ExternalMiniClusterOptions opts; opts.num_tablet_servers = 1; @@ -4696,6 +4700,7 @@ TEST_F(ToolTest, TestRenameColumn) { } TEST_F(ToolTest, TestListTables) { + SKIP_IF_SLOW_NOT_ALLOWED(); NO_FATALS(StartExternalMiniCluster()); shared_ptr<KuduClient> client; ASSERT_OK(cluster_->CreateClient(nullptr, &client)); @@ -5106,6 +5111,7 @@ TEST_F(ToolTest, TableCopyFaultTolerant) { } TEST_P(ToolTestCopyTableParameterized, TestCopyTable) { + SKIP_IF_SLOW_NOT_ALLOWED(); for (const auto& arg : GenerateArgs()) { NO_FATALS(RunCopyTableCheck(arg)); } @@ -5797,6 +5803,7 @@ void ValidateHmsEntries(HmsClient* hms_client, } TEST_P(ToolTestKerberosParameterized, TestHmsDowngrade) { + SKIP_IF_SLOW_NOT_ALLOWED(); ExternalMiniClusterOptions opts; opts.hms_mode = HmsMode::ENABLE_METASTORE_INTEGRATION; opts.enable_kerberos = EnableKerberos(); @@ -5857,6 +5864,7 @@ Status AlterHmsWithReplacedParam(HmsClient* hms_client, // Test HMS inconsistencies that can be automatically fixed. // Kerberos is enabled in order to test the tools work in secure clusters. TEST_P(ToolTestKerberosParameterized, TestCheckAndAutomaticFixHmsMetadata) { + SKIP_IF_SLOW_NOT_ALLOWED(); string kUsername = "alice"; string kOtherUsername = "bob"; string kOtherComment = "a table comment"; @@ -6285,6 +6293,7 @@ TEST_P(ToolTestKerberosParameterized, TestCheckAndAutomaticFixHmsMetadata) { // TODO(ghenke): Add test case for external table using the same name as // an existing Kudu table. TEST_P(ToolTestKerberosParameterized, TestCheckAndManualFixHmsMetadata) { + SKIP_IF_SLOW_NOT_ALLOWED(); string kUsername = "alice"; ExternalMiniClusterOptions opts; opts.hms_mode = HmsMode::DISABLE_HIVE_METASTORE; @@ -6418,6 +6427,7 @@ TEST_P(ToolTestKerberosParameterized, TestCheckAndManualFixHmsMetadata) { } TEST_F(ToolTest, TestHmsIgnoresDifferentMasters) { + SKIP_IF_SLOW_NOT_ALLOWED(); ExternalMiniClusterOptions opts; opts.num_masters = 2; opts.hms_mode = HmsMode::ENABLE_METASTORE_INTEGRATION; @@ -6505,6 +6515,7 @@ TEST_F(ToolTest, TestHmsIgnoresDifferentMasters) { // is enabled, keeping the behavior of the tool backward-compatible even after // introducing the "table soft-delete" feature. TEST_F(ToolTest, DropTableHmsEnabled) { + SKIP_IF_SLOW_NOT_ALLOWED(); ExternalMiniClusterOptions opts; opts.hms_mode = HmsMode::ENABLE_METASTORE_INTEGRATION; NO_FATALS(StartExternalMiniCluster(std::move(opts))); @@ -6521,6 +6532,7 @@ TEST_F(ToolTest, DropTableHmsEnabled) { } TEST_F(ToolTest, TestHmsPrecheck) { + SKIP_IF_SLOW_NOT_ALLOWED(); ExternalMiniClusterOptions opts; opts.hms_mode = HmsMode::ENABLE_HIVE_METASTORE; NO_FATALS(StartExternalMiniCluster(std::move(opts))); @@ -6592,6 +6604,7 @@ TEST_F(ToolTest, TestHmsPrecheck) { } TEST_F(ToolTest, TestHmsList) { + SKIP_IF_SLOW_NOT_ALLOWED(); ExternalMiniClusterOptions opts; opts.hms_mode = HmsMode::ENABLE_HIVE_METASTORE; opts.enable_kerberos = EnableKerberos(); @@ -6659,6 +6672,7 @@ TEST_F(ToolTest, TestHmsList) { } TEST_F(ToolTest, TestHMSAddressLog) { + SKIP_IF_SLOW_NOT_ALLOWED(); ExternalMiniClusterOptions opts; opts.hms_mode = HmsMode::ENABLE_HIVE_METASTORE; opts.enable_kerberos = EnableKerberos(); @@ -6764,6 +6778,7 @@ INSTANTIATE_TEST_SUITE_P(SerializationModes, ControlShellToolTest, ::testing::Bool())); TEST_P(ControlShellToolTest, TestControlShell) { + SKIP_IF_SLOW_NOT_ALLOWED(); constexpr auto kNumMasters = 1; constexpr auto kNumTservers = 3; @@ -7428,6 +7443,7 @@ TEST_F(ToolTest, TestFsRemoveDataDirWithTombstone) { } TEST_F(ToolTest, TestFsAddRemoveDataDirEndToEnd) { + SKIP_IF_SLOW_NOT_ALLOWED(); const string kTableFoo = "foo"; const string kTableBar = "bar"; @@ -7616,6 +7632,7 @@ TEST_F(ToolTest, TestCheckFSWithNonDefaultMetadataDir) { } TEST_F(ToolTest, TestReplaceTablet) { + SKIP_IF_SLOW_NOT_ALLOWED(); constexpr int kNumTservers = 3; constexpr int kNumTablets = 3; constexpr int kNumRows = 1000; @@ -7762,6 +7779,7 @@ TEST_F(ToolTest, TestGetFlags) { // This is a synthetic test to provide coverage for regressions of KUDU-2819. TEST_F(ToolTest, TabletServersWithUnusualFlags) { + SKIP_IF_SLOW_NOT_ALLOWED(); // Run many tablet servers: it helps in detection of races, if any. #if defined(THREAD_SANITIZER) // In case of TSAN builds, it takes too long to wait for the start up of too @@ -7988,6 +8006,7 @@ class AuthzTServerChecksumTest : public ToolTest { // Test the authorization of Checksum scans via the CLI. TEST_F(AuthzTServerChecksumTest, TestAuthorizeChecksum) { + SKIP_IF_SLOW_NOT_ALLOWED(); // First, let's create a table. const vector<string> loadgen_args = { "perf", "loadgen", @@ -8009,6 +8028,7 @@ TEST_F(AuthzTServerChecksumTest, TestAuthorizeChecksum) { // Regression test for KUDU-2851. TEST_F(ToolTest, TestFailedTableScan) { + SKIP_IF_SLOW_NOT_ALLOWED(); // Create a table using the loadgen tool. const string kTableName = "db.table"; NO_FATALS(RunLoadgen(/*num_tservers*/1, /*tool_args*/{},kTableName)); @@ -8032,6 +8052,7 @@ TEST_F(ToolTest, TestFailedTableScan) { } TEST_F(ToolTest, TestFailedTableCopy) { + SKIP_IF_SLOW_NOT_ALLOWED(); // Create a table using the loadgen tool. const string kTableName = "db.table"; NO_FATALS(RunLoadgen(/*num_tservers*/1, /*tool_args*/{},kTableName)); @@ -8136,6 +8157,7 @@ TEST_F(ToolTest, TestDuplicateMastersInKsck) { } TEST_F(ToolTest, TestNonDefaultPrincipal) { + SKIP_IF_SLOW_NOT_ALLOWED(); ExternalMiniClusterOptions opts; opts.enable_kerberos = true; opts.principal = "oryx"; @@ -8159,6 +8181,7 @@ class UnregisterTServerTest : public ToolTest, public ::testing::WithParamInterf INSTANTIATE_TEST_SUITE_P(, UnregisterTServerTest, ::testing::Bool()); TEST_P(UnregisterTServerTest, TestUnregisterTServer) { + SKIP_IF_SLOW_NOT_ALLOWED(); bool remove_tserver_state = GetParam(); // Set a short timeout that masters consider a tserver dead. @@ -8275,6 +8298,7 @@ TEST_F(UnregisterTServerTest, TestUnregisterTServerNotPresumedDead) { } TEST_F(ToolTest, TestLocalReplicaCopyLocal) { + SKIP_IF_SLOW_NOT_ALLOWED(); // TODO(abukor): Rewrite the test to make sure it works with encryption // enabled. // @@ -8369,6 +8393,7 @@ TEST_F(ToolTest, TestLocalReplicaCopyLocal) { } TEST_F(ToolTest, TestLocalReplicaCopyRemote) { + SKIP_IF_SLOW_NOT_ALLOWED(); InternalMiniClusterOptions opts; opts.num_tablet_servers = 2; NO_FATALS(StartMiniCluster(std::move(opts))); @@ -8403,6 +8428,7 @@ TEST_F(ToolTest, TestLocalReplicaCopyRemote) { } TEST_F(ToolTest, TestRebuildTserverByLocalReplicaCopy) { + SKIP_IF_SLOW_NOT_ALLOWED(); // Local copies are not supported on encrypted severs at this time. if (FLAGS_encrypt_data_at_rest) { GTEST_SKIP();
