images in table and particular builds added
diff --git a/web_app/__init__.py b/web_app/__init__.py
index 820be22..fb03f3e 100644
--- a/web_app/__init__.py
+++ b/web_app/__init__.py
@@ -3,7 +3,7 @@
from flask_bootstrap import Bootstrap
from config import TEST_PATH
from report import build_vertical_bar, build_lines_chart
-from storage_api import create_storage
+from storage_api import create_storage, Measurement
from logging import getLogger, INFO
import json
@@ -24,6 +24,22 @@
return result
+def collect_builds():
+ builds = []
+ build_set = set()
+ tests = collect_tests()
+
+ for t in tests:
+ test = load_test(t)
+
+ for build in test:
+ if build["type"] not in build_set:
+ build_set.add(build["type"])
+ builds.append(build)
+
+ return builds
+
+
def load_test(test_name):
test_name += '.json'
@@ -41,22 +57,41 @@
@app.route("/", methods=['GET', 'POST'])
def index():
data = []
- for test in collect_tests():
+
+ for build in collect_builds():
d = {}
- d["name"] = test
- d["url"] = url_for("render_test", test_name=test)
+ d["name"] = build['type']
+ d["url"] = url_for("render_test", test_name=build['type'])
data.append(d)
return render_template("index.html", tests=data)
+def create_measurement(build):
+ m = Measurement()
+ m.build = build.pop("build_id")
+ m.build_type = build.pop("type")
+ m.md5 = build.pop("iso_md5")
+ m.results = {k: v for k, v in build.items()}
+
+ return m
+
+
@app.route("/tests/<test_name>", methods=['GET'])
def render_test(test_name):
- tests = load_test(test_name)
+ tests = [] #load_test(test_name)
header_keys = ['build_id', 'iso_md5', 'type']
table = [[]]
- storage = create_storage('file://' + TEST_PATH + '/' + test_name + '.json')
- results = storage.recent_builds()
+ builds_to_compare = ['GA', 'master', test_name]
+ builds = collect_builds()
+ results = {}
+
+ for build in builds:
+ if build['type'] in builds_to_compare:
+ type = build['type']
+ m = create_measurement(build)
+ results[type] = m
+
bars = build_vertical_bar(results)
lines = build_lines_chart(results)
urls = bars + lines
@@ -124,19 +159,21 @@
@app.route("/tests/table/<test_name>/")
def render_table(test_name):
- tests = load_test(test_name)
+ builds = collect_builds()
+ builds = filter(lambda x: x["type"] in ['GA', 'master', test_name], builds)
header_keys = ['build_id', 'iso_md5', 'type']
table = [[]]
meta = {"__meta__": "http://172.16.52.112:8000/api/nodes"}
- data = collect_lab_data(tests, meta)
- if len(tests) > 0:
- sorted_keys = sorted(tests[0].keys())
+ data = collect_lab_data(builds, meta)
+
+ if len(builds) > 0:
+ sorted_keys = sorted(builds[0].keys())
for key in sorted_keys:
if key not in header_keys:
header_keys.append(key)
- for test in tests:
+ for test in builds:
row = []
for header in header_keys: