blob: 63c9408d53e0b78c5cc5ca1782337cb46fb11a8b [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 kdanilov66839a92015-04-11 13:22:31 +030022 tab = texttable.Texttable()
koder aka kdanilov652cd802015-04-13 12:21:07 +030023 tab.set_deco(tab.HEADER | tab.VLINES | tab.BORDER)
koder aka kdanilov66839a92015-04-11 13:22:31 +030024 tab.set_cols_align(["l", "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 kdanilov63ad2062015-04-27 13:11:40 +030027
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030028 items = sorted(test_set['res'].items(), key=key_func)
koder aka kdanilov652cd802015-04-13 12:21:07 +030029
30 for test_name, data in items:
koder aka kdanilov63ad2062015-04-27 13:11:40 +030031
koder aka kdanilov652cd802015-04-13 12:21:07 +030032 curr_k = key_func((test_name, data))[:3]
33
34 if prev_k is not None:
35 if prev_k != curr_k:
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030036 tab.add_row(["---"] * 5)
koder aka kdanilov652cd802015-04-13 12:21:07 +030037
38 prev_k = curr_k
39
koder aka kdanilov4e9f3ed2015-04-14 11:26:12 +030040 descr = get_test_summary(data)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020041
koder aka kdanilove87ae652015-04-20 02:14:35 +030042 iops, _ = round_deviation(med_dev(data['iops']))
43 bw, bwdev = round_deviation(med_dev(data['bw']))
Yulia Portnova7ddfa732015-02-24 17:32:58 +020044
koder aka kdanilov66839a92015-04-11 13:22:31 +030045 # 3 * sigma
koder aka kdanilove87ae652015-04-20 02:14:35 +030046 if 0 == bw:
47 assert 0 == bwdev
48 dev_perc = 0
49 else:
50 dev_perc = int((bwdev * 300) / bw)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020051
koder aka kdanilove87ae652015-04-20 02:14:35 +030052 med_lat, _ = round_deviation(med_dev(data['lat']))
53 med_lat = int(med_lat) // 1000
54
55 iops = round_3_digit(iops)
56 bw = round_3_digit(bw)
57 med_lat = round_3_digit(med_lat)
58
59 params = (descr, int(iops), int(bw), dev_perc, med_lat)
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030060 tab.add_row(params)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020061
koder aka kdanilovcff7b2e2015-04-18 20:48:15 +030062 header = ["Description", "IOPS", "BW KiBps", "Dev * 3 %", "clat ms"]
koder aka kdanilov652cd802015-04-13 12:21:07 +030063 tab.header(header)
Yulia Portnova7ddfa732015-02-24 17:32:58 +020064
koder aka kdanilov66839a92015-04-11 13:22:31 +030065 return tab.draw()