[1789] | 1 | import os |
---|
| 2 | import sys |
---|
| 3 | |
---|
| 4 | |
---|
| 5 | def 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 | |
---|
| 170 | if __name__== "__main__": |
---|
| 171 | main() |
---|