1 <?xml version="1.0" encoding="utf-8"?>
3 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
5 <xsl:template match="/">
8 <title>Jobs <xsl:value-of select="//JobsReport/board/."/> report</title>
9 <style type="text/css">
10 <!-- styles for commands results -->
11 .OKday { background-color:#20FF20; }
12 .OKweek { background-color:#90EE90; font-size: 11px; }
13 .OKmonth { background-color:#90EE90; font-size: 10px; }
14 .OKold { background-color:#90EE90; font-size: 9px; }
16 .KOday { background-color:#F20000; }
17 .KOweek { background-color:#FFC0CB; font-size: 11px; }
18 .KOmonth { background-color:#FFC0CB; font-size: 10px; }
19 .KOold { background-color:#FFC0CB; font-size: 9px; }
21 .KFday { background-color:#FFA500; }
22 .KFweek { background-color:#FAC86D; font-size: 11px; }
23 .KFmonth { background-color:#FAC86D; font-size: 10px; }
24 .KFold { background-color:#FAC86D; font-size: 9px; }
26 .NAday { background-color:#BBBBBB; }
27 .NAweek { background-color:#BFBFBF; font-size: 11px; }
28 .NAmonth { background-color:#CACACA; font-size: 10px; }
29 .NAold { background-color:#CFCFCF; font-size: 9px; }
31 .label { font-weight: bold; }
33 <!-- styles for links in matrix -->
34 .OK2 { color:#00AA00; font-weight: normal;}
35 .KO2 { color:#FF0000; font-weight: normal;}
36 .KF2 { color:#FF8000; font-weight: normal;}
37 .NA2 { color:#BBBBBB; font-weight: normal;}
38 .TO2 { color:GoldenRod; font-weight: normal;}
39 .RUNNING2 { color:LightSeaGreen; font-weight: bold; }
40 .OK2day { color:#00AA00; font-weight: bold; }
41 .KO2day { color:#FF0000; font-weight: bold; }
42 .KF2day { color:#FF8000; font-weight: bold; }
43 .NA2day { color:#BBBBBB; font-weight: bold; }
44 .TO2day { color:GoldenRod; font-weight: bold; }
46 .new { background-color:#FF5500; }
47 .day { background-color:#F0E25A; font-size: small; }
48 .week { background-color:#E0E0E0; font-size: small; }
49 .month { background-color:#C0C0C0; font-size: small; }
50 .old { background-color:#A0A0A0; font-size: small; }
51 .lnk { font-size: 12px; }
52 .lnk a { text-decoration: none; }
53 .note { text-align : right; font-style: italic; font-size: small; }
54 table.legend { margin:0px;
56 border-collapse:collapse;
61 table.summary { width : 100%;
64 border-collapse:collapse;
68 td.summary { border : solid 0px; font-size: medium; }
69 td { border : solid 1px; }
70 td.small { border : solid 1px; font-size: small; }
71 th { font-size: small; border: solid 1px; }
72 h2 { text-align : center; }
73 h3 { text-align : left; font-size: small; font-weight: normal; }
74 h4 { text-align : left; font-size: small; font-weight: bold; display: inline; }
75 h_err { text-align : left; font-size: small; font-weight: normal; display: inline; color: red; }
76 .legend { text-align : center; }
77 .def { font-family: Arial, Verdana, "Times New Roman", Times, serif;}
81 <xsl:if test="//JobsReport/infos/@JobsCommandStatus='running'">
82 <meta http-equiv="refresh" content="120"></meta>
85 <script language="JavaScript"><![CDATA[
88 var element = document.getElementById(id);
90 if ( element.style.display == "none" )
91 element.style.display = "block";
93 element.style.display = "none";
96 function collapseall() {
97 var x=document.getElementsByTagName("div");
98 for (i=0;i<x.length;i++)
100 if ( x[i].id != "matrix" )
101 x[i].style.display = "none";
113 <h2>Compilation report <xsl:value-of select="//JobsReport/board/."/></h2>
115 <td class="summary" align="right" valign="bottom" width="300">
116 <span class="note"><xsl:value-of select="//JobsReport/infos/@name" />: <xsl:value-of select="//JobsReport/infos/@value" /></span>
122 <xsl:attribute name="onclick">javascript:Toggle('legend')</xsl:attribute>
123 <xsl:attribute name="title">legend</xsl:attribute>
128 <xsl:attribute name="onclick">javascript:Toggle('history')</xsl:attribute>
129 <xsl:attribute name="title">history</xsl:attribute>
136 <table class="summary">
138 <tr bgcolor="#9acd32">
140 <xsl:for-each select="//JobsReport/applications/application">
141 <!--<xsl:sort select="@name" />-->
142 <th><xsl:value-of select="@name" /></th>
146 <!-- for all hosts -->
147 <xsl:for-each select="//JobsReport/distributions/dist">
148 <xsl:sort select="@name" />
149 <xsl:variable name="curr_distname" select="@name" />
151 <td align="center"><xsl:value-of select="$curr_distname" /></td>
152 <!-- for all jobs -->
153 <xsl:for-each select="//JobsReport/applications/application">
154 <!--<xsl:sort select="@name" />-->
155 <xsl:variable name="curr_appli" select="@name" />
156 <td align="center" class="small">
157 <!-- get the job for current host and current appli -->
158 <xsl:for-each select="//JobsReport/jobs/job">
160 <xsl:sort select="@name" />
161 <xsl:variable name="curr_job_name" select="@name" />
162 <xsl:if test="application/.=$curr_appli and distribution/.=$curr_distname and board/.=//JobsReport/board/.">
163 <!-- Change background color if it is an extra job (not defined in the input csv files) -->
164 <xsl:if test="extra_job/.='yes'">
165 <xsl:attribute name="bgcolor">FFCCCC</xsl:attribute>
167 <!-- Get job status and put a link -->
169 <xsl:when test="state/.='SSH connection KO' or state/.='Cancelled'">
171 <xsl:attribute name="onclick">javascript:Toggle('<xsl:value-of select="@name"/>')</xsl:attribute>
172 <xsl:attribute name="title"><xsl:value-of select="state/."/></xsl:attribute>
173 <xsl:attribute name="class">KO2day</xsl:attribute>
174 <xsl:value-of select="@name"/>
177 <xsl:when test="contains(state/., 'Not launched')">
179 <xsl:attribute name="onclick">javascript:Toggle('<xsl:value-of select="@name"/>')</xsl:attribute>
180 <xsl:attribute name="title"><xsl:value-of select="state/."/></xsl:attribute>
181 <xsl:attribute name="class">NA2day</xsl:attribute>
182 <xsl:value-of select="@name"/>
185 <xsl:when test="contains(state/., 'running')">
187 <xsl:attribute name="onclick">javascript:Toggle('<xsl:value-of select="@name"/>')</xsl:attribute>
188 <xsl:attribute name="title"><xsl:value-of select="state/."/></xsl:attribute>
189 <xsl:attribute name="class">RUNNING2</xsl:attribute>
190 <xsl:value-of select="@name"/>
193 <xsl:when test="contains(state/., 'Finished')">
195 <xsl:attribute name="onclick">javascript:Toggle('<xsl:value-of select="@name"/>')</xsl:attribute>
196 <xsl:attribute name="title"><xsl:value-of select="state/."/></xsl:attribute>
197 <xsl:attribute name="class">OK2day</xsl:attribute>
201 <xsl:when test="contains(state/., 'Timeout')">
203 <xsl:attribute name="onclick">javascript:Toggle('<xsl:value-of select="@name"/>')</xsl:attribute>
204 <xsl:attribute name="title"><xsl:value-of select="state/."/></xsl:attribute>
205 <xsl:attribute name="class">TO2day</xsl:attribute>
209 <xsl:when test="state/.='Not today'">
211 <xsl:attribute name="onclick">javascript:Toggle('<xsl:value-of select="@name"/>')</xsl:attribute>
212 <xsl:attribute name="title"><xsl:value-of select="state/."/></xsl:attribute>
213 <xsl:attribute name="class">NA2</xsl:attribute>
218 <!--<xsl:value-of select="state/." />-->
219 <xsl:if test="not(remote_log_file_path/.='nothing') and state/.!='Not today'">
222 <xsl:attribute name="title">Begin : <xsl:value-of select="begin/."/>
End : <xsl:value-of select="end/."/> </xsl:attribute>
223 <xsl:attribute name="href"><xsl:value-of select="remote_log_file_path/."/></xsl:attribute>
224 <xsl:if test="res/.='0'">
225 <xsl:attribute name="class">OK2day</xsl:attribute>
227 <xsl:if test="res/.!='0'">
228 <xsl:attribute name="class">KO2day</xsl:attribute>
230 <xsl:value-of select="host/."/>
231 <xsl:if test="port/.!='22'">
232 / <xsl:value-of select="port/."/>
236 <xsl:if test="state/.='Not today'">
238 <xsl:for-each select="//JobsReport/jobs/job[@name=$curr_job_name]/history/link">
239 <xsl:sort select="@date" order="descending" />
240 <xsl:if test="@last='yes'">
243 <xsl:attribute name="title">
244 <xsl:value-of select="concat(substring(@date, 7, 2), '/', substring(@date, 5, 2), '/', substring(@date,1,4))"/>
246 <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
247 <xsl:if test="@res='0'">
248 <xsl:attribute name="class">OK2</xsl:attribute>
250 <xsl:if test="@res!='0'">
251 <xsl:attribute name="class">KO2</xsl:attribute>
253 <xsl:value-of select="../../host"/>
259 <!--Add the link to the tests if there is any -->
260 <xsl:if test="(test_log_file_path) and (test_log_file_path/*)">
262 <xsl:for-each select="//JobsReport/jobs/job[@name=$curr_job_name]/test_log_file_path/path">
264 <xsl:attribute name="title"><xsl:value-of select="@nb_fails"/> fails</xsl:attribute>
265 <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
266 <xsl:if test="@res='0'">
267 <xsl:attribute name="class">OK2day</xsl:attribute>
269 <xsl:if test="@res!='0'">
270 <xsl:attribute name="class">KO2day</xsl:attribute>
283 <!-- get the missing jobs -->
284 <xsl:for-each select="//JobsReport/missing_jobs/job">
285 <xsl:if test="@distribution=$curr_distname and @application=$curr_appli">
286 <xsl:attribute name="bgcolor">ffb8b8</xsl:attribute>
289 <!-- get the missing jobs not today -->
290 <xsl:for-each select="//JobsReport/missing_jobs_not_today/job">
291 <xsl:if test="@distribution=$curr_distname and @application=$curr_appli">
292 <xsl:attribute name="bgcolor">ffdbdb</xsl:attribute>
304 <xsl:when test="//JobsReport/infos/@JobsCommandStatus='running'">
305 Command status : running <img src="running.gif"></img>
309 Command status : <xsl:value-of select="//JobsReport/infos/@JobsCommandStatus/."/>
314 <span class="note">input file: <xsl:value-of select="//JobsReport/@input_file" /></span>
316 <!-- Loop over the jobs in order to find what job was called in the link "onclick". Display information about that job -->
317 <xsl:for-each select="//JobsReport/jobs/job">
318 <xsl:variable name="curr_job_name" select="@name" />
319 <div style="display:none"><xsl:attribute name="id"><xsl:value-of select="@name"/></xsl:attribute>
320 <!-- Display job name -->
321 <h4>Name : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/@name"/>
323 <xsl:if test="//JobsReport/jobs/job[@name=$curr_job_name]/state!='Not today'">
324 <!-- Display the job attributes -->
325 <h4>Hostname/port : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/host"/>/<xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/port"/>
327 <h4>User : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/user"/>
330 <!-- Display history -->
333 <xsl:for-each select="//JobsReport/jobs/job[@name=$curr_job_name]/history/link">
334 <xsl:sort select="@date" order="descending" />
337 <xsl:attribute name="title">remote log</xsl:attribute>
338 <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
339 <xsl:if test="@res='0'">
340 <xsl:attribute name="class">OK2</xsl:attribute>
342 <xsl:if test="@res!='0'">
343 <xsl:attribute name="class">KO2</xsl:attribute>
345 <xsl:value-of select="@date"/>
350 <xsl:if test="//JobsReport/jobs/job[@name=$curr_job_name]/state!='Not today'">
351 <h4>salomeTools path : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/sat_path"/>
355 <xsl:attribute name="onclick">javascript:Toggle('<xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/after"/>')</xsl:attribute>
356 <xsl:attribute name="title">Click to get job information</xsl:attribute>
357 <xsl:attribute name="class">OK2</xsl:attribute>
358 <xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/after"/>
361 <h4>Timeout : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/timeout"/>
363 <h4>Begin : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/begin"/>
365 <h4>End : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/end"/>
367 <h4>Out : </h4><PRE><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/out"/></PRE>
369 <h4>Err : </h4><h_err><PRE><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/err"/></PRE></h_err>
371 <h4>Status : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/state"/>
373 <h4>Commands : </h4><xsl:value-of select="//JobsReport/jobs/job[@name=$curr_job_name]/commands"/>
378 <div style="display:none"><xsl:attribute name="id">legend</xsl:attribute>
380 <tr><td>job</td><td>result</td></tr>
381 <tr><td> <xsl:attribute name="class">OK2day</xsl:attribute>success today</td><td> <xsl:attribute name="class">OK2day</xsl:attribute>success today</td></tr>
382 <tr><td> <xsl:attribute name="class">OK2</xsl:attribute>success not today</td><td> <xsl:attribute name="class">OK2</xsl:attribute>success not today</td></tr>
383 <tr><td> <xsl:attribute name="class">KO2day</xsl:attribute>fail today</td><td> <xsl:attribute name="class">KO2day</xsl:attribute>fail today</td></tr>
384 <tr><td> <xsl:attribute name="class">KO2</xsl:attribute>fail not today</td><td> <xsl:attribute name="class">KO2</xsl:attribute>fail not today</td></tr>
385 <tr><td> <xsl:attribute name="class">TO2day</xsl:attribute>timeout today</td><td> <xsl:attribute name="class">KF2day</xsl:attribute>known failure today</td></tr>
386 <tr><td> <xsl:attribute name="class">RUNNING2</xsl:attribute>running</td><td> <xsl:attribute name="class">KF2</xsl:attribute>known failure not today</td></tr>
387 <tr><td> <xsl:attribute name="class">NA2day</xsl:attribute>To be launched</td></tr>
388 <tr><td> <xsl:attribute name="class">NA2</xsl:attribute>Not today</td></tr>
389 <tr>Missing job: <td> <xsl:attribute name="bgcolor">FFCCCC</xsl:attribute> </td></tr>
390 <tr>Extra job: <td> <xsl:attribute name="bgcolor">FFCCCC</xsl:attribute> Job name </td></tr>
394 <div style="display:none"><xsl:attribute name="id">history</xsl:attribute>
395 <xsl:for-each select="//JobsReport/history/link">
396 <xsl:sort select="@date" order="descending" />
399 <xsl:attribute name="title">old board</xsl:attribute>
400 <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
401 <xsl:value-of select="@date"/>