[LNT] r256233 - Render regressions into normal LNT graph
Chris Matthews via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 21 23:08:52 PST 2015
Author: cmatthews
Date: Tue Dec 22 01:08:52 2015
New Revision: 256233
URL: http://llvm.org/viewvc/llvm-project?rev=256233&view=rev
Log:
Render regressions into normal LNT graph
This adds the functionality of graphing regression into the standard
LNT graph. To make this nice it shares a lot of code from the new
LNT graphing javascript. Regressions are fetched in the background,
and as they arrive the graph is redrawn.
Modified:
lnt/trunk/lnt/server/ui/static/lnt_graph.js
lnt/trunk/lnt/server/ui/templates/v4_graph.html
lnt/trunk/lnt/server/ui/templates/v4_regression_detail.html
lnt/trunk/lnt/server/ui/views.py
Modified: lnt/trunk/lnt/server/ui/static/lnt_graph.js
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/static/lnt_graph.js?rev=256233&r1=256232&r2=256233&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/static/lnt_graph.js (original)
+++ lnt/trunk/lnt/server/ui/static/lnt_graph.js Tue Dec 22 01:08:52 2015
@@ -234,7 +234,7 @@ function get_regression_id() {
}
-function new_graph_regression_callback(data, index) {
+function new_graph_regression_callback(data, index, update_func) {
"use strict";
$.each(data, function (i, d) {
@@ -253,7 +253,7 @@ function new_graph_regression_callback(d
'state': STATE_NAMES[d.state]};
regression_cache[index].push([parseInt(d.end_point[0], 10), d.end_point[1], metadata]);
});
- update_graph();
+ update_func();
}
@@ -362,7 +362,25 @@ function init_graph () {
}
-
+/* On the normal graph page, data is loaded during page load.
+This function takes the plots from page load and adds the regressions
+that are asynchrounusly fetched.
+*/
+function update_graphplots(old_plot) {
+ "use strict";
+ // Regressions.
+ var regressions = null;
+ var i = 0;
+ var new_plot = $.extend([], old_plot);
+ for (i = 0; i < regression_cache.length; i++) {
+ if (regression_cache[i]) {
+ regressions = regression_cache[i];
+ new_plot.push(make_graph_point_entry(regressions, "#000000", true));
+ }
+ }
+ return new_plot;
+}
+
function init(data, start_highlight, end_highlight) {
"use strict";
@@ -398,5 +416,6 @@ function init(data, start_highlight, end
graph.bind("plotclick", function (e, p, i) {
update_tooltip(e, p, i, show_tooltip, graph_plots);
});
+
bind_zoom_bar(main_plot);
}
Modified: lnt/trunk/lnt/server/ui/templates/v4_graph.html
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/templates/v4_graph.html?rev=256233&r1=256232&r2=256233&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/templates/v4_graph.html (original)
+++ lnt/trunk/lnt/server/ui/templates/v4_graph.html Tue Dec 22 01:08:52 2015
@@ -10,6 +10,9 @@
src="{{ url_for('.static',
filename='flot/jquery.flot.min.js') }}"> </script>
<script language="javascript" type="text/javascript"
+ src="{{ url_for('.static',
+ filename='flot/jquery.flot.symbol.min.js') }}"> </script>
+ <script language="javascript" type="text/javascript"
src="{{ url_for('.static',
filename='flot/jquery.flot.errorbars.min.js') }}"> </script>
<script language="javascript" type="text/javascript"
@@ -32,20 +35,20 @@
{% block title %}Graph{% endblock %}
{# Add JS to initialize the graph. #}
-{% block onload %}init(){% endblock %}
+{% block onload %}init_page(){% endblock %}
{% block javascript %}
var g = {};
var test_suite_name = "{{ request.view_args.testsuite_name }}";
var db_name = "{{ request.view_args.db_name }}";
+var graph_plots = {{graph_plots|tojson|safe}};
+var baseline_plots = {{baseline_plots|tojson|safe}};
-function init() {
+function init_graph() {
// Set up the primary graph.
- var graph = $("#graph");
- var graph_plots = {{graph_plots|tojson|safe}};
- var baseline_plots = {{baseline_plots|tojson|safe}};
- var graph_options = {
+ var graph = $("#graph");
+ var graph_options = {
series : {
lines : {
lineWidth : 1 },
@@ -62,16 +65,18 @@ function init() {
pan : { interactive : true,
frameRate: 60 },
grid : {
- hoverable : true }
+ hoverable : true,
+ clickable: true }
};
// Add baseline lines
graph_options['grid']['markings'] = baseline_plots;
- var main_plot = $.plot(graph, graph_plots, graph_options);
+ var tmp_plots = update_graphplots(graph_plots);
+ var main_plot = $.plot(graph, tmp_plots, graph_options);
// Add tooltips.
- graph.bind("plothover", function(e,p,i) {
- update_tooltip(e, p, i, show_tooltip, graph_plots);
+ graph.bind("plotclick", function (e, p, i) {
+ update_tooltip(e, p, i, show_tooltip, tmp_plots);
});
// Set up the overview graph.
@@ -111,6 +116,22 @@ function init() {
}
+function init_page() {
+ // First start the requests for regrssion data.
+ var urls = $(".data-row").each(function (index, val) {
+ $.getJSON(get_api_url("regression",
+ db_name,
+ test_suite_name,
+ $(val).data('url')),
+ function (data) {
+ new_graph_regression_callback(data, index, init_graph);
+ });
+ return $(val).data('url');
+ });
+
+ init_graph();
+}
+
{% endblock %}
{% block sidebar %}
@@ -246,8 +267,8 @@ function init() {
<th>Test</th>
<th>Type</th>
</tr>
- {% for machine,test_name,field_name,col in legend %}
- <tr>
+ {% for machine,test_name,field_name,col, url in legend %}
+ <tr class="data-row" data-url="{{url}}">
<td style="background-color: #{{ '%02x%02x%02x' % (255*col[0], 255*col[1], 255*col[2]) }}"> </td>
<td>{{ utils.render_machine(machine) }}</td>
<td>{{ test_name }}</td>
Modified: lnt/trunk/lnt/server/ui/templates/v4_regression_detail.html
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/templates/v4_regression_detail.html?rev=256233&r1=256232&r2=256233&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/templates/v4_regression_detail.html (original)
+++ lnt/trunk/lnt/server/ui/templates/v4_regression_detail.html Tue Dec 22 01:08:52 2015
@@ -218,7 +218,7 @@ function register_checkboxes() {
var color = color_codes[index % color_codes.length];
var prev_cell = $(this).closest('td').prev();
prev_cell.css("background-color", color);
- add_data_to_graph(changes[index]["url"], index);
+ add_data_to_graph(changes[index]["url"], index, update_graph);
} else {
is_checked[index] = false;
var prev_cell = $(this).closest('td').prev();
Modified: lnt/trunk/lnt/server/ui/views.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/views.py?rev=256233&r1=256232&r2=256233&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/views.py (original)
+++ lnt/trunk/lnt/server/ui/views.py Tue Dec 22 01:08:52 2015
@@ -537,10 +537,10 @@ def v4_graph():
field = ts.sample_fields[field_index]
except NoResultFound:
return abort(404)
- graph_parameters.append((machine, test, field))
+ graph_parameters.append((machine, test, field, field_index))
# Order the plots by machine name, test name and then field.
- graph_parameters.sort(key = lambda (m,t,f): (m.name, t.name, f.name))
+ graph_parameters.sort(key = lambda (m,t,f,_): (m.name, t.name, f.name, _))
# Extract requested mean trend.
mean_parameter = None
@@ -626,10 +626,11 @@ def v4_graph():
overview_plots = []
baseline_plots = []
num_plots = len(graph_parameters)
- for i,(machine,test,field) in enumerate(graph_parameters):
+ for i,(machine,test,field, field_index) in enumerate(graph_parameters):
# Determine the base plot color.
col = list(util.makeDarkColor(float(i) / num_plots))
- legend.append((machine, test.name, field.name, tuple(col)))
+ url = "/".join([str(machine.id), str(test.id), str(field_index)])
+ legend.append((machine, test.name, field.name, tuple(col), url))
# Load all the field values for this test on the same machine.
#
More information about the llvm-commits
mailing list