Make provision for db_stress to work with a pre-existing dir

Summary: The crash_test depends on db_stress to work with pre-existing dir

Test Plan: make db_stress; Run db_stress with 'destroy_db_initially=0'

Reviewers: vamsi, dhruba

Reviewed By: dhruba

CC: leveldb

Differential Revision: https://reviews.facebook.net/D10041
This commit is contained in:
Mayank Agarwal 2013-04-08 12:35:40 -07:00
parent 26f68d3939
commit 9b3134f5ca

View File

@ -62,6 +62,9 @@ static bool FLAGS_verify_before_write = false;
// Print histogram of operation timings // Print histogram of operation timings
static bool FLAGS_histogram = false; static bool FLAGS_histogram = false;
// Destroys the database dir before start if this is true
static bool FLAGS_destroy_db_initially = true;
static bool FLAGS_verbose = false; static bool FLAGS_verbose = false;
// Number of bytes to buffer in memtable before compacting // Number of bytes to buffer in memtable before compacting
@ -472,14 +475,16 @@ class StressTest {
: nullptr), : nullptr),
db_(nullptr), db_(nullptr),
num_times_reopened_(0) { num_times_reopened_(0) {
std::vector<std::string> files; if (FLAGS_destroy_db_initially) {
FLAGS_env->GetChildren(FLAGS_db, &files); std::vector<std::string> files;
for (unsigned int i = 0; i < files.size(); i++) { FLAGS_env->GetChildren(FLAGS_db, &files);
if (Slice(files[i]).starts_with("heap-")) { for (unsigned int i = 0; i < files.size(); i++) {
FLAGS_env->DeleteFile(std::string(FLAGS_db) + "/" + files[i]); if (Slice(files[i]).starts_with("heap-")) {
FLAGS_env->DeleteFile(std::string(FLAGS_db) + "/" + files[i]);
}
} }
DestroyDB(FLAGS_db, Options());
} }
DestroyDB(FLAGS_db, Options());
} }
~StressTest() { ~StressTest() {
@ -1001,6 +1006,9 @@ int main(int argc, char** argv) {
} else if (sscanf(argv[i], "--histogram=%d%c", &n, &junk) == 1 && } else if (sscanf(argv[i], "--histogram=%d%c", &n, &junk) == 1 &&
(n == 0 || n == 1)) { (n == 0 || n == 1)) {
FLAGS_histogram = n; FLAGS_histogram = n;
} else if (sscanf(argv[i], "--destroy_db_initially=%d%c", &n, &junk) == 1 &&
(n == 0 || n == 1)) {
FLAGS_destroy_db_initially = n;
} else if (sscanf(argv[i], "--verify_before_write=%d%c", &n, &junk) == 1 && } else if (sscanf(argv[i], "--verify_before_write=%d%c", &n, &junk) == 1 &&
(n == 0 || n == 1)) { (n == 0 || n == 1)) {
FLAGS_verify_before_write = n; FLAGS_verify_before_write = n;