Ignore:
Timestamp:
01/07/22 15:18:07 (2 years ago)
Author:
jderouillat
Message:

Add tracking of the memory consumption in the test suite

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/xios_test_suite/TEST_SUITE/step2.py

    r2231 r2281  
    1313mode=os.getenv("mode") 
    1414arch=os.getenv("arch") 
     15enable_mem_track=os.getenv("enable_mem_track") 
    1516svnr=os.getenv("svnR") 
    1617ref_location=os.getenv("ref_location") 
     
    7374 
    7475    for test_folder in test_folder_list: 
     76        report_filename="" 
     77        # check if test concerns xios features (NetCDF), or memory consumption (mem files) 
     78        files_list="" 
     79        flist = open(test_folder+"/checkfile.def", 'r') 
     80        files_list = flist.read() 
     81        flist.close() 
     82        if ( enable_mem_track==None ) and ( not('.mem' in files_list) ) : 
     83            report_filename = "report_"+svnr+"_"+arch+"_"+mode+".txt" 
     84        elif ( enable_mem_track=='--memtrack full' ) and ( '.mem' in files_list ) : 
     85            #report_filename = "report_"+svnr+"_"+arch+"_"+mode+"_memtrack.txt" 
     86            # -> use same report that for feature test 
     87            report_filename = "report_"+svnr+"_"+arch+"_"+mode+".txt" 
     88        else : 
     89            continue 
     90 
    7591        config_list = glob.glob(test_folder+"/CONFIG_*") 
    7692         
     
    7995            checkfiles = list(nonblank_lines(fh)) 
    8096 
    81         with open("report_"+svnr+"_"+arch+"_"+mode+".txt", "a") as report: 
     97        with open(report_filename, "a") as report: 
    8298            for config in config_list: 
    8399                folder_name = list(config.split("/"))[0] 
     
    85101                for checkfile in checkfiles: 
    86102                    if os.path.exists(config+"/"+checkfile) and os.path.exists("reference/ref_"+config+"/"+checkfile): 
    87                         #OSinfo("cdo -W diffn "+config+"/"+checkfile+" "+"reference/ref_"+config+"/"+checkfile+"  2>&1 |grep -v 'Found more than one time variable'|grep -v 'cdo diffn: Processed'|grep -v 'cdo    diffn: Processed'|grep -v 'Time variable >time_counter< not found!' > diff_"+checkfile+".txt") 
    88                         #if os.stat("diff_"+checkfile+".txt").st_size==0: # if no diff -> set 0 
    89                         #    report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(1)+"\n") 
    90                         #else: # if cdo diffn returns diff -> set -1 
    91                         #    report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(-1)+"\n") 
    92                         ref = Dataset( "reference/ref_"+config+"/"+checkfile ) 
    93                         res = Dataset( config+"/"+checkfile ) 
    94                         validated = 1 
    95                         np.seterr(divide='ignore', invalid='ignore') 
    96                         for var in res.variables: 
    97                             if (not (var.startswith('lon_'))) and (not (var.startswith('lat_'))) and (not (var.startswith('time_'))) and (not (var.startswith('atm__'))): 
    98                                 ref_interp = ref.variables[var] 
    99                                 ref_array = ref_interp[:] 
    100                                 res_interp = res.variables[var] 
    101                                 res_array = res_interp[:] 
    102                                 if (res_array.shape == ref_array.shape): 
    103                                     diff = np.zeros_like( ref_array ) 
    104                                     np.divide(ref_array-res_array,ref_array,diff,where=(ref_array[:]>10**-15)) 
    105                                     if ( np.max(np.abs(diff)) >  1*10**-9 ): 
     103                        if ( enable_mem_track==None ) and ( not('.mem' in files_list) ): # NetCDF 
     104                            #OSinfo("cdo -W diffn "+config+"/"+checkfile+" "+"reference/ref_"+config+"/"+checkfile+"  2>&1 |grep -v 'Found more than one time variable'|grep -v 'cdo diffn: Processed'|grep -v 'cdo    diffn: Processed'|grep -v 'Time variable >time_counter< not found!' > diff_"+checkfile+".txt") 
     105                            #if os.stat("diff_"+checkfile+".txt").st_size==0: # if no diff -> set 0 
     106                            #    report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(1)+"\n") 
     107                            #else: # if cdo diffn returns diff -> set -1 
     108                            #    report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(-1)+"\n") 
     109                            ref = Dataset( "reference/ref_"+config+"/"+checkfile ) 
     110                            res = Dataset( config+"/"+checkfile ) 
     111                            validated = 1 
     112                            np.seterr(divide='ignore', invalid='ignore') 
     113                            for var in res.variables: 
     114                                if (not (var.startswith('lon_'))) and (not (var.startswith('lat_'))) and (not (var.startswith('time_'))) and (not (var.startswith('atm__'))): 
     115                                    ref_interp = ref.variables[var] 
     116                                    ref_array = ref_interp[:] 
     117                                    res_interp = res.variables[var] 
     118                                    res_array = res_interp[:] 
     119                                    if (res_array.shape == ref_array.shape): 
     120                                        diff = np.zeros_like( ref_array ) 
     121                                        np.divide(ref_array-res_array,ref_array,diff,where=(ref_array[:]>10**-15)) 
     122                                        if ( np.max(np.abs(diff)) >  1*10**-9 ): 
     123                                            validated = -1 
     124                                        diff = np.zeros_like( ref_array ) 
     125                                        np.divide(ref_array-res_array,res_array,diff,where=(ref_array[:]>10**-15)) 
     126                                        if ( np.max(np.abs(diff)) >  1*10**-9 ): 
     127                                            validated = -1 
     128                                    else: 
    106129                                        validated = -1 
    107                                     diff = np.zeros_like( ref_array ) 
    108                                     np.divide(ref_array-res_array,res_array,diff,where=(ref_array[:]>10**-15)) 
    109                                     if ( np.max(np.abs(diff)) >  1*10**-9 ): 
    110                                         validated = -1 
    111                                 else: 
    112                                         validated = -1 
    113                         report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(validated)+"\n") 
     130                            report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(validated)+"\n") 
     131                         
     132                        elif ( enable_mem_track=='--memtrack full' ) and ( '.mem' in files_list ) : # mem file 
     133                            validated = 1 
     134                            OSinfo("diff "+config+"/"+checkfile+" "+"reference/ref_"+config+"/"+checkfile+"  2>&1  > diff_"+checkfile+".txt") 
     135                            if os.stat("diff_"+checkfile+".txt").st_size==0: # if no diff -> set 0 
     136                                validated = 1 
     137                            else: # if diff returns diff -> set -1 
     138                                validated = -1 
     139                            report.write(folder_name+" "+folder_name+"@"+config_name+" "+folder_name+"@"+config_name+"@"+checkfile+" "+str(validated)+"\n") 
    114140 
    115141                    elif os.path.exists(config+"/"+checkfile): # if no ref file -> set 0 
Note: See TracChangeset for help on using the changeset viewer.