def test_program(tmpdir, comm, executable): """ Tests ProgramProcess. Includes failure modes. """ from pytest import raises from pylada.process.program import ProgramProcess from pylada.process import NotStarted from pylada.process.tests.functional import ExtractSingle as Extract stdout = str(tmpdir.join('stdout')) program = ProgramProcess( executable, outdir=str(tmpdir), cmdline=['--sleep', 0, '--order', 4], stdout=stdout, dompi=True) # program not started. should fail. with raises(NotStarted): program.poll() with raises(NotStarted): program.wait() # now starting for real. assert program.start(comm) == False assert program.process is not None while not program.poll(): continue extract = Extract(stdout) assert extract.success assert abs(extract.pi - 3.146801e+00) < 1e-2 * extract.error assert abs(extract.error - 0.005207865) < 1e-2 * extract.error assert extract.comm['n'] == comm['n'] # restart assert program.process is None program.start(comm) assert program.process is None
def test_program(tmpdir, comm, executable): """ Tests ProgramProcess. Includes failure modes. """ from pytest import raises from pylada.process.program import ProgramProcess from pylada.process import NotStarted stdout = str(tmpdir.join('stdout')) program = ProgramProcess( executable, outdir=str(tmpdir), cmdline=['--sleep', 0, '--order', 4], stdout=stdout, dompi=True) # program not started. should fail. with raises(NotStarted): program.poll() with raises(NotStarted): program.wait() # now starting for real. assert program.start(comm) == False assert program.process is not None while not program.poll(): continue extract = ExtractSingle(stdout) assert extract.success assert abs(extract.pi - 3.146801e+00) < 1e-2 * extract.error assert abs(extract.error - 0.005207865) < 1e-2 * extract.error assert extract.comm['n'] == comm['n'] # restart assert program.process is None program.start(comm) assert program.process is None
def test_full_execution(executable, tmpdir, comm): from pylada.process.program import ProgramProcess from pylada.process import Fail stdout = str(tmpdir.join('stdout')) program = ProgramProcess( executable, outdir=str(tmpdir), stderr=str(tmpdir.join('OMG')), cmdline=['--sleep', 0, '--order', 50], stdout=stdout, dompi=True ) program.start(comm) program.wait() assert True
def test_fail_at_end(executable, tmpdir, comm): from pytest import raises from pylada.process.program import ProgramProcess from pylada.process import Fail stdout = str(tmpdir.join('stdout')) program = ProgramProcess( executable, outdir=str(tmpdir), stderr=str(tmpdir.join('OMG')), cmdline=['--sleep', 0, '--order', 50, '--fail-at-end'], stdout=stdout, dompi=True ) with raises(Fail): program.start(comm) program.wait()
def test_full_execution(executable, tmpdir, comm): from pylada.process.program import ProgramProcess from pylada.process import Fail stdout = str(tmpdir.join('stdout')) program = ProgramProcess(executable, outdir=str(tmpdir), stderr=str(tmpdir.join('OMG')), cmdline=['--sleep', 0, '--order', 50], stdout=stdout, dompi=True) program.start(comm) program.wait() assert True
def test_fail_at_end(executable, tmpdir, comm): from pytest import raises from pylada.process.program import ProgramProcess from pylada.process import Fail stdout = str(tmpdir.join('stdout')) program = ProgramProcess( executable, outdir=str(tmpdir), stderr=str(tmpdir.join('OMG')), cmdline=['--sleep', 0, '--order', 50, '--fail-at-end'], stdout=stdout, dompi=True) with raises(Fail): program.start(comm) program.wait()
def test_fail_on_poll_midway(tmpdir, comm, executable): """ Tests ProgramProcess. Includes failure modes. """ from pytest import raises from pylada.process.program import ProgramProcess from pylada.process import Fail stdout = str(tmpdir.join('stdout')) program = ProgramProcess( executable, outdir=str(tmpdir), stderr=str(tmpdir.join('OMG')), cmdline=['--sleep', 0, '--order', 50, '--fail-mid-call'], stdout=stdout, dompi=True ) with raises(Fail): program.start(comm) program.wait()
def test_fail_on_poll_midway(tmpdir, comm, executable): """ Tests ProgramProcess. Includes failure modes. """ from pytest import raises from pylada.process.program import ProgramProcess from pylada.process import Fail stdout = str(tmpdir.join('stdout')) program = ProgramProcess( executable, outdir=str(tmpdir), stderr=str(tmpdir.join('OMG')), cmdline=['--sleep', 0, '--order', 50, '--fail-mid-call'], stdout=stdout, dompi=True) with raises(Fail): program.start(comm) program.wait()
def test(executable): """ Tests ProgramProcess. Includes failure modes. """ from tempfile import mkdtemp from os.path import join from shutil import rmtree from pylada.process.program import ProgramProcess from pylada.process import Fail, NotStarted from pylada.misc import Changedir from pylada import default_comm as comm from functional import ExtractSingle as Extract dir = mkdtemp() try: with Changedir(dir) as pwd: pass stdout = join(dir, 'stdout') program = ProgramProcess( executable, outdir=dir, cmdline=['--sleep', 0, '--order', 4], stdout=stdout, dompi=True ) # program not started. should fail. try: program.poll() except NotStarted: pass else: raise Exception() try: program.wait() except NotStarted: pass else: raise Exception() # now starting for real. assert program.start(comm) == False assert program.process is not None while not program.poll(): continue extract = Extract(stdout) assert extract.success assert abs(extract.pi-3.146801e+00) < 1e-2 * extract.error assert abs(extract.error-0.005207865) < 1e-2 * extract.error assert extract.comm['n'] == comm['n'] # restart assert program.process is None program.start(comm) assert program.process is None finally: rmtree(dir) # fail on poll try: with Changedir(dir) as pwd: pass stdout = join(dir, 'stdout') program = ProgramProcess( executable, outdir=dir, stderr=join(dir, 'shit'), cmdline=['--sleep', 0, '--order', 666], stdout=stdout, dompi=True ) program.start(comm) while not program.poll(): continue except Fail: pass except: raise else: raise Exception() finally: rmtree(dir) # fail on wait try: with Changedir(dir) as pwd: pass stdout = join(dir, 'stdout') program = ProgramProcess( executable, outdir=dir, stderr=join(dir, 'shit'), cmdline=['--sleep', 0, '--order', 666], stdout=stdout, dompi=True ) program.start(comm) program.wait() except Fail: pass else: raise Exception() finally: rmtree(dir) try: with Changedir(dir) as pwd: pass stdout = join(dir, 'stdout') program = ProgramProcess( executable, outdir=dir, stderr=join(dir, 'shit'), cmdline=['--sleep', 0, '--order', 6666], stdout=stdout, dompi=True ) program.start(comm) while not program.poll(): continue except Fail: pass else: raise Exception() finally: rmtree(dir)
def test(executable): """ Tests ProgramProcess. Includes failure modes. """ from tempfile import mkdtemp from os.path import join from shutil import rmtree from pylada.process.program import ProgramProcess from pylada.process import Fail, NotStarted from pylada.misc import Changedir from pylada import default_comm as comm from functional import ExtractSingle as Extract dir = mkdtemp() try: with Changedir(dir) as pwd: pass stdout = join(dir, 'stdout') program = ProgramProcess(executable, outdir=dir, cmdline=['--sleep', 0, '--order', 4], stdout=stdout, dompi=True) # program not started. should fail. try: program.poll() except NotStarted: pass else: raise Exception() try: program.wait() except NotStarted: pass else: raise Exception() # now starting for real. assert program.start(comm) == False assert program.process is not None while not program.poll(): continue extract = Extract(stdout) assert extract.success assert abs(extract.pi - 3.146801e+00) < 1e-2 * extract.error assert abs(extract.error - 0.005207865) < 1e-2 * extract.error assert extract.comm['n'] == comm['n'] # restart assert program.process is None program.start(comm) assert program.process is None finally: rmtree(dir) # fail on poll try: with Changedir(dir) as pwd: pass stdout = join(dir, 'stdout') program = ProgramProcess(executable, outdir=dir, stderr=join(dir, 'shit'), cmdline=['--sleep', 0, '--order', 666], stdout=stdout, dompi=True) program.start(comm) while not program.poll(): continue except Fail: pass except: raise else: raise Exception() finally: rmtree(dir) # fail on wait try: with Changedir(dir) as pwd: pass stdout = join(dir, 'stdout') program = ProgramProcess(executable, outdir=dir, stderr=join(dir, 'shit'), cmdline=['--sleep', 0, '--order', 666], stdout=stdout, dompi=True) program.start(comm) program.wait() except Fail: pass else: raise Exception() finally: rmtree(dir) try: with Changedir(dir) as pwd: pass stdout = join(dir, 'stdout') program = ProgramProcess(executable, outdir=dir, stderr=join(dir, 'shit'), cmdline=['--sleep', 0, '--order', 6666], stdout=stdout, dompi=True) program.start(comm) while not program.poll(): continue except Fail: pass else: raise Exception() finally: rmtree(dir)