Revision 107c5f6a60e94c3cf478ee25e50164fd31b014b0 authored by Tamir Duberstein on 06 April 2017, 20:54:49 UTC, committed by Facebook Github Bot on 06 April 2017, 21:09:13 UTC
Summary:
siying this is a resubmission of #2081 with the 4th commit fixed. From that commit message:

> Note that the previous use of quotes in PLATFORM_{CC,CXX}FLAGS was
incorrect and caused GCC to produce the incorrect define:
>
>  #define ROCKSDB_JEMALLOC -DJEMALLOC_NO_DEMANGLE 1
>
> This was the cause of the Linux build failure on the previous version
of this change.

I've tested this locally, and the Linux build succeeds now.
Closes https://github.com/facebook/rocksdb/pull/2097

Differential Revision: D4839964

Pulled By: siying

fbshipit-source-id: cc51322
1 parent d2dce56
Raw File
write_stress_runner.py
#! /usr/bin/env python
import subprocess
import argparse
import random
import time
import sys


def generate_runtimes(total_runtime):
    # combination of short runtimes and long runtimes, with heavier
    # weight on short runtimes
    possible_runtimes_sec = range(1, 10) + range(1, 20) + [100, 1000]
    runtimes = []
    while total_runtime > 0:
        chosen = random.choice(possible_runtimes_sec)
        chosen = min(chosen, total_runtime)
        runtimes.append(chosen)
        total_runtime -= chosen
    return runtimes


def main(args):
    runtimes = generate_runtimes(int(args.runtime_sec))
    print "Going to execute write stress for " + str(runtimes)
    first_time = True

    for runtime in runtimes:
        kill = random.choice([False, True])

        cmd = './write_stress --runtime_sec=' + \
            ("-1" if kill else str(runtime))

        if len(args.db) > 0:
            cmd = cmd + ' --db=' + args.db

        if first_time:
            first_time = False
        else:
            # use current db
            cmd = cmd + ' --destroy_db=false'
        if random.choice([False, True]):
            cmd = cmd + ' --delete_obsolete_files_with_fullscan=true'
        if random.choice([False, True]):
            cmd = cmd + ' --low_open_files_mode=true'

        print("Running write_stress for %d seconds (%s): %s" %
              (runtime, ("kill-mode" if kill else "clean-shutdown-mode"),
              cmd))

        child = subprocess.Popen([cmd], shell=True)
        killtime = time.time() + runtime
        while not kill or time.time() < killtime:
            time.sleep(1)
            if child.poll() is not None:
                if child.returncode == 0:
                    break
                else:
                    print("ERROR: write_stress died with exitcode=%d\n"
                          % child.returncode)
                    sys.exit(1)
        if kill:
            child.kill()
        # breathe
        time.sleep(3)

if __name__ == '__main__':
    random.seed(time.time())
    parser = argparse.ArgumentParser(description="This script runs and kills \
        write_stress multiple times")
    parser.add_argument("--runtime_sec", default='1000')
    parser.add_argument("--db", default='')
    args = parser.parse_args()
    main(args)
back to top