Changeset 103


Ignore:
Timestamp:
07/12/13 03:33:46 (6 years ago)
Author:
mjuckes
Message:

added specific file handle tracking test to unit test suite 2

Location:
CCCC/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • CCCC/trunk/c4.py

    r101 r103  
    6262      self.va[v] = {} 
    6363      self.va[v]['standard_name'] = 's%s' % v 
    64       self.va[v]['name'] = v 
     64      self.va[v]['long_name'] = v 
     65      self.va[v]['cell_methods'] = 'time: point' 
    6566      self.va[v]['units'] = '1' 
    6667      self.va[v]['_type'] = 'float32' 
     
    7374    svals = lambda p,q: map( lambda y,z: self.da[y].__setitem__(p, z), dlist, q ) 
    7475    svals( 'standard_name', ['latitude', 'longitude','time'] ) 
    75     svals( 'name', ['latitude', 'longitude','time'] ) 
     76    svals( 'long_name', ['latitude', 'longitude','time'] ) 
    7677    svals( 'units', ['degrees_north', 'degrees_east','days since 19590101'] ) 
    7778 
     
    213214 
    214215class checker: 
    215   def __init__(self, pcfg, cls,reader): 
     216  def __init__(self, pcfg, cls,reader,abortMessageCount=-1): 
    216217    self.info = dummy() 
    217218    self.info.pcfg = pcfg 
     219    self.info.abortMessageCount = abortMessageCount 
    218220    self.calendar = 'None' 
    219221    self.ncReader = reader 
     
    379381            cl.append( string.split(b, '=' ) ) 
    380382          self.attributeMappings.append( ('am001',cl, string.split(bb[1],'=') ) ) 
    381     print self.attributeMappings 
    382383 
    383384  def getFileLog( self, fn, flf=None ): 
     
    408409class main: 
    409410 
    410   def __init__(self,args=None): 
     411  def __init__(self,args=None,holdExceptions=False,abortMessageCount=-1,printInfo=False,monitorFileHandles = False): 
    411412    logDict = {} 
     413    ecount = 0 
    412414    c4i = c4_init(args=args) 
    413415    isDummy  = c4i.project[:2] == '__' 
     
    418420    pcfg = config.projectConfig( c4i.project ) 
    419421    ncReader = fileMetadata(dummy=isDummy) 
    420     cc = checker(pcfg, c4i.project, ncReader) 
     422    cc = checker(pcfg, c4i.project, ncReader,abortMessageCount=abortMessageCount) 
    421423    rec = recorder( c4i.recordFile, dummy=isDummy ) 
    422     monitorFileHandles = False 
    423424    if monitorFileHandles: 
    424       monitor = utils.sysMonitor() 
    425     else: 
    426       monitor = None 
     425      self.monitor = utils.sysMonitor() 
     426    else: 
     427      self.monitor = None 
    427428 
    428429    cal = None 
    429  
    430430    c4i.logger.info( 'Starting batch -- number of file: %s' % (len(c4i.flist)) ) 
    431431   
    432     cbv = utils.checkByVar( parent=cc.info,cls=c4i.project,monitor=monitor) 
     432    cbv = utils.checkByVar( parent=cc.info,cls=c4i.project,monitor=self.monitor) 
    433433    cbv.impt( c4i.flist ) 
     434    if printInfo: 
     435      print cbv.info 
    434436 
    435437    for f in c4i.flist: 
    436438      if monitorFileHandles: 
    437         nofhStart = monitor.get_open_fds() 
     439        nofhStart = self.monitor.get_open_fds() 
    438440      fn = string.split(f,'/')[-1] 
    439441      c4i.logger.info( 'Starting: %s' % fn ) 
     
    468470        if cc.completed: 
    469471          c4i.logger.info( 'Done -- error count %s' % cc.errorCount )  
     472          ecount += cc.errorCount 
    470473          if cc.errorCount == 0: 
    471474            rec.add( f, cc.drs ) 
     
    473476            rec.addErr( f, 'ERRORS FOUND | errorCount = %s' % cc.errorCount ) 
    474477        else: 
     478          ecount += 20 
    475479          c4i.logger.info( 'Done -- testing aborted because of severity of errors' ) 
    476480          rec.addErr( f, 'ERRORS FOUND AND CHECKS ABORTED' ) 
     
    478482        c4i.logger.error("Exception has occured" ,exc_info=1) 
    479483        rec.addErr( f, 'ERROR: Exception' ) 
     484        if not holdExceptions: 
     485          raise 
    480486      if monitorFileHandles: 
    481         nofhEnd = monitor.get_open_fds() 
     487        nofhEnd = self.monitor.get_open_fds() 
    482488        if nofhEnd > nofhStart: 
    483489           print 'Open file handles: %s --- %s' % (nofhStart, nofhEnd) 
     
    489495       cbv.setLogDict( logDict ) 
    490496       cbv.check( recorder=rec, calendar=cc.calendar) 
     497       try: 
     498         ecount += cbv.errorCount 
     499       except: 
     500         ecount = None 
    491501    rec.dumpAll() 
     502    if printInfo: 
     503      print 'Error count %s' % ecount 
    492504    c4i.hdlr.close() 
    493505if __name__ == '__main__': 
    494   main() 
     506  main(printInfo=True) 
    495507 
    496508 
  • CCCC/trunk/unitTestsS1.py

    r95 r103  
    2424p.log = log 
    2525p.pcfg = config.projectConfig( "CORDEX" ) 
     26p.abortMessageCount = -1 
    2627 
    2728 
  • CCCC/trunk/unitTestsS2.py

    r101 r103  
    2525p = dummy() 
    2626p.log = log 
     27p.abortMessageCount = -1 
    2728p.pcfg = config.projectConfig( "__dummy" ) 
    2829 
     
    3233 
    3334fn = 'v1_t1_a_b_20060101-20101231.nc' 
    34 testId = '#01.001' 
     35testId = '#10.001' 
    3536c.check( fn ) 
    3637if c.errorCount == 0: 
    37   print 'Passed [%s] %s: valid file name' % (module,fn) 
     38  print 'OK [%s] %s: valid file name with project=__dummy' % (module,fn) 
    3839else: 
    3940  print 'Failed [%s] %s: valid file name' % (module,fn) 
    4041 
    4142 
    42 main( args=['-p', '__dummy'] ) 
     43testId = '#11.001' 
     44try: 
     45  m = main( args=['-p', '__dummy'], monitorFileHandles=True ) 
     46  print 'OK [%s]: dummy run completed without exception' % testId 
     47except: 
     48  print 'Failed [%s]: dummy run triggered exception' % testId 
     49  raise 
     50 
     51testId = '#11.002' 
     52if m.monitor.fhCountMax < 10: 
     53  print 'OK [%s]: fhCountMax = %s' % ( testId, m.monitor.fhCountMax ) 
     54else: 
     55  print 'Failed [%s]: fhCountMax = %s' % ( testId, m.monitor.fhCountMax ) 
     56 
     57testId = '#11.003' 
     58try: 
     59  m = main( args=['-p', '__dummy'], abortMessageCount=10 ) 
     60  print 'Failed [%s]: did not trigger exception' % testId 
     61except: 
     62  print 'OK [%s]: attempt to trigger exception successful' % testId 
  • CCCC/trunk/utils_c4.py

    r100 r103  
    8585    self.cls = cls 
    8686    self.project = cls 
     87    self.abortMessageCount = parent.abortMessageCount 
    8788    self.monitor = monitor 
    8889    ## check done earlier 
     
    103104####################################### 
    104105    self.checks = () 
     106    self.messageCount = 0 
    105107    self.init() 
    106108 
     
    109111 
    110112  def logMessage(self, msg, error=False ): 
     113    self.messageCount += 1 
     114    assert self.abortMessageCount < 0 or self.abortMessageCount > self.messageCount, 'Raising error [TESTX01], perhaps for testing' 
    111115    if self.parent != None and self.parent.log != None: 
    112116       if error: 
     
    677681     self.varInfo = {} 
    678682     self.varcons = {} 
    679      ee = { 'standard_name':'sn%s', 'name':'n%s', 'units':'1' } 
     683     ee = { 'standard_name':'sn%s', 'long_name':'n%s', 'units':'1' } 
    680684     dir, tl, vgmap, fnpat = self.pcfg.mipVocabPars 
    681685     for f in tl: 
     
    686690          eeee = {} 
    687691          eeee['standard_name'] = ee['standard_name'] % i 
    688           eeee['name'] = ee['name'] % i 
     692          eeee['long_name'] = ee['long_name'] % i 
     693          eeee['cell_methods'] = 'time: point' 
    689694          eeee['units'] = ee['units'] 
    690695          ar = [] 
     
    781786 
    782787    assert nn==n2, 'some file lost!!!!!!' 
    783     print '%s files, %s frequencies' % (nn,len(ee.keys()) ) 
     788    self.info = '%s files, %s frequencies' % (nn,len(ee.keys()) ) 
    784789    self.ee = ee 
    785790 
     
    847852 
    848853  def __init__(self): 
    849     pass 
     854    self.fhCountMax = 0 
    850855 
    851856  def get_open_fds(self): 
     
    864869            lambda s: s and s[ 0 ] == 'f' and s[1: ].isdigit(), 
    865870            self.procs.split( '\n' ) ) 
     871    self.fhCountMax = max( self.fhCountMax, len(self.ps) ) 
    866872    return len( self.ps ) 
Note: See TracChangeset for help on using the changeset viewer.