[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 <acelyc1112009@gmail.com>
diff --git a/src/kudu/consensus/log-test-base.h b/src/kudu/consensus/log-test-base.h
index 6692102..6aa1f28 100644
--- a/src/kudu/consensus/log-test-base.h
+++ b/src/kudu/consensus/log-test-base.h
@@ -80,6 +80,7 @@
 
     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 c1005b1..4ea6e0b 100644
--- a/src/kudu/consensus/log-test.cc
+++ b/src/kudu/consensus/log-test.cc
@@ -467,6 +467,7 @@
   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 @@
 
   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 35b93d8..ea49900 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 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 @@
     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(