aboutsummaryrefslogtreecommitdiff
path: root/postprocessing.py
blob: d82e2bfc56500258a0f75edf0930869067ace31f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/env python
import sqlite3
from numpy import array, mean
from optparse import OptionParser

SQLITE_DB_GLOBAL_PATH = "/root/db_results/"

modes_prepares_statement = "select distinct(id) from workload_specs;"
metric_prepared_statement = """SELECT label as workload, metric, value, units, wsr.spec_id
FROM metrics AS m INNER JOIN (
SELECT ws.OID as spec_oid, ws.id as spec_id, uuid, label
FROM workload_specs AS ws INNER JOIN runs AS r ON ws.run_oid = r.OID
) AS wsr ON wsr.spec_oid = m.spec_oid
WHERE metric = ? AND spec_id = ?;"""

metrics_common = ['execution_time', 'arm,vexpress-energy A7 Jcore', 'arm,vexpress-energy A15 Jcore']
metrics_bbench = ['Performance']

if __name__ == '__main__':

    usage = "usage: %prog [OPTIONS]"
    parser = OptionParser(usage=usage)
    parser.add_option("-n", "--job-name", dest="job_name",
                  help="Job name to be used as db name in agenda file")
    (options, args) = parser.parse_args()

    if not options.job_name:
        parser.error("Job name missing")

    conn = sqlite3.connect(SQLITE_DB_GLOBAL_PATH + options.job_name + ".db")
    modes_cursor = conn.cursor()
    for mode_row in modes_cursor.execute(modes_prepares_statement):
        if 'bbench' in mode_row[0]:
            metrics_common = metrics_common + metrics_bbench
        for metric in metrics_common:
            params = (metric, mode_row[0])
            metric_values = []
            metric_cursor = conn.cursor()
            units = ""
            for metric_row in metric_cursor.execute(metric_prepared_statement, params):
                metric_values.append(float(metric_row[2]))
                units = metric_row[3]
            print "%s_%s Measurement:%s Units:%s Result:pass" % (
                mode_row[0], 
                metric.replace(" ", "_").replace(",", "_"), 
                mean(array(metric_values)), 
                units)
            metric_cursor.close()
    modes_cursor.close()
    conn.close()