- Timestamp:
- 11/26/19 13:55:31 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/generate_table.py
r1775 r1776 1 2 import array as arr 3 import collections 4 import glob 1 5 import os 2 6 import sys 3 import array as arr 4 import collections 7 import subprocess 8 import socket 9 import os.path 10 from os import path 5 11 6 12 from collections import Counter … … 12 18 file.read(0) 13 19 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 18 25 19 26 def configname_list_generator(file_to_open): … … 22 29 file.read(0) 23 30 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 28 36 29 37 def foldername_list_generator(file_to_open): … … 33 41 file.read(0) 34 42 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 39 48 40 49 def result_list_generator(file_to_open): … … 43 52 file.read(0) 44 53 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 49 59 50 60 def 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") 51 70 52 71 def 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 56 79 else : 57 80 file_to_open="plein_report_example.txt" 58 81 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 59 104 folderlist=[] 60 105 for x in foldername_list_generator(file_to_open): … … 233 278 file_list[x] = new_word 234 279 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>❌ : Failed</li><li>❎ : Initialized</li><li>✅ : 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\">🔽</span>\n") 259 f.write(" <span id=\"icon_level1_2\" onclick=\"level1_fold();\" style=\"display:none\" title=\"fold\">🔼</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\">🔽</span>\n") 276 f.write(" <span id=\"icon_level2_"+algo_list[x]+"_2\" onClick=\"level2_fold(\'"+algo_list[x]+"\');\" style=\"display:none\" title=\"fold\">🔼</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") 277 307 f.write(" <td><div class=\"dropdown\"><button class=\"dropbtn\">🔎</button>\n") 278 308 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") 280 311 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") 286 318 f.write(" </tr>\n") 287 319 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") 290 325 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\">🔽</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\">🔼</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") 294 328 f.write(" <td><div class=\"dropdown\"><button class=\"dropbtn\">🔎</button>\n") 295 329 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") 298 331 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") 305 337 f.write(" </tr>\n") 306 338 307 for z in range(nb_files[x]):308 f.write(" <tr class=\"level 4_"+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") 309 341 f.write(" <td></td>\n") 310 342 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\">🔎</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 313 352 f.write(" <td></td>\n") 314 353 f.write(" <td></td>\n") 354 f.write(" <td class=\"testanswer\">"+ ans_dict[level3_answer[x][y]]+"</td>\n") 315 355 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") 336 387 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() 346 397 347 398
Note: See TracChangeset
for help on using the changeset viewer.