fix storage code style, fixes in rally run code
diff --git a/fix_rally.py b/fix_rally.py
index e3b7bcf..1f02e8d 100644
--- a/fix_rally.py
+++ b/fix_rally.py
@@ -47,6 +47,9 @@
return closure
+# should actually use mock module for this,
+# but don't wanna to add new dependency
+
@contextlib.contextmanager
def patch_VMScenario_run_command_over_ssh(paths,
on_result_cb,
@@ -74,7 +77,7 @@
put_dir_recursively(sftp, src, dst)
else:
templ = "Can't copy {0!r} - " + \
- "it neither file or directory"
+ "it neither a file not a directory"
msg = templ.format(src)
log(msg)
raise exceptions.ScriptError(msg)
@@ -121,8 +124,8 @@
except:
pass
else:
+ on_result_cb(result)
if '__meta__' in result:
- on_result_cb(result)
result.pop('__meta__')
out = json.dumps(result)
except Exception as err:
@@ -157,8 +160,9 @@
if py_dst_cont == args_repl_rr:
templ = "Can't find replace marker in file {0}"
- log(templ.format(testtool_py_inp_path))
- exit(1)
+ msg = templ.format(testtool_py_inp_path)
+ log(msg)
+ raise ValueError(msg)
yaml_src_cont = open(os.path.join(files_dir, "io.yaml")).read()
task_params = yaml.load(yaml_src_cont)
@@ -172,7 +176,9 @@
return yaml_file, py_file
-def run_test(tool, testtool_py_argv, dst_testtool_path, files_dir):
+def run_test(tool, testtool_py_argv, dst_testtool_path, files_dir,
+ rally_extra_opts, max_preparation_time=300):
+
path = 'iozone' if 'iozone' == tool else 'fio'
testtool_local = os.path.join(files_dir, path)
@@ -185,8 +191,6 @@
vm_sec = 'VMTasks.boot_runcommand_delete'
concurrency = config[vm_sec][0]['runner']['concurrency']
- max_preparation_time = 300
-
try:
copy_files = {testtool_local: dst_testtool_path}
@@ -199,11 +203,13 @@
max_release_time = time.time() + max_preparation_time
with do_patch(copy_files, results_cb, barrier, max_release_time):
- log("Start rally with 'task start {0}'".format(yaml_file))
- rally_result = run_rally(['task', 'start', yaml_file])
+ opts = ['task', 'start', yaml_file] + list(rally_extra_opts)
+ log("Start rally with opts '{0}'".format(" ".join(opts)))
+ run_rally(opts)
- # while not result_queue.empty():
- # log("meta = {0!r}\n".format(result_queue.get()))
+ rally_result = []
+ while not result_queue.empty():
+ rally_result.append(result_queue.get())
return rally_result
@@ -217,12 +223,17 @@
description="Run rally disk io performance test")
parser.add_argument("tool_type", help="test tool type",
choices=['iozone', 'fio'])
- parser.add_argument("test_directory", help="directory with test")
parser.add_argument("-l", dest='extra_logs',
action='store_true', default=False,
help="print some extra log info")
parser.add_argument("-o", "--io-opts", dest='io_opts',
default=None, help="cmd line options for io.py")
+ parser.add_argument("--test-directory", help="directory with test",
+ dest="test_directory", required=True)
+ parser.add_argument("rally_extra_opts", nargs="*",
+ default=[], help="rally extra options")
+ parser.add_argument("--max-preparation-time", default=300,
+ type=int, dest="max_preparation_time")
return parser.parse_args(argv)
@@ -249,10 +260,13 @@
else:
testtool_py_argv = opts.io_opts.split(" ")
- run_test(opts.tool_type,
- testtool_py_argv,
- dst_testtool_path,
- opts.test_directory)
+ res = run_test(opts.tool_type,
+ testtool_py_argv,
+ dst_testtool_path,
+ files_dir=opts.test_directory,
+ rally_extra_opts=opts.rally_extra_opts,
+ max_preparation_time=opts.max_preparation_time)
+ res
return 0
# ubuntu cloud image
diff --git a/io-scenario/io.yaml b/io-scenario/io.yaml
index 6f71007..d9c7ad4 100644
--- a/io-scenario/io.yaml
+++ b/io-scenario/io.yaml
@@ -13,8 +13,8 @@
username: "ubuntu"
runner:
type: "constant"
- times: 4
- concurrency: 4
+ times: 3
+ concurrency: 3
context:
users:
tenants: 3
diff --git a/make_report.py b/make_report.py
index eb99ae8..e7bc946 100644
--- a/make_report.py
+++ b/make_report.py
@@ -1,10 +1,15 @@
-import gspread
-import argparse
+import sys
import json
+import argparse
+
+
+import gspread
+
from config import DEFAULT_FILE_PATH, \
- WORK_SHEET, DOCUMENT_ID, ROW_COUNT, OUTPUT_FILE
-from storage_api import DiskStorage, GoogleDocsStorage, get_work_sheet, append_row
+ WORK_SHEET, DOCUMENT_ID, OUTPUT_FILE
+from storage_api import DiskStorage, GoogleDocsStorage, \
+ get_work_sheet, append_row
def load_data(file_name):
@@ -13,7 +18,8 @@
return json.loads(data)
-#getting worksheet from sheet or create it with specified column names.
+# getting worksheet from sheet or create it with specified column names.
+
def make_report(email, password, data):
gc = gspread.login(email, password)
@@ -23,7 +29,20 @@
append_row(work_sheet, data)
-def main(file_name, email, password, mode):
+def parse_args(argv):
+ parser = argparse.ArgumentParser()
+ parser.add_argument('-n', '--name', help='data file path',
+ default=DEFAULT_FILE_PATH)
+ parser.add_argument('-e', '--email', help='user email',
+ default="aaa@gmail.com")
+ parser.add_argument('-p', '--password', help='user password',
+ default="1234")
+ parser.add_argument('-m', '--mode', help='mode type local or global',
+ default='local')
+ return parser.parse_args(argv)
+
+
+def process_results(file_name, email, password, mode):
data = load_data(file_name)
if mode == 'local':
@@ -34,16 +53,15 @@
storage.store(data)
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('-n', '--name', help='data file path',
- default=DEFAULT_FILE_PATH)
- parser.add_argument('-e', '--email', help='user email',
- default="aaa@gmail.com")
- parser.add_argument('-p', '--password', help='user password',
- default="1234")
- parser.add_argument('-m', '--mode', help='mode type local or global',
- default='local')
- results = parser.parse_args()
- main(results.name, results.email, results.password, results.mode)
+def main(argv):
+ opts = parse_args(argv)
+ process_results(opts.name,
+ opts.email,
+ opts.password,
+ opts.mode)
+ return 0
+
+
+if __name__ == '__main__':
+ exit(main(sys.argv[1:]))