[1737] | 1 | import os |
---|
| 2 | import sys |
---|
[1838] | 3 | import json |
---|
| 4 | import itertools |
---|
[1737] | 5 | |
---|
[1838] | 6 | from param_list import * |
---|
[1737] | 7 | |
---|
[1838] | 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 |
---|
[1737] | 13 | |
---|
[1838] | 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 |
---|
[1737] | 23 | |
---|
[1838] | 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") |
---|
[1737] | 117 | |
---|
[1838] | 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 | |
---|
[1737] | 127 | |
---|
[1838] | 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() |
---|
[1737] | 137 | |
---|
[1838] | 138 | if __name__== "__main__": |
---|
| 139 | main() |
---|
[1737] | 140 | |
---|
| 141 | |
---|
| 142 | |
---|