ccf7676455
Summary: There are a few scripts with python3 compatibility issues that were not detected by automated tool before. Update them now. Test Plan (devserver): python2 tools/ldb_test.py python3 tools/ldb_test.py python2 tools/write_stress_runner.py --runtime_sec=30 python3 tools/write_stress_runner.py --runtime_sec=30 python2 tools/db_crashtest.py --simple --interval=2 --duration=10 blackbox python3 tools/db_crashtest.py --simple --interval=2 --duration=10 blackbox python2 tools/db_crashtest.py --simple --duration=10 --random_kill_odd=1000 --ops_per_thread=1000 whitebox python3 tools/db_crashtest.py --simple --duration=10 --random_kill_odd=1000 --ops_per_thread=1000 whitebox Pull Request resolved: https://github.com/facebook/rocksdb/pull/6525 Reviewed By: cheng-chang Differential Revision: D20627820 Pulled By: riversand963 fbshipit-source-id: 4b25a7bd4d001c7f868be8b640ef876523be6ca3
77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
#!/usr/bin/env python
|
|
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
|
from __future__ import absolute_import, division, print_function, unicode_literals
|
|
|
|
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 = list(range(1, 10)) + list(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)) # noqa: E999 T25377293 Grandfathered in
|
|
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)
|