Ability to switch on checksum verification from benchmark.

Summary:
Task ID: #

Blame Rev:

Test Plan: Revert Plan:

Differential Revision: https://reviews.facebook.net/D3309
This commit is contained in:
Dhruba Borthakur 2012-05-19 00:05:48 -07:00
parent a2a0e358cb
commit 3b86a51cb1
2 changed files with 16 additions and 6 deletions

View File

@ -107,6 +107,9 @@ static const char* FLAGS_db = "/tmp/dbbench";
// if FLAGS_cache_size is non-negative. // if FLAGS_cache_size is non-negative.
static int FLAGS_cache_numshardbits = -1; static int FLAGS_cache_numshardbits = -1;
// Verify checksum for every block read from storage
static bool FLAGS_verify_checksum = false;
namespace leveldb { namespace leveldb {
namespace { namespace {
@ -751,7 +754,7 @@ class Benchmark {
} }
void ReadSequential(ThreadState* thread) { void ReadSequential(ThreadState* thread) {
Iterator* iter = db_->NewIterator(ReadOptions()); Iterator* iter = db_->NewIterator(ReadOptions(FLAGS_verify_checksum, true));
int i = 0; int i = 0;
int64_t bytes = 0; int64_t bytes = 0;
for (iter->SeekToFirst(); i < reads_ && iter->Valid(); iter->Next()) { for (iter->SeekToFirst(); i < reads_ && iter->Valid(); iter->Next()) {
@ -764,7 +767,7 @@ class Benchmark {
} }
void ReadReverse(ThreadState* thread) { void ReadReverse(ThreadState* thread) {
Iterator* iter = db_->NewIterator(ReadOptions()); Iterator* iter = db_->NewIterator(ReadOptions(FLAGS_verify_checksum, true));
int i = 0; int i = 0;
int64_t bytes = 0; int64_t bytes = 0;
for (iter->SeekToLast(); i < reads_ && iter->Valid(); iter->Prev()) { for (iter->SeekToLast(); i < reads_ && iter->Valid(); iter->Prev()) {
@ -777,7 +780,7 @@ class Benchmark {
} }
void ReadRandom(ThreadState* thread) { void ReadRandom(ThreadState* thread) {
ReadOptions options; ReadOptions options(FLAGS_verify_checksum, true);
std::string value; std::string value;
int found = 0; int found = 0;
for (int i = 0; i < reads_; i++) { for (int i = 0; i < reads_; i++) {
@ -795,7 +798,7 @@ class Benchmark {
} }
void ReadMissing(ThreadState* thread) { void ReadMissing(ThreadState* thread) {
ReadOptions options; ReadOptions options(FLAGS_verify_checksum, true);
std::string value; std::string value;
for (int i = 0; i < reads_; i++) { for (int i = 0; i < reads_; i++) {
char key[100]; char key[100];
@ -807,7 +810,7 @@ class Benchmark {
} }
void ReadHot(ThreadState* thread) { void ReadHot(ThreadState* thread) {
ReadOptions options; ReadOptions options(FLAGS_verify_checksum, true);
std::string value; std::string value;
const int range = (FLAGS_num + 99) / 100; const int range = (FLAGS_num + 99) / 100;
for (int i = 0; i < reads_; i++) { for (int i = 0; i < reads_; i++) {
@ -820,7 +823,7 @@ class Benchmark {
} }
void SeekRandom(ThreadState* thread) { void SeekRandom(ThreadState* thread) {
ReadOptions options; ReadOptions options(FLAGS_verify_checksum, true);
std::string value; std::string value;
int found = 0; int found = 0;
for (int i = 0; i < reads_; i++) { for (int i = 0; i < reads_; i++) {
@ -971,6 +974,9 @@ int main(int argc, char** argv) {
FLAGS_open_files = n; FLAGS_open_files = n;
} else if (strncmp(argv[i], "--db=", 5) == 0) { } else if (strncmp(argv[i], "--db=", 5) == 0) {
FLAGS_db = argv[i] + 5; FLAGS_db = argv[i] + 5;
} else if (sscanf(argv[i], "--verify_checksum=%d%c", &n, &junk) == 1 &&
(n == 0 || n == 1)) {
FLAGS_verify_checksum = n;
} else { } else {
fprintf(stderr, "Invalid flag '%s'\n", argv[i]); fprintf(stderr, "Invalid flag '%s'\n", argv[i]);
exit(1); exit(1);

View File

@ -163,6 +163,10 @@ struct ReadOptions {
fill_cache(true), fill_cache(true),
snapshot(NULL) { snapshot(NULL) {
} }
ReadOptions(bool cksum, bool cache) :
verify_checksums(cksum), fill_cache(cache),
snapshot(NULL) {
}
}; };
// Options that control write operations // Options that control write operations