import glob import sys import subprocess import os def OSinfo(runthis): red = lambda text: '\033[0;31m' + text + '\033[0m' osstdout = subprocess.Popen(runthis, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) theInfo = osstdout.communicate()[0].strip() if osstdout.returncode!=0: print(red(runthis+" FAILED")) print >> sys.stderr, osstdout.returncode sys.exit() # else: # print(runthis+" OK") def Sort(sub_li): l = len(sub_li) for i in range(0, l): for j in range(0, l-i-1): if (sub_li[j][0] < sub_li[j+1][0]): tempo = sub_li[j] sub_li[j]= sub_li[j+1] sub_li[j+1]= tempo if (sub_li[j][0] == sub_li[j+1][0]): if (sub_li[j][2] < sub_li[j+1][2]): tempo = sub_li[j] sub_li[j]= sub_li[j+1] sub_li[j+1]= tempo if (sub_li[j][1] == sub_li[j+1][1]): if (sub_li[j][2] < sub_li[j+1][2]): tempo = sub_li[j] sub_li[j]= sub_li[j+1] sub_li[j+1]= tempo return sub_li def subgenerate(machine_choice): test_list = glob.glob(machine_choice+"/test_*.txt") if len(test_list) == 0 : return revision_list=[] relurl_list=[] machine_list=[] build_dir_list=[] arch_list=[] mode_list=[] myTestList=[] for test_log in test_list : f=open(test_log, "r") for line in f : if line.startswith("#revision") : revision = line.replace("\n","").split(" ")[1] if not revision in revision_list : revision_list.append(revision) elif line.startswith("#relurl") : relurl = line.replace("\n","").split(" ")[1] if not relurl in relurl_list : relurl_list.append(relurl) elif line.startswith("#machine") : machine = line.replace("\n","").split(" ")[1] if not machine in machine_list : machine_list.append(machine) elif line.startswith("#build_dir") : build_dir = line.replace("\n","").split(" ")[1] tmp_list = build_dir.split("/") short_dir = tmp_list[len(tmp_list)-1] if not build_dir in build_dir_list : build_dir_list.append(short_dir) elif line.startswith("#arch") : arch = line.replace("\n","").split(" ")[1] if not arch in arch_list : arch_list.append(arch) elif line.startswith("#mode") : mode = line.replace("\n","").split(" ")[1] if not mode in mode_list : mode_list.append(mode) myTestList.append([revision, machine, short_dir]) f.close() revision_list = sorted(revision_list, reverse=True) print(revision_list) Sort(myTestList) print(myTestList) machine = machine_choice.replace("test_","") f=open("test_"+machine+"_info.js", "w") f.write("var test_"+machine+"_revision_list = "+repr(revision_list)+"\n\n") f.write("var test_"+machine+"_info_list = "+repr(myTestList)+"\n\n") myReportDict=dict() for i in range(len(myTestList)) : myReportList=[] # algo, config, file, status print(myTestList[i]) file_to_open = machine_choice+"/test_"+myTestList[i][0]+"_"+myTestList[i][1]+"_"+myTestList[i][2].replace("build_","")+".txt" g=open(file_to_open, "r") for line in g : if not line.startswith("#") : line = line.replace("\n","").split(" ") algo = line[0] config = line[1].split("@")[1] file = line[2].split("@")[2] status = line[3] myReportList.append([algo, config, file, status]) g.close() print(len(myReportList)) myReportDict.update({myTestList[i][0]+"_"+myTestList[i][2].replace("build_","") : myReportList}) for i in range(len(myReportDict)) : key = list(myReportDict.keys())[i] f.write("var test_"+machine+"_"+key+" = [\n") for j in range(len(myReportDict[key])) : if j 0 : # if machine_index==0: # f=open("table_jz_main.js", "w") # f.write("function generateJZ()\n") # f.write("{\n") # elif machine_index==1: # f=open("table_irene_main.js", "w") # f.write("function generateIRENE()\n") # f.write("{\n") # else : # f=open("table_other_main.js", "w") # f.write("function generateOTHER()\n") # f.write("{\n") # OSinfo("rm -f "+xios_table_src_list[machine_index]) # for i in range(len(revision_dir_list)) : # tmp_str = (revision_dir_list[i].replace(plein_report_list[machine_index], "").replace(".txt", "")) # tmp_int =(int)(tmp_str[len(tmp_str)-4: len(tmp_str)]) # tmp_build = tmp_str[0 : len(tmp_str)-5] # if not tmp_int in revision_list: # revision_list.append( tmp_int ) # if not tmp_build in build_list: # build_list.append( tmp_build ) # revision_list = sorted(revision_list, reverse = True) # build_list = sorted(build_list, reverse = True) # for revision_number in revision_list: # print("python generate_table.py "+machine_list[machine_index] +" "+repr(revision_number) + " " + plein_report_list[machine_index]) # OSinfo("python generate_table.py "+machine_list[machine_index] +" "+repr(revision_number) + " " + plein_report_list[machine_index]) # if machine_index ==0 : # f.write(" generateTable_JZ_"+repr(revision_number)+"();\n") # elif machine_index ==1 : # f.write(" generateTable_IRENE_"+repr(revision_number)+"();\n") # else: # f.write(" generateTable_OTHER_"+repr(revision_number)+"();\n") # f.write("}\n") # f.close() # f=open("select_src_"+machine_list[machine_index]+".js", "w") # if machine_index == 0: # f.write("function generateForm_jz()\n") # f.write("{\n") # f.write(" var sel = document.getElementById(\"jz_revision\");\n") # elif machine_index == 1: # f.write("function generateForm_irene()\n") # f.write("{\n") # f.write(" var sel = document.getElementById(\"irene_revision\");\n") # else : # f.write("function generateForm_other()\n") # f.write("{\n") # f.write(" var sel = document.getElementById(\"other_revision\");\n") # for revision in revision_list: # f.write(" var opt = document.createElement(\'option\');\n") # f.write(" opt.appendChild( document.createTextNode(\'"+repr(revision)+"\') );\n") # f.write(" opt.value = \'"+repr(revision)+"\'; \n") # f.write(" sel.appendChild(opt); \n") # f.write("}\n\n") # f.close() # for revision in revision_list : # if not revision in all_revision_list : # all_revision_list.append(revision) # all_revision_list = sorted(all_revision_list, reverse = True) def main(): subgenerate("test_jeanzay") subgenerate("test_irene") if __name__== "__main__": main()