def run_one_test(test,verbose=True,update=False): """ Run a given test name """ child_logger = logger.getChild('run_one_test') try: if verbose: ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) child_logger.addHandler(ch) child_logger.info('\nLaunching all tests') start = time.time() test_start =time.time() for potential,element_set in potential_module.supported_atoms.iteritems(): child_logger.info('\nRunning potential=%r',potential) potential_start = time.time() for element in element_set: #figure out if we need to run the test test_needed = True if db.results_exist(potential=potential, element=element, test=test): child_logger.info('Test %r,%r,%r exists',test,potential,element) if new_results_needed(potential,element,test): child_logger.info('New test needs computing') test_needed = True else: test_needed = False if update: test_needed=True if test_needed: test_start = time.time() child_logger.info('\nRunning element=%r',element) try: run_test(test=test, potential=potential, element=element, verbose=verbose) except ImportError as e: child_logger.error('TRACEBACK: %s',traceback.format_exc()) child_logger.error("test=%r doesn't seem to exist",test) raise except Exception as e: #Some other Error, log it. child_logger.error('\nERROR on test=%r, potential=%r, element=%r, info:%r', test,potential,element,e) child_logger.error('TRACEBACK: %s',traceback.format_exc()) child_logger.info('Element %r Run took %r seconds',element,time.time()-test_start) else: child_logger.info('Unessesary test %r,%r,%r',test,potential,element) child_logger.info('Potential %r run took %r seconds',potential,time.time()-potential_start) child_logger.info('Test %r run took %r seconds',test,time.time()-test_start) finally: child_logger.removeHandler(ch)
def new_results_needed(potential,element,test): """ Do we need new test results """ if not db.results_exist(potential,element,test): return True test_time = test_timestamp(test) results_time = db.results_timestamp(potential,element,test) return test_time > results_time