def run_one(self, test): if self.jobs == 1: self.log.write('%*s' % (-self.n, test)) self.log.flush() t0 = time.time() filename = gpaw.__path__[0] + '/test/' + test try: loc = {} execfile(filename, loc) loc.clear() del loc self.check_garbage() except KeyboardInterrupt: self.write_result(test, 'STOPPED', t0) raise except: failed = True else: failed = False mpi.ibarrier(timeout=60.0) # guard against parallel hangs me = np.array(failed) everybody = np.empty(mpi.size, bool) mpi.world.all_gather(me, everybody) failed = everybody.any() if failed: self.fail(test, np.argwhere(everybody).ravel(), t0) else: self.write_result(test, 'OK', t0) return failed
loc.clear() del loc self.check_garbage() except KeyboardInterrupt: self.write_result(test, 'STOPPED', t0) raise except ImportError, ex: module = ex.args[0].split()[-1].split('.')[0] if module in ['scipy', 'cmr', '_gpaw_hdf5']: skip = True else: failed = True except Exception: failed = True mpi.ibarrier(timeout=60.0) # guard against parallel hangs me = np.array(failed) everybody = np.empty(mpi.size, bool) mpi.world.all_gather(me, everybody) failed = everybody.any() skip = mpi.world.sum(int(skip)) if failed: self.fail(test, np.argwhere(everybody).ravel(), t0) exitcode = 2 elif skip: self.write_result(test, 'SKIPPED', t0) self.skipped.append(test) exitcode = 1 else:
def run_one(self, test): exitcode_ok = 0 exitcode_skip = 1 exitcode_fail = 2 if self.jobs == 1: self.log.write('%*s' % (-self.n, test)) self.log.flush() t0 = time.time() filename = get_test_path(test) tb = '' skip = False if test in exclude: self.register_skipped(test, t0) return exitcode_skip assert test.endswith('.py') dirname = test[:-3] if os.path.isabs(dirname): mydir = os.path.split(__file__)[0] dirname = os.path.relpath(dirname, mydir) # We don't want files anywhere outside the tempdir. assert not dirname.startswith('../') # test file outside sourcedir if mpi.rank == 0: os.makedirs(dirname) mpi.world.barrier() cwd = os.getcwd() os.chdir(dirname) try: setup_paths[:] = self.setup_paths loc = {} with open(filename) as fd: exec(compile(fd.read(), filename, 'exec'), loc) loc.clear() del loc self.check_garbage() except KeyboardInterrupt: self.write_result(test, 'STOPPED', t0) raise except SkipTest: skip = True except ImportError as ex: if sys.version_info[0] >= 3: module = ex.name else: module = ex.args[0].split()[-1].split('.')[0] if module == 'scipy': skip = True else: tb = traceback.format_exc() except AttributeError as ex: if (ex.args[0] == "'module' object has no attribute 'new_blacs_context'"): skip = True else: tb = traceback.format_exc() except Exception: tb = traceback.format_exc() finally: os.chdir(cwd) mpi.ibarrier(timeout=60.0) # guard against parallel hangs me = np.array(tb != '') everybody = np.empty(mpi.size, bool) mpi.world.all_gather(me, everybody) failed = everybody.any() skip = mpi.world.sum(int(skip)) if failed: self.fail(test, np.argwhere(everybody).ravel(), tb, t0) exitcode = exitcode_fail elif skip: self.register_skipped(test, t0) exitcode = exitcode_skip else: self.write_result(test, 'OK', t0) exitcode = exitcode_ok return exitcode
except ImportError, ex: module = ex.args[0].split()[-1].split('.')[0] if module in ['scipy', 'cmr', '_gpaw_hdf5']: skip = True else: failed = True except AttributeError, ex: if (ex.args[0] == "'module' object has no attribute 'new_blacs_context'"): skip = True else: failed = True except Exception: failed = True mpi.ibarrier(timeout=60.0) # guard against parallel hangs me = np.array(failed) everybody = np.empty(mpi.size, bool) mpi.world.all_gather(me, everybody) failed = everybody.any() skip = mpi.world.sum(int(skip)) if failed: self.fail(test, np.argwhere(everybody).ravel(), t0) exitcode = exitcode_fail elif skip: self.register_skipped(test, t0) exitcode = exitcode_skip else: self.write_result(test, 'OK', t0)