def test_copy(self): logging.debug('') logging.debug('test_copy') extcode = set_as_top(ExternalCode()) assert_raises(self, "extcode.copy_inputs('Inputs', '*.inp')", globals(), locals(), RuntimeError, ": inputs_dir 'Inputs' does not exist") os.mkdir('Inputs') try: shutil.copy('sleep.py', os.path.join('Inputs', 'junk.inp')) extcode.copy_inputs('Inputs', '*.inp') self.assertEqual(os.path.exists('junk.inp'), True) finally: shutil.rmtree('Inputs', onerror=onerror) if os.path.exists('junk.inp'): os.remove('junk.inp') assert_raises(self, "extcode.copy_results('Outputs', '*.dat')", globals(), locals(), RuntimeError, ": results_dir 'Outputs' does not exist") os.mkdir('Outputs') try: shutil.copy('sleep.py', os.path.join('Outputs', 'junk.dat')) extcode.copy_results('Outputs', '*.dat') self.assertEqual(os.path.exists('junk.dat'), True) finally: shutil.rmtree('Outputs', onerror=onerror) if os.path.exists('junk.dat'): os.remove('junk.dat')
def test_remote(self): logging.debug('') logging.debug('test_remote') init_cluster(allow_shell=True) dummy = 'dummy_output' if os.path.exists(dummy): os.remove(dummy) extcode = set_as_top(ExternalCode()) extcode.timeout = 5 extcode.command = ['python', 'sleep.py', '1', dummy] extcode.env_vars = {'SLEEP_DATA': 'Hello world!'} extcode.external_files.extend( (FileMetadata(path='sleep.py', input=True), FileMetadata(path=dummy, output=True))) extcode.resources = {'n_cpus': 1} extcode.run() self.assertEqual(extcode.return_code, 0) self.assertEqual(extcode.timed_out, False) self.assertEqual(os.path.exists(dummy), True) try: with open(dummy, 'r') as inp: data = inp.readline().rstrip() self.assertEqual(data, extcode.env_vars['SLEEP_DATA']) finally: os.remove(dummy)
def test_normal(self): logging.debug('') logging.debug('test_normal') dummy = 'dummy_output' if os.path.exists(dummy): os.remove(dummy) extcode = set_as_top(ExternalCode()) extcode.timeout = 5 extcode.command = ['python', 'sleep.py', '1', dummy] extcode.env_vars = {'SLEEP_DATA': 'Hello world!'} extcode.external_files.extend( (FileMetadata(path='sleep.py', input=True), FileMetadata(path=dummy, output=True))) extcode.run() self.assertEqual(extcode.return_code, 0) self.assertEqual(extcode.timed_out, False) self.assertEqual(os.path.exists(dummy), True) with open(dummy, 'r') as inp: data = inp.readline().rstrip() self.assertEqual(data, extcode.env_vars['SLEEP_DATA']) # Now show that existing outputs are removed before execution. extcode.command = ['python', 'sleep.py', '1'] extcode.run() msg = "[Errno 2] No such file or directory: 'dummy_output'" assert_raises(self, "open(dummy, 'r')", globals(), locals(), IOError, msg)
def __init__(self): self._callbacks = [] self._model_file = None self._vsp = None self._excludes = set(['xml_filename', 'write_stereo']) base = ExternalCode() for key, val in base.items(iotype=not_none): self._excludes.add(key)
def test_bad_alloc(self): logging.debug('') logging.debug('test_bad_alloc') extcode = set_as_top(ExternalCode()) extcode.command = ['python', 'sleep.py'] extcode.resources = {'allocator': 'LocalHost', 'localhost': False} assert_raises(self, 'extcode.run()', globals(), locals(), RuntimeError, ': Server allocation failed')
def test_bad_alloc(self): logging.debug('') logging.debug('test_bad_alloc') extcode = set_as_top(ExternalCode()) extcode.command = ['python', 'sleep.py'] extcode.resources = {'no_such_resource': 1} try: extcode.run() except RuntimeError as exc: self.assertEqual(str(exc), ': Server allocation failed :-(') else: self.fail('Exected RuntimeError')
def test_timeout(self): logging.debug('') logging.debug('test_timeout') # Set timeout to less than execution time. extcode = set_as_top(ExternalCode()) extcode.timeout = 1 extcode.command = ['python', 'sleep.py', '5'] try: extcode.run() except RunInterrupted as exc: self.assertEqual(str(exc), ': Timed out') self.assertEqual(extcode.timed_out, True) else: self.fail('Expected RunInterrupted')
def test_save_load(self): logging.debug('') logging.debug('test_save_load') extcode = set_as_top(ExternalCode()) extcode.name = 'ExternalCode' extcode.timeout = 5 extcode.command = ['python', 'sleep.py', '1'] extcode.external_files = [ FileMetadata(path='sleep.py', input=True, constant=True), ] # Exercise check_save_load(). retcode = check_save_load(extcode) self.assertEqual(retcode, 0)
def test_badcmd(self): logging.debug('') logging.debug('test_badcmd') # Set command to nonexistant path. extcode = set_as_top(ExternalCode()) extcode.command = ['no-such-command'] try: extcode.run() except ValueError as exc: msg = ": The command to be executed, 'no-such-command', cannot be found" self.assertEqual(str(exc), msg) self.assertEqual(extcode.return_code, -999999) else: self.fail('Expected OSError')
def test_nullcmd(self): logging.debug('') logging.debug('test_nullcmd') # Check response to no command set. extcode = set_as_top(ExternalCode()) extcode.stdout = 'nullcmd.out' extcode.stderr = ExternalCode.STDOUT try: extcode.run() except ValueError as exc: self.assertEqual(str(exc), ': Empty command list') else: self.fail('Expected ValueError') finally: if os.path.exists(extcode.stdout): os.remove(extcode.stdout)
def test_badcmd(self): logging.debug('') logging.debug('test_badcmd') # Set command to nonexistant path. extcode = set_as_top(ExternalCode()) extcode.command = ['xyzzy'] try: extcode.run() except OSError as exc: if sys.platform == 'win32': msg = '[Error 2] The system cannot find the file specified' else: msg = '[Errno 2] No such file or directory' self.assertEqual(str(exc), msg) self.assertEqual(extcode.return_code, -999999) else: self.fail('Expected OSError')
def test_badcmd(self): logging.debug('') logging.debug('test_badcmd') # Set command to nonexistant path. extcode = set_as_top(ExternalCode()) extcode.command = ['no-such-command'] try: extcode.run() except OSError as exc: if sys.platform == 'win32': # Apparently XP doesn't include the explanatory text. #'[Error 2] The system cannot find the file specified' self.assertTrue(str(exc).startswith('[Error 2]')) else: msg = '[Errno 2] No such file or directory' self.assertEqual(str(exc), msg) self.assertEqual(extcode.return_code, -999999) else: self.fail('Expected OSError')