[1729] | 1 | import os |
---|
| 2 | import sys |
---|
| 3 | |
---|
| 4 | def 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 | |
---|
| 157 | if __name__== "__main__": |
---|
| 158 | main() |
---|