interop_html_report.template 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head><title>Interop Test Result</title></head>
  4. <body>
  5. <%def name="fill_one_test_result(shortname, resultset)">
  6. % if shortname in resultset:
  7. ## Because interop tests does not have runs_per_test flag, each test is
  8. ## run once. So there should only be one element for each result.
  9. <% result = resultset[shortname][0] %>
  10. % if result.state == 'PASSED':
  11. <td bgcolor="green">PASS</td>
  12. % else:
  13. <%
  14. tooltip = ''
  15. if result.returncode > 0 or result.message:
  16. if result.returncode > 0:
  17. tooltip = 'returncode: %d ' % result.returncode
  18. if result.message:
  19. tooltip = '%smessage: %s' % (tooltip, result.message)
  20. %>
  21. % if result.state == 'FAILED':
  22. <td bgcolor="red">
  23. % if tooltip:
  24. <a href="#" data-toggle="tooltip" data-placement="auto" title="${tooltip | h}">FAIL</a></td>
  25. % else:
  26. FAIL</td>
  27. % endif
  28. % elif result.state == 'TIMEOUT':
  29. <td bgcolor="yellow">
  30. % if tooltip:
  31. <a href="#" data-toggle="tooltip" data-placement="auto" title="${tooltip | h}">TIMEOUT</a></td>
  32. % else:
  33. TIMEOUT</td>
  34. % endif
  35. % endif
  36. % endif
  37. % else:
  38. <td bgcolor="magenta">Not implemented</td>
  39. % endif
  40. </%def>
  41. <%def name="fill_one_http2_test_result(shortname, resultset)">
  42. ## keep this mostly in sync with the template above
  43. % if shortname in resultset:
  44. ## Because interop tests does not have runs_per_test flag, each test is
  45. ## run once. So there should only be one element for each result.
  46. <% result = resultset[shortname][0] %>
  47. % if result.http2results:
  48. <td bgcolor="white">
  49. <div style="width:95%; border: 1px solid black; position: relative; padding: 3px;">
  50. <span style="position: absolute; left: 45%;">${int(result.http2results['percent'] * 100)}&#37;</span>
  51. <div style="height: 20px;
  52. background-color: hsl(${result.http2results['percent'] * 120}, 100%, 50%);
  53. width: ${result.http2results['percent'] * 100}%;"
  54. title="${result.http2results['failed_cases'] | h}"></div>
  55. </div>
  56. </td>
  57. % else:
  58. <td bgcolor="red">No result is found!</td>
  59. % endif
  60. % else:
  61. <td bgcolor="magenta">Not implemented</td>
  62. % endif
  63. </%def>
  64. <%def name="display_cloud_to_prod_result(prod_server)">
  65. ## Each column header is the client language.
  66. <table style="width:100%" border="1">
  67. <tr bgcolor="#00BFFF">
  68. <th>Client languages &#9658;<br/>Test Cases &#9660;</th>
  69. % for client_lang in client_langs:
  70. <th>${client_lang}</th>
  71. % endfor
  72. </tr>
  73. % for test_case in test_cases + auth_test_cases:
  74. <tr><td><b>${test_case}</b></td>
  75. % for client_lang in client_langs:
  76. <%
  77. if test_case in auth_test_cases:
  78. shortname = 'cloud_to_prod_auth:%s:%s:%s' % (
  79. prod_server, client_lang, test_case)
  80. else:
  81. shortname = 'cloud_to_prod:%s:%s:%s' % (
  82. prod_server, client_lang, test_case)
  83. %>
  84. ${fill_one_test_result(shortname, resultset)}
  85. % endfor
  86. </tr>
  87. % endfor
  88. </table>
  89. </%def>
  90. % if num_failures > 1:
  91. <p><h2><font color="red">${num_failures} tests failed!</font></h2></p>
  92. % elif num_failures:
  93. <p><h2><font color="red">${num_failures} test failed!</font></h2></p>
  94. % else:
  95. <p><h2><font color="green">All tests passed!</font></h2></p>
  96. % endif
  97. % if cloud_to_prod:
  98. % for prod_server in prod_servers:
  99. <h2>Cloud to ${prod_server}</h2>
  100. ${display_cloud_to_prod_result(prod_server)}
  101. % endfor
  102. % endif
  103. % if http2_server_cases:
  104. <h2>HTTP/2 Server Tests</h2>
  105. ## Each column header is the client language.
  106. <table style="width:100%" border="1">
  107. <tr bgcolor="#00BFFF">
  108. <th>Client languages &#9658;<br/>Test Cases &#9660;</th>
  109. % for client_lang in client_langs:
  110. <th>${client_lang}</th>
  111. % endfor
  112. </tr>
  113. % for test_case in http2_server_cases:
  114. <tr><td><b>${test_case}</b></td>
  115. % for client_lang in client_langs:
  116. <%
  117. shortname = 'cloud_to_cloud:%s:http2_server:%s' % (client_lang,
  118. test_case)
  119. %>
  120. ${fill_one_test_result(shortname, resultset)}
  121. % endfor
  122. </tr>
  123. % endfor
  124. </table>
  125. % endif
  126. % if http2_interop:
  127. ## Each column header is the server language.
  128. <h2>HTTP/2 Interop</h2>
  129. <table style="width:100%" border="1">
  130. <tr bgcolor="#00BFFF">
  131. <th>Servers &#9658;<br/>Test Cases &#9660;</th>
  132. % for server_lang in server_langs:
  133. <th>${server_lang}</th>
  134. % endfor
  135. % if cloud_to_prod:
  136. % for prod_server in prod_servers:
  137. <th>${prod_server}</th>
  138. % endfor
  139. % endif
  140. </tr>
  141. % for test_case in http2_cases:
  142. <tr><td><b>${test_case}</b></td>
  143. ## Fill up the cells with test result.
  144. % for server_lang in server_langs:
  145. <%
  146. shortname = 'cloud_to_cloud:http2:%s_server:%s' % (
  147. server_lang, test_case)
  148. %>
  149. ${fill_one_http2_test_result(shortname, resultset)}
  150. % endfor
  151. % if cloud_to_prod:
  152. % for prod_server in prod_servers:
  153. <% shortname = 'cloud_to_prod:%s:http2:%s' % (prod_server, test_case) %>
  154. ${fill_one_http2_test_result(shortname, resultset)}
  155. % endfor
  156. % endif
  157. </tr>
  158. % endfor
  159. </table>
  160. % endif
  161. % if server_langs:
  162. % for test_case in test_cases:
  163. ## Each column header is the client language.
  164. <h2>${test_case}</h2>
  165. <table style="width:100%" border="1">
  166. <tr bgcolor="#00BFFF">
  167. <th>Client languages &#9658;<br/>Server languages &#9660;</th>
  168. % for client_lang in client_langs:
  169. <th>${client_lang}</th>
  170. % endfor
  171. </tr>
  172. ## Each row head is the server language.
  173. % for server_lang in server_langs:
  174. <tr>
  175. <td><b>${server_lang}</b></td>
  176. % for client_lang in client_langs:
  177. <%
  178. shortname = 'cloud_to_cloud:%s:%s_server:%s' % (
  179. client_lang, server_lang, test_case)
  180. %>
  181. ${fill_one_test_result(shortname, resultset)}
  182. % endfor
  183. </tr>
  184. % endfor
  185. </table>
  186. % endfor
  187. % endif
  188. <script>
  189. $(document).ready(function(){$('[data-toggle="tooltip"]').tooltip();});
  190. </script>
  191. </body>
  192. </html>