import os import sys from user_param import * def main(): black = lambda text: '\033[0;30m' + text + '\033[0m' red = lambda text: '\033[0;31m' + text + '\033[0m' green = lambda text: '\033[0;32m' + text + '\033[0m' yellow = lambda text: '\033[0;33m' + text + '\033[0m' blue = lambda text: '\033[0;34m' + text + '\033[0m' magenta = lambda text: '\033[0;35m' + text + '\033[0m' cyan = lambda text: '\033[0;36m' + text + '\033[0m' lgray = lambda text: '\033[0;37m' + text + '\033[0m' dgray = lambda text: '\033[1;30m' + text + '\033[0m' lred = lambda text: '\033[1;32m' + text + '\033[0m' lgreen = lambda text: '\033[1;32m' + text + '\033[0m' lyellow = lambda text: '\033[1;33m' + text + '\033[0m' lblue = lambda text: '\033[1;34m' + text + '\033[0m' lpurple = lambda text: '\033[1;35m' + text + '\033[0m' lcyan = lambda text: '\033[1;36m' + text + '\033[0m' white = lambda text: '\033[1;37m' + text + '\033[0m' configNamePattern=[0]*7 f=open("user_param.py", "r") for line in f: line = line.strip() if line.startswith("UsingServer2"): configNamePattern[0] = '_UsingSrv2=' + UsingServer2 elif line.startswith("RatioServer2"): configNamePattern[1] = '_RatioSrv2=' + repr(RatioServer2) elif line.startswith("NumberPoolsServer2"): configNamePattern[2] = '_NbPoolsSrv2=' + repr(NumberPoolsServer2) elif line.startswith("NumberClients"): configNamePattern[3] = '_NbClients=' + repr(NumberClients) elif line.startswith("NumberServers"): configNamePattern[4] = '_NbServers=' + repr(NumberServers) elif line.startswith("Duration"): configNamePattern[5] = '_Duration=' + Duration elif line.startswith("ATMdomain"): configNamePattern[5] = '_ATMdomain=' + ATMdomain f.close() configName = "config" defaultConfig = True for i in range(len(configNamePattern)): if configNamePattern[i] != 0: configName = configName + configNamePattern[i] defaultConfig = False if defaultConfig: configName = "config_default" if not os.path.exists(configName): os.mkdir(configName) print blue("\n ****************************************************************") print blue(" * Directory " + repr(configName) + " Created ") print blue(" * Copy results to \'not_validated_reference\' folder") print blue(" ****************************************************************\n") os.mkdir(configName+'/setup') os.mkdir(configName+'/tmp_reference') os.mkdir(configName+'/xios_output') os.system('mv param.def '+configName+'/setup/') os.system('mv all_param.def '+configName+'/setup/') os.system('mv user_param.py '+configName+'/setup/') os.system('mv iodef.xml '+configName+'/setup/') os.system('cp context_atm.xml '+configName+'/setup/') os.system('cp context_grid_dynamico.xml '+configName+'/setup/') os.system('cp dynamico_grid.nc '+configName+'/setup/') os.system('mv xios_*.out '+configName+'/xios_output/') os.system('mv xios_*.err '+configName+'/xios_output/') f=open("checkfile.def", "r") h=open("report.txt", "a+") l=open("report.html", "a+") h.write("Config : "+configName+"\n") l.write("

Config : "+configName+"

") for line in f: line=line.strip() line=line.rstrip() if not line.startswith("#") and len(line) != 0: cmd = 'mv '+line + ' '+configName+'/tmp_reference/' os.system(cmd) h.write("test for "+lpurple(line)+" \t"+yellow('INITIALIZED')+"\n") l.write("

test for "+line+"        INITIALIZED

") print yellow("\n ****************************************") print yellow(" ** "+line+" is stored as temporal reference !!! **") print yellow("\n ****************************************") f.close() h.write("\n") l.write("
") h.close() else: print blue("\n ********************************************************") print blue(" * Directory " + repr(configName) + " already exists") print blue(" * Start comparing results with (tmp) references") print blue(" ********************************************************\n") tmp_ref = os.path.isdir(configName+'/tmp_reference') ref = os.path.isdir(configName+'/reference') if ref: print blue("\n =====================================") print blue(" | Comparing results with references |") print blue(" =====================================\n") os.system('rm -rf '+configName+'/tmp_reference/') tmp_ref = False path = configName+'/reference/' elif tmp_ref: print blue("\n ===================================================") print blue(" | Comparing results with NON-Validated references |") print blue(" ===================================================\n") path = ' '+configName+'/tmp_reference/' f=open("checkfile.def", "r") h=open("report.txt", "a+") l=open("report.html", "a+") h.write("Config : "+configName+"\n") l.write("

Config : "+configName+"

") for line in f: line=line.strip() line=line.rstrip() if not line.startswith("#") and len(line) != 0: cmd = 'cdo diffn '+ line + path + line + ' | tail -1 > diff.txt' os.system(cmd) if os.stat("diff.txt").st_size==0: h.write("test for "+lpurple(line)+" \t"+green('PASSED')+"\n") l.write("

test for "+line+"        PASSED

") print green("\n ****************************************") print green(" ** "+line+" is valid !!! **") print green("\n ****************************************") else: g=open("diff.txt", "r") for gline in g: if gline.strip().startswith("0") or ":" in gline : h.write("test for "+lpurple(line)+" \t"+green('PASSED')+"\n") l.write("

test for "+line+"        PASSED

") print green("\n ****************************************") print green(" ** "+line+" is valid !!! **") print green("\n ****************************************") else: h.write("test for "+lpurple(line)+" \t"+red('FAILED')+"\n") l.write("

test for "+line+"        FAILED

") print red("\n **************************************************") print red(" ** "+line+" is NOT valid. Please debugging.. **") print red("\n **************************************************") g.close() f.close() h.write("\n") l.write("
") h.close() if not os.path.exists('current_run'): os.mkdir('current_run') if not os.path.exists('current_run/'+configName): os.mkdir('current_run/'+configName) os.system('mv -f param.def current_run/'+configName) os.system('mv -f all_param.def current_run/'+configName) os.system('mv -f user_param.py current_run/'+configName) os.system('mv -f iodef.xml current_run/'+configName) os.system('rm -f current_run/'+configName+'/context_atm.xml') os.system('cp -n context_atm.xml current_run/'+configName) os.system('cp -f context_grid_dynamico.xml current_run/'+configName) os.system('cp -f dynamico_grid.nc current_run/'+configName) os.system('mv -f xios_*.out current_run/'+configName) os.system('mv -f xios_*.err current_run/'+configName) if __name__== "__main__": main()