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(
