source: XIOS/dev/dev_trunk_omp/GENERIC_TESTCASE/test_scalar_algo/setup.py @ 1729

Last change on this file since 1729 was 1729, checked in by yushan, 5 years ago

GENERIC_TESTCASE : Each configuration is considered now as an independent test

File size: 5.2 KB
Line 
1import os
2import sys
3
4def main():
5
6        black = lambda text: '\033[0;30m' + text + '\033[0m'
7        red = lambda text: '\033[0;31m' + text + '\033[0m'
8        green = lambda text: '\033[0;32m' + text + '\033[0m'
9        yellow = lambda text: '\033[0;33m' + text + '\033[0m'
10        blue = lambda text: '\033[0;34m' + text + '\033[0m'
11        magenta = lambda text: '\033[0;35m' + text + '\033[0m'
12        cyan = lambda text: '\033[0;36m' + text + '\033[0m'
13        lgray = lambda text: '\033[0;37m' + text + '\033[0m'
14        dgray = lambda text: '\033[1;30m' + text + '\033[0m'
15        lred = lambda text: '\033[1;32m' + text + '\033[0m'
16        lgreen = lambda text: '\033[1;32m' + text + '\033[0m'
17        lyellow = lambda text: '\033[1;33m' + text + '\033[0m'
18        lblue = lambda text: '\033[1;34m' + text + '\033[0m'
19        lpurple = lambda text: '\033[1;35m' + text + '\033[0m'
20        lcyan = lambda text: '\033[1;36m' + text + '\033[0m'
21        white = lambda text: '\033[1;37m' + text + '\033[0m'
22
23        default_nb_config = 7
24
25        nb_config = 1;
26        configs = [0]*default_nb_config
27         
28        configs_arg = [[], [], [], [], [], [], []] 
29
30        f=open("user_params.def", "r")
31        for line in f:
32                line = line.strip()
33                if len(line) != 0:
34                        if not line.startswith("#"):
35                                nb_config = nb_config * (line.count(",")+1)
36                                line = line.replace(",", "")
37                                line = line.replace("=", "")
38                                if line.startswith("UsingServer2"):
39                                        line = line.replace("UsingServer2", "")
40                                        for word in line.split():
41                                                configs[0] += 1
42                                                configs_arg[0].append('UsingServer2 = '+word)
43                                elif line.startswith("RatioServer2"):
44                                        line = line.replace("RatioServer2", "")
45                                        for word in line.split():
46                                                configs[1] += 1
47                                                configs_arg[1].append('RatioServer2 = '+word)
48                                elif line.startswith("NumberPoolsServer2"):
49                                        line = line.replace("NumberPoolsServer2", "")
50                                        for word in line.split():
51                                                configs[2] += 1
52                                                configs_arg[2].append('NumberPoolsServer2 = '+word)
53                                elif line.startswith("NumberClients"):
54                                        line = line.replace("NumberClients", "")
55                                        for word in line.split():
56                                                configs[3] += 1
57                                                configs_arg[3].append('NumberClients = '+word)
58                                elif line.startswith("NumberServers"):
59                                        line = line.replace("NumberServers", "")
60                                        for word in line.split():
61                                                configs[4] += 1
62                                                configs_arg[4].append('NumberServers = '+word)
63                                elif line.startswith("Duration"):
64                                        line = line.replace("Duration", "")
65                                        for word in line.split():
66                                                configs[5] += 1
67                                                configs_arg[5].append('Duration = '+word)
68                                elif line.startswith("ATMdomain"):
69                                        line = line.replace("ATMdomain", "")
70                                        for word in line.split():
71                                                configs[6] += 1
72                                                configs_arg[6].append('ATMdomain = '+word)
73
74                               
75        for x in range(default_nb_config):
76                if configs[x]==0:
77                        configs[x] =1
78
79        config_id=0
80        for i0 in range(configs[0]):
81                hasContent0 = len(configs_arg[0])>0
82                for i1 in range(configs[1]):
83                        hasContent1 = len(configs_arg[1])>0
84                        for i2 in range(configs[2]):
85                                hasContent2 = len(configs_arg[2])>0
86                                for i3 in range(configs[3]):
87                                        hasContent3 = len(configs_arg[3])>0
88                                        for i4 in range(configs[4]):
89                                                hasContent4 = len(configs_arg[4])>0
90                                                for i5 in range(configs[5]):
91                                                        hasContent5 = len(configs_arg[5])>0
92                                                        for i6 in range(configs[6]):
93                                                                hasContent6 = len(configs_arg[6])>0
94
95                                                                filename = "user_param.py."+repr(config_id)
96                                                                g = open(filename, "w")
97
98                                                                if hasContent0: g.write(configs_arg[0][i0]+'\n')
99                                                                if hasContent1: g.write(configs_arg[1][i1]+'\n')
100                                                                if hasContent2: g.write(configs_arg[2][i2]+'\n')
101                                                                if hasContent3: g.write(configs_arg[3][i3]+'\n')
102                                                                if hasContent4: g.write(configs_arg[4][i4]+'\n')
103                                                                if hasContent5: g.write(configs_arg[5][i5]+'\n')
104                                                                if hasContent6: g.write(configs_arg[6][i6]+'\n')
105                                                       
106                                                                config_id +=1
107                                                                g.close
108
109
110        # print >>sys.stderr, nb_config
111
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        print(foldername)
124
125
126        for x in range(nb_config):
127                f.write("add_test( NAME "+foldername+"_config"+repr(x)+'\n')
128                f.write("          COMMAND ${PYTHON_EXECUTABLE}\n")
129                f.write("          ${CMAKE_CURRENT_BINARY_DIR}/run_test_"+repr(x)+".py\n")
130                f.write("          "+foldername+"_config"+repr(x)+")\n\n")
131
132                g=open("run_test_"+repr(x)+".py", "w")
133                g.write("##############################\n")
134                g.write("# file generated by setup.py #\n")
135                g.write("#      DO NOT modify         #\n")
136                g.write("##############################\n\n")
137                g.write("import os\n")
138                g.write("import sys\n")
139                g.write("def main():\n")
140                g.write("       os.system(\'rm -f user_param.py\')\n")
141                g.write("       os.system(\'cp user_param.py."+repr(x)+" user_param.py\')\n")
142                g.write("       os.system(\'./run_sub_test.sh\')\n")
143                g.write("if __name__== \"__main__\":\n")
144                g.write("       main()\n")
145                g.close
146                 
147        f.close
148
149        f=open("report.txt", "w")
150        g=open("report.html", "w")
151        f.write("\n\n\nin "+cyan(foldername)+" ...\n\n")
152        g.write("<br><br><br><p>in <font color=\"blue\">"+foldername+"</font> ...</p><br><br>")
153        f.close
154        g.close
155
156
157if __name__== "__main__":
158  main()
Note: See TracBrowser for help on using the repository browser.