blob: 7fbe70b0ae83b7dbc72a6c68e306065bc9fa237e [file] [log] [blame]
koder aka kdanilov66839a92015-04-11 13:22:31 +03001import texttable
2
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +03003from wally.utils import ssize_to_b
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +03004from wally.suits.io.agent import get_test_summary
koder aka kdanilove87ae652015-04-20 02:14:35 +03005from wally.statistic import med_dev, round_deviation, round_3_digit
koder aka kdanilov66839a92015-04-11 13:22:31 +03006
koder aka kdanilov66839a92015-04-11 13:22:31 +03007
koder aka kdanilov652cd802015-04-13 12:21:07 +03008def key_func(k_data):
9 _, data = k_data
10
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030011 return (data['rw'],
12 data['sync_mode'],
13 ssize_to_b(data['blocksize']),
14 data['concurence'])
Yulia Portnova7ddfa732015-02-24 17:32:58 +020015
16
koder aka kdanilov66839a92015-04-11 13:22:31 +030017def format_results_for_console(test_set):
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030018 """
19 create a table with io performance report
20 for console
21 """
koder aka kdanilovbe8f89f2015-04-28 14:51:51 +030022 tab = texttable.Texttable(max_width=120)
koder aka kdanilov652cd802015-04-13 12:21:07 +030023 tab.set_deco(tab.HEADER | tab.VLINES | tab.BORDER)
koder aka kdanilovbe8f89f2015-04-28 14:51:51 +030024 tab.set_cols_align(["l", "r", "r", "r", "r", "r", "r"])
Yulia Portnova7ddfa732015-02-24 17:32:58 +020025
koder aka kdanilov652cd802015-04-13 12:21:07 +030026 prev_k = None
koder aka kdanilovbe8f89f2015-04-28 14:51:51 +030027 vm_count = test_set['__test_meta__']['testnodes_count']
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030028 items = sorted(test_set['res'].items(), key=key_func)
koder aka kdanilovbe8f89f2015-04-28 14:51:51 +030029 header = ["Description", "iops\ncum", "KiBps\ncum",
30 "iops\nper vm", "KiBps\nper vm", "Cnf\n%", "lat\nms"]
koder aka kdanilov652cd802015-04-13 12:21:07 +030031
32 for test_name, data in items:
koder aka kdanilov63ad2062015-04-27 13:11:40 +030033
koder aka kdanilov652cd802015-04-13 12:21:07 +030034 curr_k = key_func((test_name, data))[:3]
35
36 if prev_k is not None:
37 if prev_k != curr_k:
koder aka kdanilovbe8f89f2015-04-28 14:51:51 +030038 tab.add_row(
39 ["--------", "-----", "------",
40 "-----", "------", "---", "-----"])
koder aka kdanilov652cd802015-04-13 12:21:07 +030041
42 prev_k = curr_k
43
koder aka kdanilov4e9f3ed2015-04-14 11:26:12 +030044 descr = get_test_summary(data)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020045
koder aka kdanilove87ae652015-04-20 02:14:35 +030046 iops, _ = round_deviation(med_dev(data['iops']))
47 bw, bwdev = round_deviation(med_dev(data['bw']))
Yulia Portnova7ddfa732015-02-24 17:32:58 +020048
koder aka kdanilov66839a92015-04-11 13:22:31 +030049 # 3 * sigma
koder aka kdanilove87ae652015-04-20 02:14:35 +030050 if 0 == bw:
51 assert 0 == bwdev
52 dev_perc = 0
53 else:
54 dev_perc = int((bwdev * 300) / bw)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020055
koder aka kdanilove87ae652015-04-20 02:14:35 +030056 med_lat, _ = round_deviation(med_dev(data['lat']))
57 med_lat = int(med_lat) // 1000
58
59 iops = round_3_digit(iops)
60 bw = round_3_digit(bw)
koder aka kdanilovbe8f89f2015-04-28 14:51:51 +030061 iops_cum = round_3_digit(iops * vm_count)
62 bw_cum = round_3_digit(bw * vm_count)
koder aka kdanilove87ae652015-04-20 02:14:35 +030063 med_lat = round_3_digit(med_lat)
64
koder aka kdanilovbe8f89f2015-04-28 14:51:51 +030065 params = (descr, int(iops_cum), int(bw_cum),
66 int(iops), int(bw), dev_perc, med_lat)
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030067 tab.add_row(params)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020068
koder aka kdanilov652cd802015-04-13 12:21:07 +030069 tab.header(header)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020070
koder aka kdanilov66839a92015-04-11 13:22:31 +030071 return tab.draw()