Ignore:
Timestamp:
01/02/20 19:10:21 (4 years ago)
Author:
yushan
Message:

XIOS test suite : update to hierarchical inputs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/xios_test_suite/TEST_SUITE/setup.py

    r1806 r1841  
    11import os 
    22import sys 
     3import json 
     4import itertools 
    35 
     6from param_list import * 
    47 
    5 def main(): 
     8def getlabel(sub_list_element, level): 
     9    label="" 
     10    for l in range(level): 
     11        label = label+sub_list_element[l]+"_" 
     12    return label 
    613 
    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' 
     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 
    2323 
    24         default_nb_config = 7 
     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") 
    25117 
    26         nb_config = 1; 
    27         configs = [0]*default_nb_config 
    28           
    29         configs_arg = [[], [], [], [], [], [], []]  
     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                 
    30127 
    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) 
     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() 
    74137 
    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 
     138if __name__== "__main__": 
     139  main() 
    109140 
    110141 
    111142 
    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() 
Note: See TracChangeset for help on using the changeset viewer.