Add tests in ASSERT_STATUS_CHECKED (#7793)

Summary:
add io_tracer_parser_test and prefetch_test under
ASSERT_STATUS_CHECKED

Pull Request resolved: https://github.com/facebook/rocksdb/pull/7793

Test Plan: ASSERT_STATUS_CHECKED=1 make check -j64

Reviewed By: jay-zhuang

Differential Revision: D25673464

Pulled By: akankshamahajan15

fbshipit-source-id: 50e0b6f17160ddda206a521a7b47ee33e699a2d4
This commit is contained in:
Akanksha Mahajan 2020-12-22 10:29:58 -08:00 committed by Facebook GitHub Bot
parent 4d897e51df
commit fbac1b3f80
5 changed files with 18 additions and 15 deletions

View File

@ -678,6 +678,8 @@ ifdef ASSERT_STATUS_CHECKED
compaction_job_test \ compaction_job_test \
compaction_job_stats_test \ compaction_job_stats_test \
io_tracer_test \ io_tracer_test \
io_tracer_parser_test \
prefetch_test \
merge_helper_test \ merge_helper_test \
memtable_list_test \ memtable_list_test \
flush_job_test \ flush_job_test \

View File

@ -109,21 +109,21 @@ TEST_P(PrefetchTest, Basic) {
// create first key range // create first key range
WriteBatch batch; WriteBatch batch;
for (int i = 0; i < kNumKeys; i++) { for (int i = 0; i < kNumKeys; i++) {
batch.Put(BuildKey(i), "value for range 1 key"); ASSERT_OK(batch.Put(BuildKey(i), "value for range 1 key"));
} }
ASSERT_OK(db_->Write(WriteOptions(), &batch)); ASSERT_OK(db_->Write(WriteOptions(), &batch));
// create second key range // create second key range
batch.Clear(); batch.Clear();
for (int i = 0; i < kNumKeys; i++) { for (int i = 0; i < kNumKeys; i++) {
batch.Put(BuildKey(i, "key2"), "value for range 2 key"); ASSERT_OK(batch.Put(BuildKey(i, "key2"), "value for range 2 key"));
} }
ASSERT_OK(db_->Write(WriteOptions(), &batch)); ASSERT_OK(db_->Write(WriteOptions(), &batch));
// delete second key range // delete second key range
batch.Clear(); batch.Clear();
for (int i = 0; i < kNumKeys; i++) { for (int i = 0; i < kNumKeys; i++) {
batch.Delete(BuildKey(i, "key2")); ASSERT_OK(batch.Delete(BuildKey(i, "key2")));
} }
ASSERT_OK(db_->Write(WriteOptions(), &batch)); ASSERT_OK(db_->Write(WriteOptions(), &batch));
@ -134,7 +134,7 @@ TEST_P(PrefetchTest, Basic) {
Slice greatest(end_key.data(), end_key.size()); Slice greatest(end_key.data(), end_key.size());
// commenting out the line below causes the example to work correctly // commenting out the line below causes the example to work correctly
db_->CompactRange(CompactRangeOptions(), &least, &greatest); ASSERT_OK(db_->CompactRange(CompactRangeOptions(), &least, &greatest));
if (support_prefetch && !use_direct_io) { if (support_prefetch && !use_direct_io) {
// If underline file system supports prefetch, and directIO is not enabled // If underline file system supports prefetch, and directIO is not enabled

View File

@ -215,14 +215,15 @@ void IOTracer::EndIOTrace() {
tracing_enabled = false; tracing_enabled = false;
} }
Status IOTracer::WriteIOOp(const IOTraceRecord& record) { // TODO: Return status and handle that in file_system_tracer.h
void IOTracer::WriteIOOp(const IOTraceRecord& record) {
if (!writer_.load()) { if (!writer_.load()) {
return Status::OK(); return;
} }
InstrumentedMutexLock lock_guard(&trace_writer_mutex_); InstrumentedMutexLock lock_guard(&trace_writer_mutex_);
if (!writer_.load()) { if (!writer_.load()) {
return Status::OK(); return;
} }
return writer_.load()->WriteIOOp(record); writer_.load()->WriteIOOp(record).PermitUncheckedError();
} }
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

View File

@ -158,7 +158,7 @@ class IOTracer {
TSAN_SUPPRESSION bool is_tracing_enabled() const { return tracing_enabled; } TSAN_SUPPRESSION bool is_tracing_enabled() const { return tracing_enabled; }
Status WriteIOOp(const IOTraceRecord& record); void WriteIOOp(const IOTraceRecord& record);
private: private:
TraceOptions trace_options_; TraceOptions trace_options_;

View File

@ -58,7 +58,7 @@ class IOTracerTest : public testing::Test {
record.file_name = kDummyFile + std::to_string(i); record.file_name = kDummyFile + std::to_string(i);
record.len = i; record.len = i;
record.offset = i + 20; record.offset = i + 20;
ASSERT_OK(writer->WriteIOOp(record)); EXPECT_OK(writer->WriteIOOp(record));
} }
} }
@ -91,7 +91,7 @@ TEST_F(IOTracerTest, AtomicWrite) {
&trace_writer)); &trace_writer));
IOTracer writer; IOTracer writer;
ASSERT_OK(writer.StartIOTrace(env_, trace_opt, std::move(trace_writer))); ASSERT_OK(writer.StartIOTrace(env_, trace_opt, std::move(trace_writer)));
ASSERT_OK(writer.WriteIOOp(record)); writer.WriteIOOp(record);
ASSERT_OK(env_->FileExists(trace_file_path_)); ASSERT_OK(env_->FileExists(trace_file_path_));
} }
{ {
@ -124,7 +124,7 @@ TEST_F(IOTracerTest, AtomicWriteBeforeStartTrace) {
IOTracer writer; IOTracer writer;
// The record should not be written to the trace_file since StartIOTrace is // The record should not be written to the trace_file since StartIOTrace is
// not called. // not called.
ASSERT_OK(writer.WriteIOOp(record)); writer.WriteIOOp(record);
ASSERT_OK(env_->FileExists(trace_file_path_)); ASSERT_OK(env_->FileExists(trace_file_path_));
} }
{ {
@ -149,11 +149,11 @@ TEST_F(IOTracerTest, AtomicNoWriteAfterEndTrace) {
&trace_writer)); &trace_writer));
IOTracer writer; IOTracer writer;
ASSERT_OK(writer.StartIOTrace(env_, trace_opt, std::move(trace_writer))); ASSERT_OK(writer.StartIOTrace(env_, trace_opt, std::move(trace_writer)));
ASSERT_OK(writer.WriteIOOp(record)); writer.WriteIOOp(record);
writer.EndIOTrace(); writer.EndIOTrace();
// Write the record again. This time the record should not be written since // Write the record again. This time the record should not be written since
// EndIOTrace is called. // EndIOTrace is called.
ASSERT_OK(writer.WriteIOOp(record)); writer.WriteIOOp(record);
ASSERT_OK(env_->FileExists(trace_file_path_)); ASSERT_OK(env_->FileExists(trace_file_path_));
} }
{ {