Ignore:
Timestamp:
11/26/19 13:55:31 (5 years ago)
Author:
yushan
Message:

dev_trunk_omp : update xios_report.html

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/generate_table.py

    r1775 r1776  
     1 
     2import array as arr 
     3import collections 
     4import glob 
    15import os 
    26import sys 
    3 import array as arr 
    4 import collections 
     7import subprocess 
     8import socket 
     9import os.path 
     10from os import path 
    511 
    612from collections import Counter 
     
    1218        file.read(0) 
    1319        for line in file: 
    14             for word in line.split(" "): 
    15                 if word.endswith(".nc") or word.endswith("_nc_files"): 
    16                     yield word 
    17                     break 
     20            if not line.startswith("#"): 
     21                for word in line.split(" "): 
     22                    if word.endswith(".nc") or word.endswith("_nc_files"): 
     23                        yield word 
     24                        break 
    1825 
    1926def configname_list_generator(file_to_open): 
     
    2229        file.read(0) 
    2330        for line in file: 
    24             for word in line.split(" "): 
    25                 if "config_" in word: 
    26                     yield word 
    27                     break 
     31            if not line.startswith("#"): 
     32                for word in line.split(" "): 
     33                    if "config_" in word: 
     34                        yield word 
     35                        break 
    2836 
    2937def foldername_list_generator(file_to_open): 
     
    3341        file.read(0) 
    3442        for line in file: 
    35             for word in line.split(" "): 
    36                 if word.startswith("test_"): 
    37                     yield word 
    38                     break 
     43            if not line.startswith("#"): 
     44                for word in line.split(" "): 
     45                    if word.startswith("test_"): 
     46                        yield word 
     47                        break 
    3948 
    4049def result_list_generator(file_to_open): 
     
    4352        file.read(0) 
    4453        for line in file: 
    45             for word in line.split(" "): 
    46                 if word == '-1' or word == '0' or word == '1': 
    47                     yield(word) 
    48                     break 
     54            if not line.startswith("#"): 
     55                for word in line.split(" "): 
     56                    if word == '-1' or word == '0' or word == '1': 
     57                        yield(word) 
     58                        break 
    4959                 
    50               
     60def OSinfo(runthis): 
     61        red = lambda text: '\033[0;31m' + text + '\033[0m' 
     62        osstdout = subprocess.Popen(runthis, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) 
     63        theInfo = osstdout.communicate()[0].strip() 
     64        if osstdout.returncode!=0: 
     65                print(red(runthis+" FAILED")) 
     66                print >> sys.stderr, osstdout.returncode 
     67                sys.exit() 
     68        # else: 
     69                # print(runthis+" OK")     
    5170 
    5271def main(): 
    53  
    54     if os.path.exists('plein_report.txt') : 
    55         file_to_open="plein_report.txt" 
     72    unfold_icon = '⮯' 
     73    fold_icon = '⮭' 
     74 
     75    current_revision_report = sys.argv[1] 
     76 
     77    if os.path.exists(current_revision_report) : 
     78        file_to_open=current_revision_report 
    5679    else : 
    5780        file_to_open="plein_report_example.txt" 
    5881 
     82 
     83    f=open(file_to_open, "r") 
     84    for line in f : 
     85        if line.startswith("#revision"): 
     86            revision_number = line.split(" ")[1].replace("\n", "") 
     87        elif line.startswith("#build_dir"): 
     88            build_dir = line.split(" ")[1].replace("\n", "") 
     89        elif line.startswith("#arch"): 
     90            arch = line.split(" ")[1].replace("\n", "") 
     91        elif line.startswith("#machine"): 
     92            machine = line.split(" ")[1].replace("\n", "") 
     93            if machine == "jeanzay": 
     94                machine = "Jean-Zay" 
     95            elif machine == "irene": 
     96                machine = "Irene" 
     97            else : 
     98                machine = "other" 
     99        elif line.startswith("#relurl"): 
     100            words = line.split("/") 
     101            words_size = len(words) 
     102            branch = words[words_size-1].replace("\n", "") 
     103             
    59104    folderlist=[] 
    60105    for x in foldername_list_generator(file_to_open): 
     
    233278        file_list[x] = new_word 
    234279 
    235  
    236     f=open("xios_table.js", "w") 
    237     f.write("document.write(`\n") 
    238     f.write("<html>\n") 
    239     f.write("<head>\n") 
    240     f.write("</head>\n") 
    241     f.write("<body>\n") 
    242     f.write("   <table id=\"xiostable\">\n") 
    243     f.write("       <thead></thead>\n") 
    244     f.write("       <tfoot></tfoot>\n") 
    245     f.write("       <tbody>\n") 
    246     f.write("           <tr class=\"level0\" style=\"background-color:#85c1e9;font-size:1em;\" >\n") 
    247     f.write("               <td><p>src : "+file_to_open+"</p>\n") 
    248     f.write("               <p><ul><li>&#10060; : Failed</li><li>&#10062; : Initialized</li><li>&#9989; : Passed</li></ul></p></tb>\n") 
    249     f.write("               <td></td>\n") 
    250     f.write("               <td></td>\n") 
    251     f.write("               <td></td>\n") 
    252     f.write("               <td></td>\n") 
    253     f.write("               <td></td>\n") 
    254     f.write("               <td></td>\n") 
    255     f.write("               <td></td>\n") 
    256     f.write("           </tr>\n") 
    257     f.write("           <tr class=\"level1\" style=\"background-color:#85c1e9;font-size:1.6em;\" >\n") 
    258     f.write("               <td>XIOS Unit tests <span id=\"icon_level1_1\" onclick=\"level1_unfold();\" style=\"display:inline\" title=\"unfold\">&#128317;</span>\n") 
    259     f.write("                                   <span id=\"icon_level1_2\" onclick=\"level1_fold();\" style=\"display:none\" title=\"fold\">&#128316;</span></td>\n") 
    260     f.write("               <td></td>\n") 
    261     f.write("               <td></td>\n") 
    262     f.write("               <td></td>\n") 
    263     f.write("               <td style=\"border-left: 0px\" class=\"testanswer\">"+ ans_dict[level1_answer]+"</td>\n") 
    264     f.write("               <td></td>\n") 
    265     f.write("               <td></td>\n") 
    266     f.write("               <td></td>\n") 
    267     f.write("           </tr>\n") 
    268          
    269      
    270     x_offset = 0 
    271     y_offset = 0 
    272     for x in range(nb_algo): 
    273         f.write("           <tr class=\"level2\" data-algo-type=\""+algo_list[x]+"\" style=\"display:none;background-color:#aed6f1;font-size:1.4em;\">\n") 
    274         f.write("               <td></td>\n") 
    275         f.write("               <td>"+algo_list[x]+" <span id=\"icon_level2_"+algo_list[x]+"_1\" onClick=\"level2_unfold(\'"+algo_list[x]+"\');\" style=\"display:inline\" title=\"unfold\">&#128317;</span>\n") 
    276         f.write("                                    <span id=\"icon_level2_"+algo_list[x]+"_2\" onClick=\"level2_fold(\'"+algo_list[x]+"\');\" style=\"display:none\" title=\"fold\">&#128316;</span></td>\n") 
     280    if os.path.exists("xios_table_"+revision_number+".js") :  
     281        print("table for revision "+revision_number+" exists already") 
     282    else : 
     283        f=open("xios_table_"+revision_number+".js", "w") 
     284        f.write("document.write(`\n") 
     285        f.write("<html>\n") 
     286        f.write("<head>\n") 
     287        f.write("</head>\n") 
     288        f.write("<body>\n") 
     289        f.write("   <div id=\"navborder_"+revision_number+"\" class=\"class_navborder\">\n") 
     290        f.write("       <p id=\"xiosinfo\">Information of XIOS source:</p>\n") 
     291        f.write("       <table id=\"xiosinfotable\">\n") 
     292        f.write("           <tr><td>Branch</td><td><em>"+branch+"</em></td></tr>\n") 
     293        f.write("           <tr><td>Revision</td><td><em>"+revision_number+"</em></td></tr>\n") 
     294        f.write("           <tr><td>Machine</td><td><em>"+machine+"</em></td></tr>\n") 
     295        f.write("           <tr><td>Architecture</td><td><em>"+arch+"</em></td></tr>\n") 
     296        f.write("           <tr><td>Compile mode</td><td><em>prod</em></td></tr>\n") 
     297        f.write("           <tr><td>Build directory</td><td><em>"+build_dir+"</em></td></tr>\n") 
     298        f.write("       </table>\n") 
     299        f.write("   </div>\n")    
     300        f.write("   <table id=\"xiostable_"+revision_number+"\" class=\"class_xiostable\">\n") 
     301        f.write("       <thead></thead>\n") 
     302        f.write("       <tfoot></tfoot>\n") 
     303        f.write("       <tbody>\n") 
     304        f.write("           <tr class=\"level1\" style=\"background-color:#85c1e9;font-size:1.6em;\" >\n") 
     305        f.write("               <td>"+revision_number+" XIOS Unit tests <span id=\""+revision_number+"_icon_level1_1\" onclick=\"level1_unfold(\'"+revision_number+"\');\" style=\"display:inline\" title=\"unfold\">"+unfold_icon+"</span>\n") 
     306        f.write("                                   <span id=\""+revision_number+"_icon_level1_2\" onclick=\"level1_fold(\'"+revision_number+"\');\" style=\"display:none\" title=\"fold\">"+fold_icon+"</span></td>\n") 
    277307        f.write("               <td><div class=\"dropdown\"><button class=\"dropbtn\">&#128270;</button>\n") 
    278308        f.write("               <div class=\"dropdown-content\">\n") 
    279         f.write("               <a href=\"#\" onclick=\"show_param_"+algo_list[x]+"()\">show user_params.def</a>\n") 
     309        f.write("               <a href=\"#\" onclick=\"show_xios_info(\'"+revision_number+"\')\">show/hide XIOS info</a>\n") 
     310        f.write("               <a href=\"#\" onclick=\"show_plein_report(\'"+revision_number+"\')\">show plein report</a>\n") 
    280311        f.write("               </div></div></td>\n") 
    281         f.write("               <td> </td>\n") 
    282         f.write("               <td> </td>\n") 
    283         f.write("               <td class=\"testanswer\">"+ans_dict[level2_answer[x]]+"</td>\n") 
    284         f.write("               <td> </td>\n") 
    285         f.write("               <td> </td>\n") 
     312        f.write("               <td></td>\n") 
     313        f.write("               <td></td>\n") 
     314        f.write("               <td style=\"border-left: 0px\" class=\"testanswer\">"+ ans_dict[level1_answer]+"</td>\n") 
     315        f.write("               <td></td>\n") 
     316        f.write("               <td></td>\n") 
     317        f.write("               <td></td>\n") 
    286318        f.write("           </tr>\n") 
    287319         
    288         for y in range(nb_configs[x]): 
    289             f.write("           <tr class=\"level3_"+algo_list[x]+"\" data-algoconfig-type=\""+algo_list[x]+"_"+old_config_list[y_offset]+"\" style=\"display:none;background-color:#d6eaf8;font-size:1.2em;\">\n") 
     320     
     321        x_offset = 0 
     322        y_offset = 0 
     323        for x in range(nb_algo): 
     324            f.write("           <tr class=\"level2\" data-algo-type=\""+algo_list[x]+"\" style=\"display:none;background-color:#aed6f1;font-size:1.4em;\">\n") 
    290325            f.write("               <td></td>\n") 
    291             f.write("               <td></td>\n") 
    292             f.write("               <td>"+config_list[y_offset]+" <span id=\"icon_level3_"+algo_list[x]+"_"+old_config_list[y_offset]+"_1\" onClick=\"level3_unfold(\'"+algo_list[x]+"_"+old_config_list[y_offset]+"\');\" style=\"display:inline\" title=\"unfold\">&#128317;</span>\n") 
    293             f.write("                                             <span id=\"icon_level3_"+algo_list[x]+"_"+old_config_list[y_offset]+"_2\" onClick=\"level3_fold(\'"+algo_list[x]+"_"+old_config_list[y_offset]+"\');\" style=\"display:none\" title=\"fold\">&#128316;</span></td>\n") 
     326            f.write("               <td>"+algo_list[x]+" <span id=\""+revision_number+"_icon_level2_"+algo_list[x]+"_1\" onClick=\"level2_unfold(\'"+revision_number+"\',\'"+algo_list[x]+"\');\" style=\"display:inline\" title=\"unfold\">"+unfold_icon+"</span>\n") 
     327            f.write("                                    <span id=\""+revision_number+"_icon_level2_"+algo_list[x]+"_2\" onClick=\"level2_fold(\'"+revision_number+"\',\'"+algo_list[x]+"\');\" style=\"display:none\" title=\"fold\">"+fold_icon+"</span></td>\n") 
    294328            f.write("               <td><div class=\"dropdown\"><button class=\"dropbtn\">&#128270;</button>\n") 
    295329            f.write("               <div class=\"dropdown-content\">\n") 
    296             f.write("               <a href=\"#\" onclick=\"show_param_"+algo_list[x]+"_config("+repr(old_config_list[y_offset])+")\">show all_param.def</a>\n") 
    297             f.write("               <a href=\"#\" onclick=\"show_user_param_"+algo_list[x]+"_config("+repr(old_config_list[y_offset])+")\">show user_param.def</a>\n") 
     330            f.write("               <a href=\"#\" onclick=\"show_param_"+algo_list[x]+"(\'"+revision_number+"\')\">show user_params.def</a>\n") 
    298331            f.write("               </div></div></td>\n") 
    299             y_position=y_offset 
    300             y_offset+=1 
    301             f.write("               <td></td>\n") 
    302             f.write("               <td></td>\n") 
    303             f.write("               <td class=\"testanswer\">"+ ans_dict[level3_answer[x][y]]+"</td>\n") 
    304             f.write("               <td></td>\n") 
     332            f.write("               <td> </td>\n") 
     333            f.write("               <td> </td>\n") 
     334            f.write("               <td class=\"testanswer\">"+ans_dict[level2_answer[x]]+"</td>\n") 
     335            f.write("               <td> </td>\n") 
     336            f.write("               <td> </td>\n") 
    305337            f.write("           </tr>\n") 
    306338 
    307             for z in range(nb_files[x]): 
    308                 f.write("           <tr class=\"level4_"+algo_list[x]+"_"+old_config_list[y_position]+"\" style=\"display:none;background-color:#ebf5fb;\">\n") 
     339            for y in range(nb_configs[x]): 
     340                f.write("           <tr class=\"level3_"+algo_list[x]+"\" data-algoconfig-type=\""+algo_list[x]+"_"+old_config_list[y_offset]+"\" style=\"display:none;background-color:#d6eaf8;font-size:1.2em;\">\n") 
    309341                f.write("               <td></td>\n") 
    310342                f.write("               <td></td>\n") 
    311                 f.write("               <td></td>\n") 
    312                 f.write("               <td>"+file_list[x_offset+z]+"</td>\n") 
     343                f.write("               <td>"+config_list[y_offset]+" <span id=\""+revision_number+"_icon_level3_"+algo_list[x]+"_"+old_config_list[y_offset]+"_1\" onClick=\"level3_unfold(\'"+revision_number+"\',\'"+algo_list[x]+"_"+old_config_list[y_offset]+"\');\" style=\"display:inline\" title=\"unfold\">"+unfold_icon+"</span>\n") 
     344                f.write("                                             <span id=\""+revision_number+"_icon_level3_"+algo_list[x]+"_"+old_config_list[y_offset]+"_2\" onClick=\"level3_fold(\'"+revision_number+"\',\'"+algo_list[x]+"_"+old_config_list[y_offset]+"\');\" style=\"display:none\" title=\"fold\">"+fold_icon+"</span></td>\n") 
     345                f.write("               <td><div class=\"dropdown\"><button class=\"dropbtn\">&#128270;</button>\n") 
     346                f.write("               <div class=\"dropdown-content\">\n") 
     347                f.write("               <a href=\"#\" onclick=\"show_param_"+algo_list[x]+"_config(\'"+revision_number+"\',"+repr(old_config_list[y_offset])+")\">show all_param.def</a>\n") 
     348                f.write("               <a href=\"#\" onclick=\"show_user_param_"+algo_list[x]+"_config(\'"+revision_number+"\',"+repr(old_config_list[y_offset])+")\">show user_param.def</a>\n") 
     349                f.write("               </div></div></td>\n") 
     350                y_position=y_offset 
     351                y_offset+=1 
    313352                f.write("               <td></td>\n") 
    314353                f.write("               <td></td>\n") 
     354                f.write("               <td class=\"testanswer\">"+ ans_dict[level3_answer[x][y]]+"</td>\n") 
    315355                f.write("               <td></td>\n") 
    316                 f.write("               <td class=\"testanswer\">"+ ans_dict[level4_answer[x][y][z]]+"</td>\n") 
    317                 f.write("            </tr>\n") 
    318  
    319         x_offset = x_offset+nb_files[x] 
    320      
    321     f.write("       </tbody>\n") 
    322     f.write("   </table>\n") 
    323     f.write("<script>\n") 
    324     f.write("   var ans = document.getElementsByClassName('testanswer')\n") 
    325     f.write("   for (var i = 0; i < ans.length; i++) {\n") 
    326     f.write("       var cell = ans[i]\n") 
    327     f.write("       if (cell.textContent == 'Passed') {\n") 
    328     f.write("           cell.classList.add('green') }\n") 
    329     f.write("       else if (cell.textContent == 'Failed') {\n") 
    330     f.write("           cell.classList.add('red') }\n") 
    331     f.write("       else if (cell.textContent == 'Initialized') {\n") 
    332     f.write("           cell.classList.add('goldenrod') }\n") 
    333     f.write("   }\n") 
    334  
    335     f.write("\n\n") 
     356                f.write("           </tr>\n") 
     357 
     358                for z in range(nb_files[x]): 
     359                    f.write("           <tr class=\"level4_"+algo_list[x]+"_"+old_config_list[y_position]+"\" style=\"display:none;background-color:#ebf5fb;\">\n") 
     360                    f.write("               <td></td>\n") 
     361                    f.write("               <td></td>\n") 
     362                    f.write("               <td></td>\n") 
     363                    f.write("               <td>"+file_list[x_offset+z]+"</td>\n") 
     364                    f.write("               <td></td>\n") 
     365                    f.write("               <td></td>\n") 
     366                    f.write("               <td></td>\n") 
     367                    f.write("               <td class=\"testanswer\">"+ ans_dict[level4_answer[x][y][z]]+"</td>\n") 
     368                    f.write("            </tr>\n") 
     369 
     370            x_offset = x_offset+nb_files[x] 
     371 
     372        f.write("       </tbody>\n") 
     373        f.write("   </table>\n") 
     374        # f.write("<script>\n") 
     375        # f.write("   var ans = document.getElementsByClassName('testanswer')\n") 
     376        # f.write("   for (var i = 0; i < ans.length; i++) {\n") 
     377        # f.write("       var cell = ans[i]\n") 
     378        # f.write("       if (cell.textContent == 'Passed') {\n") 
     379        # f.write("           cell.classList.add('green') }\n") 
     380        # f.write("       else if (cell.textContent == 'Failed') {\n") 
     381        # f.write("           cell.classList.add('red') }\n") 
     382        # f.write("       else if (cell.textContent == 'Initialized') {\n") 
     383        # f.write("           cell.classList.add('goldenrod') }\n") 
     384        # f.write("   }\n") 
     385 
     386        # f.write("\n\n") 
    336387    
    337     f.write("</script>\n") 
    338  
    339     f.write("</body>\n") 
    340     f.write("</html>\n") 
    341     f.write("`);\n") 
    342  
    343  
    344  
    345     f.close() 
     388        # f.write("</script>\n") 
     389 
     390        f.write("</body>\n") 
     391        f.write("</html>\n") 
     392        f.write("`);\n") 
     393 
     394 
     395 
     396        f.close() 
    346397 
    347398     
Note: See TracChangeset for help on using the changeset viewer.