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 66c5f52ab46807f925c6826283f84ded4e193f18
Author: Alexey Serbin <[email protected]>
AuthorDate: Fri Aug 26 13:31:13 2022 -0700

    [test] instantiate TsRecoveryITestDeathTest
    
    As it turned out, the parameterized TsRecoveryITestDeathTest was not
    instantiated.  Digging into the history of changes, I found that [1]
    introduced TEST_F --> TEST_P change without adding corresponding
    instantiations for the parameterized test suite.
    
    I fixed the test by adapting it for the parameterization it went through
    and added the missing instantiation macro.  In addition, [2] introduced
    an extra DCHECK() into TabletReplica::FinishConsensusOnlyRound().  Once
    instantiated, the test started hitting the DCHECK().  To address that
    issue, I updated the test-only function AppendNoOpsToLogSync() in
    log-test-base.h to fill in the 'noop_request' field along with setting
    the 'op_type' field to NO_OP.  With that, since I added some extra data
    into a NO_OP log record, I also updated the reference size of the WAL
    segment in Raft consensus log test.
    
    [1] 
https://github.com/apache/kudu/commit/371a00b7aeba244aa63d92bf479cbb356b4dfbca
    [2] 
https://github.com/apache/kudu/commit/bc817a44867c586bf4e0539aa564b282c666a49d
    
    Change-Id: Iaf48782ad17ac40023ee94770820d8d403c5cf96
    Reviewed-on: http://gerrit.cloudera.org:8080/18920
    Tested-by: Kudu Jenkins
    Reviewed-by: Yingchun Lai <[email protected]>
---
 src/kudu/consensus/log-test-base.h              | 1 +
 src/kudu/consensus/log-test.cc                  | 3 ++-
 src/kudu/integration-tests/ts_recovery-itest.cc | 6 +++++-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/kudu/consensus/log-test-base.h 
b/src/kudu/consensus/log-test-base.h
index 669210292..6aa1f280c 100644
--- a/src/kudu/consensus/log-test-base.h
+++ b/src/kudu/consensus/log-test-base.h
@@ -80,6 +80,7 @@ inline Status AppendNoOpsToLogSync(clock::Clock* clock,
 
     repl->mutable_id()->CopyFrom(*op_id);
     repl->set_op_type(consensus::NO_OP);
+    repl->mutable_noop_request(); // add a no-op request field
     repl->set_timestamp(clock->Now().ToUint64());
 
     // Increment op_id.
diff --git a/src/kudu/consensus/log-test.cc b/src/kudu/consensus/log-test.cc
index c1005b104..4ea6e0bc8 100644
--- a/src/kudu/consensus/log-test.cc
+++ b/src/kudu/consensus/log-test.cc
@@ -467,6 +467,7 @@ TEST_F(LogTest, TestWriteAndReadToAndFromInProgressSegment) 
{
   ReplicateMsg* repl = log_entry->mutable_replicate();
   repl->mutable_id()->CopyFrom(op_id);
   repl->set_op_type(NO_OP);
+  repl->mutable_noop_request();
   repl->set_timestamp(0L);
 
   // Entries are prefixed with a header.
@@ -1074,7 +1075,7 @@ TEST_F(LogTest, TestGetGCableDataSize) {
 
   const int kNumTotalSegments = 5;
   const int kNumOpsPerSegment = 5;
-  const int64_t kSegmentSizeBytes = 337 + env_->GetEncryptionHeaderSize();
+  const int64_t kSegmentSizeBytes = 352 + env_->GetEncryptionHeaderSize();
   OpId op_id = MakeOpId(1, 10);
   // Create 5 segments, starting from log index 10, with 5 ops per segment.
   // [10-14], [15-19], [20-24], [25-29], [30-34]
diff --git a/src/kudu/integration-tests/ts_recovery-itest.cc 
b/src/kudu/integration-tests/ts_recovery-itest.cc
index 35b93d8b5..ea499004f 100644
--- a/src/kudu/integration-tests/ts_recovery-itest.cc
+++ b/src/kudu/integration-tests/ts_recovery-itest.cc
@@ -23,6 +23,7 @@
 #include <ostream>
 #include <string>
 #include <thread>
+#include <type_traits>
 #include <unordered_map>
 #include <unordered_set>
 #include <vector>
@@ -552,12 +553,14 @@ TEST_P(TsRecoveryITest, TestChangeMaxCellSize) {
 // test scenario isn't present for TSAN builds.
 class TsRecoveryITestDeathTest : public TsRecoveryITest {
 };
+INSTANTIATE_TEST_SUITE_P(BlockManagerType, TsRecoveryITestDeathTest,
+                         
::testing::ValuesIn(BlockManager::block_manager_types()));
 
 // Test that tablet bootstrap can automatically repair itself if it finds an
 // overflowed OpId index written to the log caused by KUDU-1933.
 // Also serves as a regression itest for KUDU-1933 by writing ops with a high
 // term and index.
-TEST_P(TsRecoveryITestDeathTest, TestRecoverFromOpIdOverflow) {
+TEST_P(TsRecoveryITestDeathTest, RecoverFromOpIdOverflow) {
   // Create the initial tablet files on disk, then shut down the cluster so we
   // can meddle with the WAL.
   NO_FATALS(StartClusterOneTs());
@@ -584,6 +587,7 @@ TEST_P(TsRecoveryITestDeathTest, 
TestRecoverFromOpIdOverflow) {
     FsManagerOpts opts;
     opts.wal_root = ets->wal_dir();
     opts.data_roots = ets->data_dirs();
+    opts.block_manager_type = GetParam();
     unique_ptr<FsManager> fs_manager(new FsManager(env_, opts));
     ASSERT_OK(fs_manager->Open());
     scoped_refptr<ConsensusMetadataManager> cmeta_manager(

Reply via email to