// ----------------------------------------------------------------------------
namespace {
-void GetLiveFilesChecksumInfoFromVersionSet(Options options,
- const std::string& db_path,
- FileChecksumList* checksum_list) {
+Status GetLiveFilesChecksumInfoFromVersionSet(Options options,
+ const std::string& db_path,
+ FileChecksumList* checksum_list) {
EnvOptions sopt;
Status s;
std::string dbname(db_path);
if (s.ok()) {
s = versions.GetLiveFilesChecksumInfo(checksum_list);
}
- if (!s.ok()) {
- fprintf(stderr, "Error Status: %s", s.ToString().c_str());
- }
+ return s;
}
} // namespace
// ......
std::unique_ptr<FileChecksumList> checksum_list(NewFileChecksumList());
- GetLiveFilesChecksumInfoFromVersionSet(options_, db_path_,
- checksum_list.get());
- if (checksum_list != nullptr) {
+ Status s = GetLiveFilesChecksumInfoFromVersionSet(options_, db_path_,
+ checksum_list.get());
+ if (s.ok() && checksum_list != nullptr) {
std::vector<uint64_t> file_numbers;
std::vector<std::string> checksums;
std::vector<std::string> checksum_func_names;
- Status s = checksum_list->GetAllFileChecksums(&file_numbers, &checksums,
- &checksum_func_names);
+ s = checksum_list->GetAllFileChecksums(&file_numbers, &checksums,
+ &checksum_func_names);
if (s.ok()) {
for (size_t i = 0; i < file_numbers.size(); i++) {
assert(i < file_numbers.size());
fprintf(stdout, "%" PRId64 ", %s, %s\n", file_numbers[i],
checksum_func_names[i].c_str(), checksum.c_str());
}
+ fprintf(stdout, "Print SST file checksum information finished \n");
}
- fprintf(stdout, "Print SST file checksum information finished \n");
+ }
+
+ if (!s.ok()) {
+ exec_state_ = LDBCommandExecuteResult::Failed(s.ToString());
}
}
ASSERT_OK(db->Put(wopts, buf, v));
}
ASSERT_OK(db->Flush(fopts));
+ ASSERT_OK(db->Close());
+ delete db;
char arg1[] = "./ldb";
char arg2[1024];
snprintf(arg2, sizeof(arg2), "--db=%s", dbname.c_str());
char arg3[] = "file_checksum_dump";
- char* argv[] = {arg1, arg2, arg3};
+ char arg4[] = "--hex";
+ char* argv[] = {arg1, arg2, arg3, arg4};
ASSERT_EQ(0,
- LDBCommandRunner::RunCommand(3, argv, opts, LDBOptions(), nullptr));
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
+
+ ASSERT_OK(DB::Open(opts, dbname, &db));
// Verify each sst file checksum value and checksum name
FileChecksumTestHelper fct_helper(opts, db, dbname);
FileChecksumTestHelper fct_helper_ac(opts, db, dbname);
ASSERT_OK(fct_helper_ac.VerifyEachFileChecksum());
+ ASSERT_OK(db->Close());
+ delete db;
+
ASSERT_EQ(0,
- LDBCommandRunner::RunCommand(3, argv, opts, LDBOptions(), nullptr));
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
+
+ ASSERT_OK(DB::Open(opts, dbname, &db));
// Verify the checksum information in memory is the same as that in Manifest;
std::vector<LiveFileMetaData> live_files;
ASSERT_OK(db->Put(wopts, oss.str(), v));
}
ASSERT_OK(db->Flush(fopts));
+ ASSERT_OK(db->Close());
+ delete db;
char arg1[] = "./ldb";
std::string arg2_str = "--db=" + dbname;
char arg3[] = "file_checksum_dump";
- char* argv[] = {arg1, const_cast<char*>(arg2_str.c_str()), arg3};
+ char arg4[] = "--hex";
+ char* argv[] = {arg1, const_cast<char*>(arg2_str.c_str()), arg3, arg4};
ASSERT_EQ(0,
- LDBCommandRunner::RunCommand(3, argv, opts, LDBOptions(), nullptr));
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
+
+ ASSERT_OK(DB::Open(opts, dbname, &db));
// Verify each sst and blob file checksum value and checksum name
FileChecksumTestHelper fct_helper(opts, db, dbname);
FileChecksumTestHelper fct_helper_ac(opts, db, dbname);
ASSERT_OK(fct_helper_ac.VerifyEachFileChecksum());
- ASSERT_EQ(0,
- LDBCommandRunner::RunCommand(3, argv, opts, LDBOptions(), nullptr));
-
+ ASSERT_OK(db->Close());
delete db;
+
+ ASSERT_EQ(0,
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
}
TEST_F(LdbCmdTest, DumpFileChecksumCRC32) {
ASSERT_OK(db->Put(wopts, buf, v));
}
ASSERT_OK(db->Flush(fopts));
+ ASSERT_OK(db->Close());
+ delete db;
char arg1[] = "./ldb";
char arg2[1024];
snprintf(arg2, sizeof(arg2), "--db=%s", dbname.c_str());
char arg3[] = "file_checksum_dump";
- char* argv[] = {arg1, arg2, arg3};
+ char arg4[] = "--hex";
+ char* argv[] = {arg1, arg2, arg3, arg4};
ASSERT_EQ(0,
- LDBCommandRunner::RunCommand(3, argv, opts, LDBOptions(), nullptr));
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
+
+ ASSERT_OK(DB::Open(opts, dbname, &db));
// Verify each sst file checksum value and checksum name
FileChecksumTestHelper fct_helper(opts, db, dbname);
FileChecksumTestHelper fct_helper_ac(opts, db, dbname);
ASSERT_OK(fct_helper_ac.VerifyEachFileChecksum());
+ ASSERT_OK(db->Close());
+ delete db;
+
ASSERT_EQ(0,
- LDBCommandRunner::RunCommand(3, argv, opts, LDBOptions(), nullptr));
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
+
+ ASSERT_OK(DB::Open(opts, dbname, &db));
// Verify the checksum information in memory is the same as that in Manifest;
std::vector<LiveFileMetaData> live_files;
db->GetLiveFilesMetaData(&live_files);
- delete db;
ASSERT_OK(fct_helper_ac.VerifyChecksumInManifest(live_files));
+
+ ASSERT_OK(db->Close());
+ delete db;
}
TEST_F(LdbCmdTest, BlobDBDumpFileChecksumCRC32) {
ASSERT_OK(db->Put(wopts, oss.str(), v));
}
ASSERT_OK(db->Flush(fopts));
+ ASSERT_OK(db->Close());
+ delete db;
char arg1[] = "./ldb";
std::string arg2_str = "--db=" + dbname;
char arg3[] = "file_checksum_dump";
- char* argv[] = {arg1, const_cast<char*>(arg2_str.c_str()), arg3};
+ char arg4[] = "--hex";
+ char* argv[] = {arg1, const_cast<char*>(arg2_str.c_str()), arg3, arg4};
ASSERT_EQ(0,
- LDBCommandRunner::RunCommand(3, argv, opts, LDBOptions(), nullptr));
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
+
+ ASSERT_OK(DB::Open(opts, dbname, &db));
// Verify each sst and blob file checksum value and checksum name
FileChecksumTestHelper fct_helper(opts, db, dbname);
FileChecksumTestHelper fct_helper_ac(opts, db, dbname);
ASSERT_OK(fct_helper_ac.VerifyEachFileChecksum());
- ASSERT_EQ(0,
- LDBCommandRunner::RunCommand(3, argv, opts, LDBOptions(), nullptr));
+ ASSERT_OK(db->Close());
delete db;
+
+ ASSERT_EQ(0,
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
}
TEST_F(LdbCmdTest, OptionParsing) {