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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
import sys
import json
from dbaccess import execQuery, database
from misc import (
idToText, textToId, metricIdToLowerIsBetter, benchmarkToComponents,
getSnapshots, getBMTimeSeriesStatsList, printJSONHeader)
class GetTimeSeriesStats:
def __init__(
self, host, platform, branch, sha11, sha12, difftol, durtolmin,
durtolmax, test_case_filter):
self.host = host
self.platform = platform
self.branch = branch
self.sha11 = sha11
self.sha12 = sha12
self.difftol = difftol
self.durtolmin = durtolmin
self.durtolmax = durtolmax
self.test_case_filter = test_case_filter
self.host_id = textToId("host", host)
self.platform_id = textToId("platform", platform)
self.branch_id = textToId("branch", branch)
self.sha11_id = textToId("sha1", sha11)
self.sha12_id = textToId("sha1", sha12)
def execute(self):
self.snapshots = getSnapshots(
self.host_id, self.platform_id, self.branch_id, self.sha11_id,
self.sha12_id)
bmstats_list = getBMTimeSeriesStatsList(
self.host_id, self.platform_id, self.branch_id, self.snapshots,
self.test_case_filter, self.difftol, self.durtolmin, self.durtolmax)
self.per_bm_stats = []
for stats in bmstats_list:
self.per_bm_stats.append({
'ms': stats['ms'],
'lsd': stats['lsd'],
'ni': stats['ni'],
'nz': stats['nz'],
'nc': stats['nc'],
'med_of_rses': stats['med_of_rses'],
'rse_of_meds': stats['rse_of_meds'],
'lc': stats['lc'],
'lc_timestamp': stats['lc_timestamp'],
'lc_distance': stats['lc_distance'],
'lc_gsep_score': stats['lc_gsep_score'],
'lc_lsep_score': stats['lc_lsep_score'],
'lc_dur1_score': stats['lc_dur1_score'],
'lc_dur2_score': stats['lc_dur2_score'],
'mt': stats['metric'],
'lib': "1" if stats['lib'] else "0",
'bm': stats['benchmark']
})
self.writeOutput()
def writeOutputAsJSON(self):
printJSONHeader()
json.dump({
'database': database(),
'host': self.host,
'platform': self.platform,
'branch': self.branch,
'sha11': idToText("sha1", self.snapshots[0][0]),
'sha12': idToText("sha1", self.snapshots[-1][0]),
'difftol': self.difftol,
'durtolmin': self.durtolmin,
'durtolmax': self.durtolmax,
'snapshots': map(
lambda s: (idToText("sha1", s[0]), s[1]), self.snapshots),
'per_bm_stats': self.per_bm_stats
}, sys.stdout)
class GetTimeSeriesStatsAsJSON(GetTimeSeriesStats):
def writeOutput(self):
self.writeOutputAsJSON()
|