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