Add upstream run data display page

This commit is contained in:
Austin Clark 2015-08-04 09:16:58 -06:00
parent 535af7b879
commit c32375e4bc
8 changed files with 132 additions and 19 deletions

View File

@ -3,3 +3,4 @@ DjangoRestless>=0.0.10
python-subunit>=0.0.18
testtools>=0.9.30
testrepository>=0.0.18
subunit2sql>=0.7.0

View File

@ -0,0 +1,41 @@
"use strict";
window.addEventListener('load', function() {
//default panel display
$("#runs-panel").hide();
$("#gerrit-panel").show();
//Takes a list of runs and creates a pretty div for each
function display_runs(data) {
$("#runs-panel").show();
for (var i in data) {
var run_obj = data[i]
var div = $("<div class=\"span12\" id=\"run-div-" + i + "\"></div>");
$(div.append("<a href=" + run_obj['artifacts'] + " target=\"_blank\">" + run_obj['artifacts'] + "\n</a>"));
$("#runs-panel").append(div);
$("#runs-panel-heading").html("Displaying " + i + " Runs");
}
}
$('#gerrit-id').keypress(function (e) {
if (e.which == 13) {
$( "#gerrit-id-button" ).click();
return false;
}
});
$('#gerrit-id-button').click(function() {
var request = 'upstream_api_changeid_'+$("#gerrit-id").val()+'.json';
$("#runs-panel").append("<a href=\"https://review.openstack.org/" + $("#gerrit-id").val() +
"/\" target=\"_blank\"><h2> Change ID: " + $("#gerrit-id").val() + "</h2></a>");
$("#gerrit-panel").html("Loading Test Runs...");
$.getJSON((request),function(data) {
$("#gerrit-panel").hide();
display_runs(data);
});
});
});

View File

@ -39,11 +39,11 @@
<li>
<a href="#"><i class="fa fa-bar-chart-o fa-fw"></i> Upstream<span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<!--<li>
<a href="upstream_test.html"><i class="fa fa-bar-chart-o fa-fw"></i> Test Stats</a>
</li>
</li>-->
<li>
<a href="upstream_run.html"><i class="fa fa-clock-o fa-fw"></i> Run Metadata</a>
<a href="upstream_run.html"><i class="fa fa-clock-o fa-fw"></i> Run Data</a>
</li>
</ul>
<!-- /.nav-second-level -->

View File

@ -1,14 +1,36 @@
{% extends 'template.html' %}
{% load staticfiles %}
{% block title %}Upstream Run Metadata{% endblock %}
{% block head-extra %}<script src="{% static 'js/upstream_run.js' %}"></script>{% endblock %}
{% block body %}
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Upstream Run Metadata</h1>
<h1 class="page-header">Upstream Run Data</h1>
</div>
<!-- /.col-lg-12 -->
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel panel-heading" id="runs-panel-heading">Analyze Run</div>
<div class="panel panel-body">
<div id="gerrit-panel">
Enter a Gerrit ChangeID: <input type="text" id="gerrit-id">
<input id="gerrit-id-button" type="button" value="Submit">
</div>
<div id="runs-panel"></div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,14 +1,42 @@
from subunit2sql.db import api
from subunit2sql import shell
from subunit2sql.db import api, models
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm.state import InstanceState
from restless.views import Endpoint
def main():
# Initialize subunit2sql config
shell.parse_args([])
db_uri = 'mysql://query:query@logstash.openstack.org:3306/subunit2sql'
shell.CONF.set_override('connection', db_uri, group='database')
latest_run = api.get_latest_run()
print latest_run.id
print latest_run.run_time
import json
if __name__ == '__main__':
main()
def _get_runs(change_id):
'''
When given the change_id of a Gerrit change, a connection will be made to
the upstream subunit2sql db and query all run meta having that change_id
:param change_id: the Gerrit change_id to query
:return: a json dict of run_meta objects
'''
engine=create_engine('mysql://query:query@logstash.openstack.org:3306/subunit2sql')
Session = sessionmaker(bind=engine)
# create a Session
session = Session()
list_of_runs = api.get_runs_by_key_value(key="build_change",value=change_id,
session=session)
ret_list = []
for run in list_of_runs:
ret_list.append(run.to_dict())
return ret_list
class GerritURLEndpoint(Endpoint):
def get(self, request, change_id):
'''
:param request:
:param change_id:
:return: Collection of run objects associated with a
specific CID
'''
return _get_runs(change_id)

View File

@ -1,4 +1,16 @@
from django.views.generic import TemplateView
# TODO Planned f(x):
# 1. Input a run_id from an upstream run to display run info
# 2. Compare runs by metadata
#
# 1.
# EX: url for logstash=
# http://logs.openstack.org/92/206192/2/check/gate-subunit2sql-python27/c1ff374/
#
# a. link between logstash and subunit2sql (urlparser)
# b. display server-side as well as client-side logs
#
class RunView(TemplateView):
template_name = 'upstream/run.html'
template_name = 'upstream/run.html'

View File

@ -1,4 +1,8 @@
from django.views.generic import TemplateView
# TODO: Planned f(x):
# Compare one specific test against its moving average
#
class TestView(TemplateView):
template_name = 'upstream/test.html'

View File

@ -3,14 +3,19 @@ from django.conf.urls import patterns, include, url
from .run import RunView
from .test import TestView
from .api import GerritURLEndpoint
urlpatterns = patterns('',
url(r'^run.html$',
RunView.as_view(),
name='aggregate_results'),
name='run_metadata'),
url(r'^test.html$',
TestView.as_view(),
name='summary_results')
name='test_data'),
url(r'^api_changeid_(?P<change_id>\d+).json$',
GerritURLEndpoint.as_view(),
name='gerrit_url')
)