Changeset 1841 for XIOS/trunk/xios_test_suite/TEST_SUITE/setup.py
- Timestamp:
- 01/02/20 19:10:21 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/xios_test_suite/TEST_SUITE/setup.py
r1806 r1841 1 1 import os 2 2 import sys 3 import json 4 import itertools 3 5 6 from param_list import * 4 7 5 def main(): 8 def getlabel(sub_list_element, level): 9 label="" 10 for l in range(level): 11 label = label+sub_list_element[l]+"_" 12 return label 6 13 7 black = lambda text: '\033[0;30m' + text + '\033[0m' 8 red = lambda text: '\033[0;31m' + text + '\033[0m' 9 green = lambda text: '\033[0;32m' + text + '\033[0m' 10 yellow = lambda text: '\033[0;33m' + text + '\033[0m' 11 blue = lambda text: '\033[0;34m' + text + '\033[0m' 12 magenta = lambda text: '\033[0;35m' + text + '\033[0m' 13 cyan = lambda text: '\033[0;36m' + text + '\033[0m' 14 lgray = lambda text: '\033[0;37m' + text + '\033[0m' 15 dgray = lambda text: '\033[1;30m' + text + '\033[0m' 16 lred = lambda text: '\033[1;32m' + text + '\033[0m' 17 lgreen = lambda text: '\033[1;32m' + text + '\033[0m' 18 lyellow = lambda text: '\033[1;33m' + text + '\033[0m' 19 lblue = lambda text: '\033[1;34m' + text + '\033[0m' 20 lpurple = lambda text: '\033[1;35m' + text + '\033[0m' 21 lcyan = lambda text: '\033[1;36m' + text + '\033[0m' 22 white = lambda text: '\033[1;37m' + text + '\033[0m' 14 def MySort(sub_list, level): 15 l=len(sub_list) 16 for i in range(0,l): 17 for j in range(0, l-i-1): 18 if(getlabel(sub_list[j], level) > getlabel(sub_list[j+1], level)): 19 tempo = sub_list[j] 20 sub_list[j]= sub_list[j+1] 21 sub_list[j+1]= tempo 22 return sub_list 23 23 24 default_nb_config = 7 24 def main() : 25 26 param_length = len(param_list) 27 param = [""]*param_length 28 29 30 f=open("user_param.json", 'r') 31 config_dict = json.load(f) 32 f.close() 33 34 f=open("default_param.json", 'r') 35 def_config = json.load(f) 36 f.close() 37 38 default_config=[""]*param_length 39 f=open("default_param.py", "w") 40 for i in range(param_length): 41 default_config[i] = str(def_config[0][param_list[i]]) 42 f.write(param_list[i]+" = "+str(def_config[0][param_list[i]])+"\n") 43 f.close() 44 45 config_list=[] 46 47 for config_set in config_dict: 48 sub_list=[] 49 for l in range(param_length): 50 if param_list[l] in config_set: 51 param[l]=config_set[param_list[l]].split(" ") 52 for i in range(len(param[l])) : 53 param[l][i] = [str(param[l][i])] 54 else : 55 param[l]=['_'] 56 57 for l in range(len(param_list)): 58 if not sub_list: 59 sub_list = list(param[l]) 60 else: 61 tmp_sub_list = list(itertools.product(sub_list,list(param[l]))) 62 sub_list=[] 63 for i in range(len(tmp_sub_list)): 64 sub_list.append(list(tmp_sub_list[i])) 65 for i in range(len(sub_list)): 66 sub_list[i] = list(itertools.chain(*sub_list[i])) 67 68 for i in range(len(sub_list)): 69 config_list.append(sub_list[i]) 70 71 72 param=[""]*param_length 73 74 config_list=MySort(config_list, param_length) 75 76 77 for i in range(len(config_list)): 78 print(config_list[i]) 79 80 81 full_config_list=[[]]*len(config_list) 82 83 for i in range(len(config_list)): 84 full_config_list[i] = list(config_list[i]) 85 for j in range(param_length): 86 if full_config_list[i][j]=='_': 87 full_config_list[i][j] = default_config[j] 88 # print(full_config_list[i]) 89 90 for i in range(len(config_list)): 91 f=open("user_param.py."+repr(i), "w") 92 for j in range(param_length): 93 if not config_list[i][j] == "_": 94 f.write(param_list[j]+" = "+config_list[i][j]+"\n") 95 f.close() 96 97 f=open("CMakeLists.txt", "w") 98 f.write("##############################\n") 99 f.write("# file generated by setup.py #\n") 100 f.write("# DO NOT modify #\n") 101 f.write("##############################\n\n") 102 f.write("cmake_minimum_required(VERSION 2.8.12.2)\n\n") 103 f.write("project(generic_testcase)\n\n") 104 f.write("find_package(PythonInterp REQUIRED)\n\n") 105 f.write("enable_testing()\n\n") 106 dirpath = os.getcwd() 107 foldername = os.path.basename(os.getcwd()) 108 print(foldername) 109 110 for x in range(len(config_list)): 111 f.write("add_test( NAME "+foldername+"_config"+repr(x)+'\n') 112 f.write(" COMMAND ${PYTHON_EXECUTABLE}\n") 113 f.write(" ${CMAKE_CURRENT_BINARY_DIR}/run_test_"+repr(x)+".py\n") 114 f.write(" "+foldername+"_config"+repr(x)+")\n\n") 115 f.write("set_tests_properties("+foldername+"_config"+repr(x)+" PROPERTIES\n") 116 f.write(" FAIL_REGULAR_EXPRESSION \"check.py failed;execution failed;failed;setup.sh failed; machine unknown\")\n\n") 25 117 26 nb_config = 1; 27 configs = [0]*default_nb_config 28 29 configs_arg = [[], [], [], [], [], [], []] 118 g=open("run_test_"+repr(x)+".py", "w") 119 g.write("##############################\n") 120 g.write("# file generated by setup.py #\n") 121 g.write("# DO NOT modify #\n") 122 g.write("##############################\n\n") 123 g.write("import os\n") 124 g.write("import sys\n") 125 g.write("import subprocess\n") 126 30 127 31 f=open("user_params.def", "r") 32 for line in f: 33 line = line.strip() 34 if len(line) != 0: 35 if not line.startswith("#"): 36 nb_config = nb_config * (line.count(",")+1) 37 line = line.replace(",", "") 38 line = line.replace("=", "") 39 if line.startswith("UsingServer2"): 40 line = line.replace("UsingServer2", "") 41 for word in line.split(): 42 configs[0] += 1 43 configs_arg[0].append('UsingServer2 = '+word) 44 elif line.startswith("RatioServer2"): 45 line = line.replace("RatioServer2", "") 46 for word in line.split(): 47 configs[1] += 1 48 configs_arg[1].append('RatioServer2 = '+word) 49 elif line.startswith("NumberPoolsServer2"): 50 line = line.replace("NumberPoolsServer2", "") 51 for word in line.split(): 52 configs[2] += 1 53 configs_arg[2].append('NumberPoolsServer2 = '+word) 54 elif line.startswith("NumberClients"): 55 line = line.replace("NumberClients", "") 56 for word in line.split(): 57 configs[3] += 1 58 configs_arg[3].append('NumberClients = '+word) 59 elif line.startswith("NumberServers"): 60 line = line.replace("NumberServers", "") 61 for word in line.split(): 62 configs[4] += 1 63 configs_arg[4].append('NumberServers = '+word) 64 elif line.startswith("Duration"): 65 line = line.replace("Duration", "") 66 for word in line.split(): 67 configs[5] += 1 68 configs_arg[5].append('Duration = '+word) 69 elif line.startswith("ATMdomain"): 70 line = line.replace("ATMdomain", "") 71 for word in line.split(): 72 configs[6] += 1 73 configs_arg[6].append('ATMdomain = '+word) 128 g.write("\ndef main():\n") 129 g.write(" os.system(\'rm -f user_param.py\')\n") 130 g.write(" os.system(\'cp user_param.py."+repr(x)+" user_param.py\')\n") 131 g.write(" os.system(\'./run_sub_test.sh\')\n") 132 g.write("if __name__== \"__main__\":\n") 133 g.write(" main()\n") 134 g.close() 135 136 f.close() 74 137 75 76 for x in range(default_nb_config): 77 if configs[x]==0: 78 configs[x] =1 79 80 config_id=0 81 for i0 in range(configs[0]): 82 hasContent0 = len(configs_arg[0])>0 83 for i1 in range(configs[1]): 84 hasContent1 = len(configs_arg[1])>0 85 for i2 in range(configs[2]): 86 hasContent2 = len(configs_arg[2])>0 87 for i3 in range(configs[3]): 88 hasContent3 = len(configs_arg[3])>0 89 for i4 in range(configs[4]): 90 hasContent4 = len(configs_arg[4])>0 91 for i5 in range(configs[5]): 92 hasContent5 = len(configs_arg[5])>0 93 for i6 in range(configs[6]): 94 hasContent6 = len(configs_arg[6])>0 95 96 filename = "user_param.py."+repr(config_id) 97 g = open(filename, "w") 98 99 if hasContent0: g.write(configs_arg[0][i0]+'\n') 100 if hasContent1: g.write(configs_arg[1][i1]+'\n') 101 if hasContent2: g.write(configs_arg[2][i2]+'\n') 102 if hasContent3: g.write(configs_arg[3][i3]+'\n') 103 if hasContent4: g.write(configs_arg[4][i4]+'\n') 104 if hasContent5: g.write(configs_arg[5][i5]+'\n') 105 if hasContent6: g.write(configs_arg[6][i6]+'\n') 106 107 config_id +=1 108 g.close 138 if __name__== "__main__": 139 main() 109 140 110 141 111 142 112 f=open("CMakeLists.txt", "w")113 f.write("##############################\n")114 f.write("# file generated by setup.py #\n")115 f.write("# DO NOT modify #\n")116 f.write("##############################\n\n")117 f.write("cmake_minimum_required(VERSION 2.8.12.2)\n\n")118 f.write("project(generic_testcase)\n\n")119 f.write("find_package(PythonInterp REQUIRED)\n\n")120 f.write("enable_testing()\n\n")121 dirpath = os.getcwd()122 foldername = os.path.basename(os.getcwd())123 124 125 for x in range(nb_config):126 f.write("add_test( NAME "+foldername+"_config"+repr(x)+'\n')127 f.write(" COMMAND ${PYTHON_EXECUTABLE}\n")128 f.write(" ${CMAKE_CURRENT_BINARY_DIR}/run_test_"+repr(x)+".py\n")129 f.write(" "+foldername+"_config"+repr(x)+")\n\n")130 131 f.write("set_tests_properties("+foldername+"_config"+repr(x)+" PROPERTIES\n")132 f.write(" FAIL_REGULAR_EXPRESSION \"check.py failed;execution failed;failed;setup.sh failed; machine unknown\")\n\n")133 134 g=open("run_test_"+repr(x)+".py", "w")135 g.write("##############################\n")136 g.write("# file generated by setup.py #\n")137 g.write("# DO NOT modify #\n")138 g.write("##############################\n\n")139 g.write("import os\n")140 g.write("import sys\n")141 g.write("import subprocess\n")142 # g.write("\ndef OSinfo(runthis):\n")143 # g.write(" osstdout = subprocess.Popen(runthis, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)\n")144 # g.write(" theInfo = osstdout.communicate()[0].strip()\n")145 # g.write(" if osstdout.returncode!=0:\n")146 # g.write(" print(runthis+\" failed\")\n")147 # g.write(" print >> sys.stderr, osstdout.returncode\n")148 # g.write(" sys.exit()\n")149 # g.write(" else:\n")150 # g.write(" print(runthis+\" OK\")\n")151 152 g.write("\ndef main():\n")153 g.write(" os.system(\'rm -f user_param.py\')\n")154 g.write(" os.system(\'cp user_param.py."+repr(x)+" user_param.py\')\n")155 g.write(" os.system(\'./run_sub_test.sh\')\n")156 g.write("if __name__== \"__main__\":\n")157 g.write(" main()\n")158 g.close159 160 f.close161 162 f=open("report.txt", "w")163 g=open("report.html", "w")164 f.write("\n\n\nin "+cyan(foldername)+" ...\n\n")165 g.write("<br><br><br><p>in <font color=\"blue\">"+foldername+"</font> ...</p><br><br>")166 f.close167 g.close168 169 170 if __name__== "__main__":171 main()
Note: See TracChangeset
for help on using the changeset viewer.