added top navigation page
BIN
unittest-logs/unittestweb/images/img5846075.png
Executable file
|
After Width: | Height: | Size: 15 KiB |
BIN
unittest-logs/unittestweb/images/nav12971480a.gif
Executable file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
unittest-logs/unittestweb/images/nav12971480i.gif
Executable file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
unittest-logs/unittestweb/images/nav12971481a.gif
Executable file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
unittest-logs/unittestweb/images/nav12971481i.gif
Executable file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
unittest-logs/unittestweb/images/nav12971482a.gif
Executable file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
unittest-logs/unittestweb/images/nav12971482i.gif
Executable file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
unittest-logs/unittestweb/images/nav12971483a.gif
Executable file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
unittest-logs/unittestweb/images/nav12971483i.gif
Executable file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
unittest-logs/unittestweb/images/nav12971484a.gif
Executable file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
unittest-logs/unittestweb/images/nav12971484i.gif
Executable file
|
After Width: | Height: | Size: 2.7 KiB |
64
unittest-logs/unittestweb/templates/viewer/Help.html
Executable file
@@ -0,0 +1,64 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Help</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
||||
|
||||
|
||||
<style type="text/css">
|
||||
/*----------Text Styles----------*/
|
||||
.ws6 {font-size: 8px;}
|
||||
.ws7 {font-size: 9.3px;}
|
||||
.ws8 {font-size: 11px;}
|
||||
.ws9 {font-size: 12px;}
|
||||
.ws10 {font-size: 13px;}
|
||||
.ws11 {font-size: 15px;}
|
||||
.ws12 {font-size: 16px;}
|
||||
.ws14 {font-size: 19px;}
|
||||
.ws16 {font-size: 21px;}
|
||||
.ws18 {font-size: 24px;}
|
||||
.ws20 {font-size: 27px;}
|
||||
.ws22 {font-size: 29px;}
|
||||
.ws24 {font-size: 32px;}
|
||||
.ws26 {font-size: 35px;}
|
||||
.ws28 {font-size: 37px;}
|
||||
.ws36 {font-size: 48px;}
|
||||
.ws48 {font-size: 64px;}
|
||||
.ws72 {font-size: 96px;}
|
||||
.wpmd {font-size: 13px;font-family: 'Arial';font-style: normal;font-weight: normal;}
|
||||
/*----------Para Styles----------*/
|
||||
DIV,UL,OL /* Left */
|
||||
{
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="text1" style="position:absolute; overflow:hidden; left:26px; top:15px; width:870px; height:631px; z-index:0">
|
||||
<div class="wpmd">
|
||||
<div><font face="Calibri" class="ws11">This web site provides the bird eye view of top failures and other details of Firefox unit tests from the Tinderbox daily runs.</font></div>
|
||||
<div><font face="Calibri" class="ws11"><BR></font></div>
|
||||
<div><font face="Calibri" class="ws11">Meaning of the Left navigation links</font></div>
|
||||
<UL>
|
||||
<li><font face="Calibri" class="ws11">Latest Failures : This link provides the list of latest failures from the Tinderbox.</font></li>
|
||||
<li><font face="Calibri" class="ws11">Top 25 Failures : This link provides the list of top 25 failures from the entire history of the topfails database. Please note that this data is as complete as the first date we started collecting results. The data we have in the topfails database does not contain all the failures details from the Time ZERO of tinderbox runs.</font></li>
|
||||
<li><font face="Calibri" class="ws11">All Failed Tests: This link displays all the known failures that are stored in the topfails DB.</font></li>
|
||||
<li><font face="Calibri" class="ws11">Failures Timerange: This is a link which allows you to query for failures from NOW till a specific period in the past.</font></li>
|
||||
</UL>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11"> Example: 2d = 2 days in the past till now </font></div>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11"> 7h = 7 hours in the past till now</font></div>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11"> 5w = 5 weeks in the past till now</font></div>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11"> 1m = 1 month in the past till now</font></div>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11"> 10y = 10 years in the past till now</font></div>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11">Example queries for advanced users <a href="failswindow?window=2w">2 weeks failures</a></div>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11">Example queries for advanced users <a href="failswindow?window=2d">2 days failures</a></div>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11">Example queries for advanced users <a href="failswindow?window=24h">24 hours failures</a></div>
|
||||
<div style="margin-left:40px;"><font face="Calibri" class="ws11">Example queries for advanced users <a href="failswindow?window=1m">1 month failures</a></div>
|
||||
</div></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
5
unittest-logs/unittestweb/templates/viewer/README
Normal file
@@ -0,0 +1,5 @@
|
||||
I have done a very bad and crude hack to add a top level navigation page. Instead of storing images for top navigation page in the correct location , I am jammin gall the top site nav stuff in here.
|
||||
|
||||
Should fix it when time permits.
|
||||
|
||||
|
||||
@@ -1,8 +1,96 @@
|
||||
<h1>Most recent test failures</h1>
|
||||
<ul>
|
||||
{% for f in failures %}
|
||||
<li>{{ f.build.startdate|date:"Y-m-d H:i" }} {{ f.build.tree.name }} {{ f.build.get_os_display }}: <a href="{% url viewer.views.test %}?name={{ f.name }}">{{ f.name }}</a>,
|
||||
<a href="{% url viewer.views.timeline %}?name={{ f.name }}">timeline</a>
|
||||
- {{ f.description }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
/*----------Text Styles----------*/
|
||||
.ws6 {font-size: 8px;}
|
||||
.ws7 {font-size: 9.3px;}
|
||||
.ws8 {font-size: 11px;}
|
||||
.ws9 {font-size: 12px;}
|
||||
.ws10 {font-size: 13px;}
|
||||
.ws11 {font-size: 15px;}
|
||||
.ws12 {font-size: 16px;}
|
||||
.ws14 {font-size: 19px;}
|
||||
.ws16 {font-size: 21px;}
|
||||
.ws18 {font-size: 24px;}
|
||||
.ws20 {font-size: 27px;}
|
||||
.ws22 {font-size: 29px;}
|
||||
.ws24 {font-size: 32px;}
|
||||
.ws26 {font-size: 35px;}
|
||||
.ws28 {font-size: 37px;}
|
||||
.ws36 {font-size: 48px;}
|
||||
.ws48 {font-size: 64px;}
|
||||
.ws72 {font-size: 96px;}
|
||||
.wpmd {font-size: 13px;font-family: 'Arial';font-style: normal;font-weight: normal;}
|
||||
/*----------Para Styles----------*/
|
||||
DIV,UL,OL /* Left */
|
||||
{
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script language="JavaScript1.4" type="text/javascript">
|
||||
<!--
|
||||
function jsPlay(soundobj) {
|
||||
var thissound= eval("document."+soundobj);
|
||||
try {
|
||||
thissound.Play();
|
||||
}
|
||||
catch (e) {
|
||||
thissound.DoPlay();
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<script language="javascript" type="text/javascript">
|
||||
<!--
|
||||
function MM_swapImgRestore() {
|
||||
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
|
||||
}
|
||||
|
||||
function MM_preloadImages() {
|
||||
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
|
||||
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
|
||||
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
|
||||
}
|
||||
|
||||
function MM_findObj(n, d) {
|
||||
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
|
||||
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
|
||||
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
|
||||
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
|
||||
if(!x && d.getElementById) x=d.getElementById(n); return x;
|
||||
}
|
||||
|
||||
function MM_swapImage() {
|
||||
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
|
||||
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="nav10d" style="position:absolute; left:5px; top:80px; z-index:0"><a onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('nav10','','http://people.mozilla.com/~mnandigama/images/nav12971480a.gif',1)" href="latest" target="iFrame1"><img name="nav10" onLoad="MM_preloadImages('http://people.mozilla.com/~mnandigama/images/nav12971480a.gif')" alt="" border=0 src="http://people.mozilla.com/~mnandigama/images/nav12971480i.gif"></a></div>
|
||||
<div id="nav11d" style="position:absolute; left:5px; top:113px; z-index:0"><a onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('nav11','','http://people.mozilla.com/~mnandigama/images/nav12971481a.gif',1)" href="topfails" target="iFrame1"><img name="nav11" onLoad="MM_preloadImages('http://people.mozilla.com/~mnandigama/images/nav12971481a.gif')" alt="" border=0 src="http://people.mozilla.com/~mnandigama/images/nav12971481i.gif"></a></div>
|
||||
<div id="nav12d" style="position:absolute; left:5px; top:146px; z-index:0"><a onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('nav12','','http://people.mozilla.com/~mnandigama/images/nav12971482a.gif',1)" href="tests" target="iFrame1"><img name="nav12" onLoad="MM_preloadImages('http://people.mozilla.com/~mnandigama/images/nav12971482a.gif')" alt="" border=0 src="http://people.mozilla.com/~mnandigama/images/nav12971482i.gif"></a></div>
|
||||
<div id="nav13d" style="position:absolute; left:5px; top:179px; z-index:0"><a onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('nav13','','http://people.mozilla.com/~mnandigama/images/nav12971483a.gif',1)" href="failswindow?window=7d" target="iFrame1"><img name="nav13" onLoad="MM_preloadImages('http://people.mozilla.com/~mnandigama/images/nav12971483a.gif')" alt="" border=0 src="http://people.mozilla.com/~mnandigama/images/nav12971483i.gif"></a></div>
|
||||
<div id="nav14d" style="position:absolute; left:5px; top:212px; z-index:0"><a onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('nav14','','http://people.mozilla.com/~mnandigama/images/nav12971484a.gif',1)" href="Help" target="iFrame1"><img name="nav14" onLoad="MM_preloadImages('http://people.mozilla.com/~mnandigama/images/nav12971484a.gif')" alt="" border=0 src="http://people.mozilla.com/~mnandigama/images/nav12971484i.gif"></a></div>
|
||||
|
||||
<div id="iFrame1" style="position:absolute; left:187px; top:69px; z-index:1">
|
||||
<iframe name="iFrame1" width="870" height="1978" src="Help" scrolling="no" frameborder="0"></iframe>
|
||||
</div>
|
||||
|
||||
<div id="text1" style="position:absolute; overflow:hidden; left:305px; top:11px; width:690px; height:90px; z-index:2">
|
||||
<div class="wpmd">
|
||||
<div><font color="#FF9900" face="Calibri" class="ws20"><B>Mozilla Firefox Tinderbox Topfails Dashboard</B></font></div>
|
||||
</div></div>
|
||||
|
||||
<div id="image1" style="position:absolute; overflow:hidden; left:4px; top:15px; width:181px; height:61px; z-index:3"><img src="http://people.mozilla.com/~mnandigama/images/img5846075.png" alt="" title="" border=0 width=181 height=61></div>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
8
unittest-logs/unittestweb/templates/viewer/latest.html
Executable file
@@ -0,0 +1,8 @@
|
||||
<h1>Most recent test failures</h1>
|
||||
<ul>
|
||||
{% for f in failures %}
|
||||
<li>{{ f.build.startdate|date:"Y-m-d H:i" }} {{ f.build.tree.name }} {{ f.build.get_os_display }}: <a href="{% url viewer.views.test %}?name={{ f.name }}">{{ f.name }}</a>,
|
||||
<a href="{% url viewer.views.timeline %}?name={{ f.name }}">timeline</a>
|
||||
- {{ f.description }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
@@ -16,4 +16,6 @@ urlpatterns = patterns('unittestweb.viewer.views',
|
||||
(r'^timeline$', 'timeline'),
|
||||
(r'^topfails$', 'topfails'),
|
||||
(r'^failswindow$','failswindow'),
|
||||
(r'^latest$','latest'),
|
||||
(r'^Help$','Help'),
|
||||
)
|
||||
|
||||
@@ -3,8 +3,11 @@ from unittestweb.viewer.models import Builds, Trees, Tests, OS_CHOICES, get_most
|
||||
import re
|
||||
|
||||
def index(request):
|
||||
return render_to_response('viewer/index.html')
|
||||
|
||||
def latest(request):
|
||||
failures = get_list_or_404(Tests.objects.all().order_by('-build__starttime')[:10])
|
||||
return render_to_response('viewer/index.html', {'failures': failures})
|
||||
return render_to_response('viewer/latest.html', {'failures': failures})
|
||||
|
||||
def trees(request):
|
||||
alltrees = Trees.objects.all().order_by('name')
|
||||
@@ -34,6 +37,9 @@ def topfails(request):
|
||||
failures = get_most_failing_tests()
|
||||
return render_to_response('viewer/topfails.html', {'failures': failures})
|
||||
|
||||
def Help(request):
|
||||
return render_to_response('viewer/Help.html')
|
||||
|
||||
def timeline(request):
|
||||
name = request.GET['name']
|
||||
builds = get_list_or_404(Builds, tests__name__exact=name)
|
||||
@@ -74,4 +80,4 @@ def failswindow(request):
|
||||
|
||||
|
||||
return render_to_response('viewer/failswindow.html', {'failures': failures,'n':m.group(1),'d':prd})
|
||||
|
||||
|
||||
|
||||