source: XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/setup.py @ 1838

Last change on this file since 1838 was 1838, checked in by yushan, 4 years ago

dev_trunk_omp : add hierarchical inputs(user_param.json). simplify post-processing scripts

File size: 4.5 KB
Line 
1import os
2import sys
3import json
4import itertools
5
6from param_list import *
7
8def getlabel(sub_list_element, level):
9    label=""
10    for l in range(level):
11        label = label+sub_list_element[l]+"_"
12    return label
13
14def 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
24def 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")
117
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               
127
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()
137
138if __name__== "__main__":
139  main()
140
141
142
Note: See TracBrowser for help on using the repository browser.