[llvm-commits] [LNT] r163769 - in /lnt/trunk/lnt/server: reporting/dailyreport.py ui/templates/v4_daily_report.html ui/views.py
Daniel Dunbar
daniel at zuster.org
Wed Sep 12 18:39:37 PDT 2012
Author: ddunbar
Date: Wed Sep 12 20:39:37 2012
New Revision: 163769
URL: http://llvm.org/viewvc/llvm-project?rev=163769&view=rev
Log:
[dailyreport] Compute ComparisonResults for everything.
Modified:
lnt/trunk/lnt/server/reporting/dailyreport.py
lnt/trunk/lnt/server/ui/templates/v4_daily_report.html
lnt/trunk/lnt/server/ui/views.py
Modified: lnt/trunk/lnt/server/reporting/dailyreport.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/reporting/dailyreport.py?rev=163769&r1=163768&r2=163769&view=diff
==============================================================================
--- lnt/trunk/lnt/server/reporting/dailyreport.py (original)
+++ lnt/trunk/lnt/server/reporting/dailyreport.py Wed Sep 12 20:39:37 2012
@@ -1,5 +1,9 @@
import datetime
+import sqlalchemy.sql
+
+import lnt.server.reporting.analysis
+
from lnt.server.ui import util
class DailyReport(object):
@@ -9,6 +13,7 @@
self.year = year
self.month = month
self.day = day
+ self.fields = list(ts.Sample.get_primary_fields())
# Computed values.
self.day_start_offset = None
@@ -26,8 +31,10 @@
self.day).toordinal()
# Adjust the dates time component. As we typically want to do runs
- # overnight, we define "daily" to really mean "at 0700".
- self.day_start_offset = datetime.timedelta(hours=7)
+ # overnight, we define "daily" to really mean "daily plus some
+ # offset". The offset should generally be whenever the last run finishes
+ # on today's date.
+ self.day_start_offset = datetime.timedelta(hours=16)
self.next_day = (datetime.datetime.fromordinal(day_ordinal + 1) +
self.day_start_offset)
@@ -101,45 +108,43 @@
# by the kind of status change, while still managing to present the
# overview across machines.
- # Batch load all of the samples reported by all these runs.
- columns = [ts.Sample.run_id,
- ts.Sample.test_id]
- columns.extend(f.column
- for f in ts.sample_fields)
- samples = ts.query(*columns).\
- filter(ts.Sample.run_id.in_(
- r.id for r in relevant_runs)).all()
-
- # Find the union of tests reported in the relevant runs.
- #
- # FIXME: This is not particularly efficient, should we just use all
- # tests in the database?
- self.reporting_tests = ts.query(ts.Test).\
- filter(ts.Test.id.in_(set(s[1] for s in samples))).\
- order_by(ts.Test.name).all()
-
- # Aggregate all of the samples by (run_id, test_id).
- sample_map = util.multidict()
- for s in samples:
- sample_map[(s[0], s[1])] = s[2:]
+ relevant_run_ids = [r.id for r in relevant_runs]
- # Build the result table:
- # result_table[test_index][day_index][machine_index] = {samples}
+ # Get the set all tests reported in the recent runs.
+ self.reporting_tests = ts.query(ts.Test).filter(
+ sqlalchemy.sql.exists('*', sqlalchemy.sql.and_(
+ ts.Sample.run_id.in_(relevant_run_ids),
+ ts.Sample.test_id == ts.Test.id))).all()
+ self.reporting_tests.sort(key=lambda t: t.name)
+
+ # Create a run info object.
+ sri = lnt.server.reporting.analysis.RunInfo(ts, relevant_run_ids)
+
+ # Aggregate runs by machine ID and day index.
+ machine_runs = util.multidict()
+ for day_index,day_runs in enumerate(prior_runs):
+ for run in day_runs:
+ machine_runs[(run.machine_id, day_index)] = run
+
+ # Build the result table::
+ # result_table[field_index][test_index][day_index][machine_index] = \
+ # {samples}
self.result_table = []
- for test in self.reporting_tests:
- key = test
- test_results = []
- for day_runs in prior_runs:
- day_results = []
- for machine in self.reporting_machines:
- # Collect all the results for this machine.
- results = [s
- for run in day_runs
- if run.machine is machine
- for s in sample_map.get((run.id, test.id), ())]
- day_results.append(results)
- test_results.append(day_results)
- self.result_table.append(test_results)
-
- # FIXME: Now compute ComparisonResult objects for each (test, machine,
- # day).
+ for field in self.fields:
+ field_results = []
+ for test in self.reporting_tests:
+ key = test
+ test_results = []
+ for day_index,day_runs in enumerate(prior_runs):
+ day_results = []
+ for machine in self.reporting_machines:
+ prev_runs = machine_runs.get(
+ (machine.id, day_index+1), ())
+ day_runs = machine_runs.get(
+ (machine.id, day_index), ())
+ cr = sri.get_comparison_result(
+ day_runs, prev_runs, test.id, field)
+ day_results.append(cr)
+ test_results.append(day_results)
+ field_results.append(test_results)
+ self.result_table.append(field_results)
Modified: lnt/trunk/lnt/server/ui/templates/v4_daily_report.html
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/templates/v4_daily_report.html?rev=163769&r1=163768&r2=163769&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/templates/v4_daily_report.html (original)
+++ lnt/trunk/lnt/server/ui/templates/v4_daily_report.html Wed Sep 12 20:39:37 2012
@@ -51,8 +51,28 @@
{% endfor %}
</table>
+{% macro get_cell_value(cr) %}
+{% set test_status = cr.get_test_status() %}
+{% set value_status = cr.get_value_status() %}
+
+{% if (test_status == analysis.REGRESSED or
+ test_status == analysis.UNCHANGED_FAIL) %}
+ <td>FAIL</td>
+{% else %}
+
+{% if (value_status == analysis.REGRESSED or
+ value_status == analysis.IMPROVED) %}
+ {{ cr.pct_delta|aspctcell|safe }}
+{% else %}
+ <td>-</td>
+{% endif %}
+
+{% endif %}
+{% endmacro %}
+
{# Generate the table showing the raw sample data. #}
-<h3>Result Table</h3>
+{% for field in report.fields %}
+<h3>Result Table ({{ field.name }})</h3>
<table border="1">
<thead>
<tr>
@@ -62,7 +82,8 @@
<th>Day - {{i}}</th>
{% endfor %}
</thead>
-{% for test,test_results in zip(report.reporting_tests, report.result_table) %}
+{% for test,test_results in zip(report.reporting_tests,
+ report.result_table[loop.index0]) %}
<tr>
<td colspan="2"><b>{{test.name}}</b></td>
<td colspan="{{report.num_prior_days_to_include}}"> </td>
@@ -72,12 +93,14 @@
<tr>
<td> </td>
<td>{{machine.name}}</td>
-{% for day_results in test_results|reverse %}
- <td>{{day_results[machine_loop.index0]}}</td>
+ <td>{{ test_results[-1][machine_loop.index0].current }}</td>
+{% for day_result in test_results[:-1]|reverse %}
+ {{ get_cell_value(day_result[machine_loop.index0]) }}
{% endfor %}
</tr>
{% endfor %}
{% endfor %}
</table>
+{% endfor %}
{% endblock %}
Modified: lnt/trunk/lnt/server/ui/views.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/views.py?rev=163769&r1=163768&r2=163769&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/views.py (original)
+++ lnt/trunk/lnt/server/ui/views.py Wed Sep 12 20:39:37 2012
@@ -813,7 +813,8 @@
# Build the report.
report.build()
- return render_template("v4_daily_report.html", ts=ts, report=report)
+ return render_template("v4_daily_report.html", ts=ts, report=report,
+ analysis=lnt.server.reporting.analysis)
###
# Cross Test-Suite V4 Views
More information about the llvm-commits
mailing list