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

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

GENERIC_TESTCASE : generate job scripts for each config (Jean-Zay and Irene)

File size: 5.9 KB
Line 
1import os
2import sys
3
4
5def main():
6
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'
23
24        default_nb_config = 7
25
26        nb_config = 1;
27        configs = [0]*default_nb_config
28         
29        configs_arg = [[], [], [], [], [], [], []] 
30
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)
74
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
109
110
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
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.close
159                 
160        f.close
161
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.close
167        g.close
168
169
170if __name__== "__main__":
171  main()
Note: See TracBrowser for help on using the repository browser.