summaryrefslogtreecommitdiff
path: root/web-app/static/detail.html
blob: 31b3e767ca5bb2303f6c543712f8cde66d7c939a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<html>
<head>
  <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
  <META HTTP-EQUIV="EXPIRES" CONTENT="0">
  <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

  <link href='http://fonts.googleapis.com/css?family=Merriweather+Sans:200,700' rel='stylesheet' type='text/css'>
  <link href='http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css' rel='stylesheet' type='text/css'>
  <link href='http://cdn.datatables.net/1.10.7/css/jquery.dataTables.css' rel='stylesheet' type='text/css'>

  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  <script type="text/javascript" src="https://cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
  <style>
     h1,h2,h3 { font-family: "Merriweather Sans", Arial, serif; font-weight: 700; }
     BODY { font-family: "Merriweather Sans", Arial, serif; font-weight: 200; }
     TABLE { font-size: 90%; }
     td.details-control {
        background: url('https://www.datatables.net/examples/resources/details_open.png') no-repeat center center;
        cursor: pointer;
     }
     tr.shown td.details-control {
        background: url('https://www.datatables.net/examples/resources/details_close.png') no-repeat center center;
     }
  </style>

<script type="text/javascript" src="util.js"></script>
<script type="text/javascript" src="chart.js"></script>
<script type="text/javascript">

var global_job_failure_data;

function format_detail_reason(d) {
   var l = global_job_failure_data.length
   for(var i = 0; i < l; i++) {
      if(global_job_failure_data[i]["fullname"] == d["t.full_name"]) {
	  return "Stack Trace:<br/><textarea cols='90' rows='25' readonly>" + global_job_failure_data[i]["reason"]["#text"] + "</textarea>";
      }
   }

   return null;
}

$(function() {
   var params = parse_query(window.location.search);
   var job = params["job"];

   // get the config to find the logs server name
   $.getJSON("/env", function(data) {
      var job_logs_url = "http://" + data['StaticLogsServer'] + "/" + job + "/logs";
      $("<a>").attr("href", job_logs_url).html("Logs").appendTo($("#logs_url"));
      $.getJSON(job_logs_url + "/tests-failing.json", function(data) {
          global_job_failure_data = data
      });
   });

   // get the top-level job data
   $.getJSON("/results/tempest/job/" + job, function(data) {
      item = data[0];

      $("#lava_job").text(job);
      $("#date").text(item["t.date"]);

      $("#branch").text(item["b.name"]);
      $("#os_distro").text(item["o.distro"]);
      $("#os_version").text(item["o.version"]);
      $("#device").text(item["d.name"]);

      $("#passing_tests").text(item["t.passing_tests"]);
      $("#failing_tests").text(item["t.failing_tests"]);
      $("#skipped_tests").text(item["t.skipped_tests"]);
      $("#total_tests").text(item["t.all_tests"]);
   });

   var table1 = $('#failing_tests_table').DataTable( {
        "ajax": { "dataSrc" : "", "url" : "/results/tempest/job/" + job + "/failures" },
        "columns": [
            {
                "className":      'details-control',
                "orderable":      false,
                "data":           null,
                "defaultContent": ''
            },
            { "title" : "Test Category", "data" : "t\\.test_category" },
            { "title" : "Test Name", "data" : "t\\.name" },
            { "title" : "Duration", "data" : "r\\.time" },
	    { "title" : "Test Full Name", "data" : "t\\.full_name", "visible" : false }
        ],
        "order": [[2, 'asc']]
   });

   // Add event listener for opening and closing details
   $('#failing_tests_table tbody').on('click', 'td.details-control', function () {
        var tr = $(this).closest('tr');
        var row = table1.row( tr );
 
        if ( row.child.isShown() ) {
            // This row is already open - close it
            row.child.hide();
            tr.removeClass('shown');
        }
        else {
            // Open this row
            row.child( format_detail_reason(row.data()) ).show();
            tr.addClass('shown');
        }
   });

   var table2 = $('#skipped_tests_table').DataTable( {
        "ajax": { "dataSrc" : "", "url" : "/results/tempest/job/" + job + "/skipped" },
        "columns": [
            { "title" : "Test Category", "data" : "t\\.test_category" },
            { "title" : "Test Name", "data" : "t\\.name" },
            { "title" : "Reason", "data" : "r\\.reason" }
        ],
        "order": [[1, 'asc']]
   });
});

</script>


</head>
<body>
<h1><img style="vertical-align: middle; width: 150px" src="http://www.linaro.org/app/images/linaro-logo-web.png"/>
Openstack CI</h1>

<h2>Tempest Run - LAVA Job <span id="lava_job"></span> (<span id="date"></span>)</h2>

<table>
<tr><td>Tested Branch:</td><td><strong><span id="branch"></span></strong></td></tr>
<tr><td>Device:</td><td><strong><span id="device"></span></strong></td></tr>
<tr><td>OS Distro / Version:</td><td><strong><span id="os_distro"></span> / <span id="os_version"></span></strong></td></tr>
</table>

<h2>Summary</h2>

<table>
<tr><td>Passing Tests:</td><td><strong><span id="passing_tests"></span></strong></td></tr>
<tr><td>Failing Tests:</td><td><strong><span id="failing_tests"></span></strong></td></tr>
<tr><td>Skipped tests:</td><td><strong><span id="skipped_tests"></span></strong></td></tr>
<tr><td>Total Tests:</td><td><strong><span id="total_tests"></span></strong></td></tr>
</table>

<h2>Logs</h2>
Click here to view the log output: <span id="logs_url"></span>

<h2>Failing Tests</h2>
<table id="failing_tests_table" class="display" cellspacing="0" width="100%"></table>

<h2>Skipped Tests</h2>
<table id="skipped_tests_table" class="display" cellspacing="0" width="100%"></table>

</body>
</html>