implements MOL-180: make run_test.py compatible with FUEL master
diff --git a/io_scenario/io.py b/io_scenario/io.py
index b9f3b6f..7d5516d 100644
--- a/io_scenario/io.py
+++ b/io_scenario/io.py
@@ -59,7 +59,8 @@
'initial readers': 'read',
're-readers': 'reread',
'random readers': 'random read',
- 'random writers': 'random write'}
+ 'random writers': 'random write',
+ 'readers': 'read'}
string1 = " " + \
" random random " + \
diff --git a/requirements.txt b/requirements.txt
index 7f8254f..5877500 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -11,5 +11,7 @@
python-keystoneclient==1.1.0
python-novaclient
python-glanceclient
+python-cinderclient
paramiko
+futures
diff --git a/run_test.py b/run_test.py
index ccab7aa..ad0c9d2 100644
--- a/run_test.py
+++ b/run_test.py
@@ -12,7 +12,11 @@
from itest import IOPerfTest
import ssh_runner
-import rally_runner
+
+try:
+ import rally_runner
+except ImportError:
+ rally_runner = None
from starts_vms import nova_connect, create_vms_mt, clear_all
@@ -75,9 +79,12 @@
help="keep temporary files",
dest="keep_temp_files", action='store_true')
+ choices = ["ssh"]
+ if rally_runner is not None:
+ choices.append("rally")
+
parser.add_argument("--runner", required=True,
- choices=["ssh", "rally"],
- help="runner type")
+ choices=choices, help="runner type")
parser.add_argument("--runner-extra-opts", default="",
dest="runner_opts", help="runner extra options")
@@ -97,9 +104,22 @@
bw_dev = sum(it) ** 0.5
meta = res[0]['__meta__']
- key = "{0} {1} {2}k".format(meta['action'],
- 's' if meta['sync'] else 'a',
- meta['blocksize'])
+
+ sync = meta['sync']
+ direct = meta['direct_io']
+
+ if sync and direct:
+ ss = "d+"
+ elif sync:
+ ss = "s"
+ elif direct:
+ ss = "d"
+ else:
+ ss = "a"
+
+ key = "{0} {1} {2} {3}k".format(meta['action'], ss,
+ meta['concurence'],
+ meta['blocksize'])
data = json.dumps({key: (int(bw_mean), int(bw_dev))})
@@ -155,8 +175,6 @@
def nolog(x):
pass
- setlogger(nolog)
-
io_opts = get_io_opts(opts.io_opts_file, opts.io_opts)
if opts.runner == "rally":
@@ -209,10 +227,10 @@
# nova, amount, keypair_name, img_name,
# flavor_name, vol_sz=None, network_zone_name=None,
- # flt_ip_pool=None, name_templ='ceph-test-{}',
+ # flt_ip_pool=None, name_templ='ceph-test-{0}',
# scheduler_hints=None
- logger.debug("Will start {} vms".format(count))
+ logger.debug("Will start {0} vms".format(count))
try:
ips = [i[0] for i in create_vms_mt(nova, count, **create_vms_opts)]
diff --git a/scripts/data.py b/scripts/data.py
index 0635789..b0c8f27 100644
--- a/scripts/data.py
+++ b/scripts/data.py
@@ -15,15 +15,15 @@
if not block.startswith("[{u'__meta__':"):
continue
- print
- print
- print block
- print
- print
-
for val in eval(block):
meta = val['__meta__']
- meta['sync'] = 's' if meta['sync'] else 'a'
+
+ if meta['sync']:
+ meta['sync'] = 's'
+ elif meta['direct_io']:
+ meta['sync'] = 'd'
+ else:
+ meta['sync'] = 'a'
key = "{action} {sync} {blocksize}k {concurence}".format(**meta)
results.setdefault(key, []).append(val['bw_mean'])
@@ -52,7 +52,7 @@
def show_data(*pathes):
- begin = "| {:>10} {:>5} {:>5} {:>3}"
+ begin = "| {:>10} {:>6} {:>5} {:>3}"
first_file_templ = " | {:>6} ~ {:>5} {:>2}% {:>5}"
other_file_templ = " | {:>6} ~ {:>5} {:>2}% {:>5} ---- {:>6}%"
@@ -82,9 +82,10 @@
common_keys &= set(result.keys())
for k in sorted(common_keys, key=ksort):
- tp = k.rsplit(" ", 1)[0]
+ tp = k.rsplit(" ", 2)[0]
op, s, sz, conc = k.split(" ")
- s = 'sync' if s == 's' else 'async'
+
+ s = {'a': 'async', "s": "sync", "d": "direct"}[s]
if tp != prev_tp and prev_tp is not None:
print sep
diff --git a/scripts/data_extractor.py b/scripts/data_extractor.py
index d3ba1ea..1f30b77 100644
--- a/scripts/data_extractor.py
+++ b/scripts/data_extractor.py
@@ -16,12 +16,17 @@
md5 text);
CREATE TABLE params_combination (id integer primary key, {params});
-CREATE TABLE param (id integer primary key, name text, type text);
+
+CREATE TABLE param (id integer primary key, name text, type text, descr text);
+
+CREATE TABLE lab (id integer primary key, name text, descr text);
CREATE TABLE result (build_id integer,
- params_combination integer,
+ time datetime,
+ lab_id integer,
+ params_combination_id integer,
bandwith float,
- deviation float);
+ meta text);
"""
diff --git a/scripts/run.sh b/scripts/run.sh
index 368410c..91fadc7 100644
--- a/scripts/run.sh
+++ b/scripts/run.sh
@@ -37,7 +37,7 @@
for SYNC_TYPE in $SYNC_TYPES ; do
# filter out too slow options
- if [ "$BLOCKSIZE" = "1k" -o "$BLOCK_SIZE" = "4k" ] ; then
+ if [ "$BSIZE" = "1k" -o "$BSIZE" = "4k" ] ; then
if [ "$SYNC_TYPE" = "a" ] ; then
continue
fi
diff --git a/starts_vms.py b/starts_vms.py
index 368aadf..de6c005 100644
--- a/starts_vms.py
+++ b/starts_vms.py
@@ -83,7 +83,7 @@
def create_vms_mt(nova, amount, keypair_name, img_name,
flavor_name, vol_sz=None, network_zone_name=None,
- flt_ip_pool=None, name_templ='ceph-test-{}',
+ flt_ip_pool=None, name_templ='ceph-test-{0}',
scheduler_hints=None):
with ThreadPoolExecutor(max_workers=16) as executor:
@@ -109,9 +109,9 @@
else:
ips = [None] * amount
- logger.debug("Getting for flavor object")
+ logger.debug("Getting flavor object")
fl = fl_future.result()
- logger.debug("Getting for image object")
+ logger.debug("Getting image object")
img = img_future.result()
if network_future is not None:
@@ -177,7 +177,7 @@
return (None, srv)
-def clear_all(nova, name_templ="ceph-test-{}"):
+def clear_all(nova, name_templ="ceph-test-{0}"):
deleted_srvs = set()
for srv in nova.servers.list():
if re.match(name_templ.format("\\d+"), srv.name):