def run_function_as_process_in_dialog(parent, thread_function, title, message, callback=None, project_id=None, job_id=None): dlg = ProcessDialog(parent=parent, message=message, caption=title, callback=callback) setup_process_gui_events(window=dlg, OnExcept=dlg.OnError, OnComplete=dlg.OnComplete) cb = event_agent(dlg, project_id=project_id, job_id=job_id) p = thread_utils.process_with_callbacks(target=thread_function, callback_final=cb.callback_final, callback_err=cb.callback_error, buffer_stdout=True, sleep_after_start=1) result = None abort = False if (dlg.run(p) == wx.ID_OK): result = dlg.get_result() elif dlg.exception_raised(): dlg.handle_error() elif (dlg.was_aborted()): abort = True wx.CallAfter(dlg.Destroy) if (abort): raise Abort() return result
def tst_warn_callback(): ch = _callback_handler() p = process_with_callbacks(target=_target_function08, callback_other=ch.cb_other) p.start() while p.isAlive(): pass assert (ch._other[0].message == "warn") assert (ch._other[0].data == "Hello, world!")
def tst_abort_2(): ch = _callback_handler() p = process_with_callbacks(target=_target_function07, callback_abort=ch.cb_abort) p.start() p.abort() while p.isAlive(): pass assert ch._abort == True
def tst_warn_callback () : ch = _callback_handler() p = process_with_callbacks( target=_target_function08, callback_other=ch.cb_other) p.start() while p.isAlive() : pass assert (ch._other[0].message == "warn") assert (ch._other[0].data == "Hello, world!")
def tst_abort_2 () : ch = _callback_handler() p = process_with_callbacks( target=_target_function07, callback_abort=ch.cb_abort) p.start() p.abort() while p.isAlive() : pass assert ch._abort == True
def tst_no_return_value(): ch = _callback_handler() p = process_with_callbacks(target=_target_function02, callback_stdout=ch.cb_stdout, callback_final=ch.cb_result, callback_err=ch.cb_err, callback_other=ch.cb_other) p.start() while p.isAlive(): pass ch.tst_run_success(expected_result=None)
def tst_no_return_value () : ch = _callback_handler() p = process_with_callbacks( target = _target_function02, callback_stdout = ch.cb_stdout, callback_final = ch.cb_result, callback_err = ch.cb_err, callback_other = ch.cb_other) p.start() while p.isAlive() : pass ch.tst_run_success(expected_result=None)
def tst_exceptions(): for f in [_target_function05a, _target_function05b]: ch = _callback_handler() p = process_with_callbacks(target=f, callback_err=ch.cb_err, callback_final=ch.cb_result) p.start() while p.isAlive(): pass ch.tst_error_raised() if f is _target_function05b: assert isinstance(ch._err, Sorry)
def tst_exceptions () : for f in [_target_function05a, _target_function05b] : ch = _callback_handler() p = process_with_callbacks( target = f, callback_err = ch.cb_err, callback_final = ch.cb_result) p.start() while p.isAlive() : pass ch.tst_error_raised() if f is _target_function05b : assert isinstance(ch._err, Sorry)
def tst_stdout(): tmpout = StringIO() _tst_print(tmpout) for buffer_stdout in [True, False]: ch = _callback_handler() p = process_with_callbacks(target=_target_function04, callback_stdout=ch.cb_stdout, buffer_stdout=buffer_stdout) p.start() while p.isAlive(): pass assert tmpout.getvalue() == ch._stdout
def tst_pause_resume_kill () : if (sys.platform == "win32") : print "Skipping pause/resume test (not available on Windows)" else : ch = _callback_handler_2() p = process_with_callbacks( target=_target_function09, callback_stdout=ch.cb_print, callback_pause=ch.cb_pause, callback_resume=ch.cb_resume, callback_abort=ch.cb_abort) p.start() time.sleep(1) p.pause() assert ch.paused current_data = str(ch.lines) time.sleep(5) assert (ch.lines == current_data) p.resume() assert ch.resumed while p.isAlive() : pass assert not ch.aborted assert (ch.lines.splitlines() == ['0','1','2','3','4','5','6','7','8','9']) #return # kill test ch = _callback_handler_2() p = process_with_callbacks( target=_target_function09, callback_stdout=ch.cb_print, callback_pause=ch.cb_pause, callback_resume=ch.cb_resume, callback_abort=ch.cb_abort) p.start() time.sleep(3) p.kill() assert ch.aborted
def tst_stdout () : import cStringIO tmpout = cStringIO.StringIO() _tst_print(tmpout) for buffer_stdout in [True, False] : ch = _callback_handler() p = process_with_callbacks( target = _target_function04, callback_stdout = ch.cb_stdout, buffer_stdout = buffer_stdout) p.start() while p.isAlive() : pass assert tmpout.getvalue() == ch._stdout
def tst_args_kwds () : ch = _callback_handler() p = process_with_callbacks( target = _target_function01, args = (-2, -2), kwargs = {"c": 2, "d" : 2}, callback_stdout = ch.cb_stdout, callback_final = ch.cb_result, callback_err = ch.cb_err, callback_other = ch.cb_other) p.start() while p.isAlive() : pass ch.tst_run_success(expected_result=True, expected_stdout=None, expected_other=None)
def tst_callbacks () : ch = _callback_handler() p = process_with_callbacks( target = _target_function03, callback_stdout = ch.cb_stdout, callback_final = ch.cb_result, callback_err = ch.cb_err, callback_other = ch.cb_other) p.start() while p.isAlive() : pass tstout = \ """0 1 2 3 """ ch.tst_run_success(expected_result=4, expected_stdout=tstout, expected_other=[0,1,2,3])
def run_function_as_process_in_dialog ( parent, thread_function, title, message, callback=None, project_id=None, job_id=None) : dlg = ProcessDialog( parent=parent, message=message, caption=title, callback=callback) setup_process_gui_events( window=dlg, OnExcept=dlg.OnError, OnComplete=dlg.OnComplete) cb = event_agent(dlg, project_id=project_id, job_id=job_id) p = thread_utils.process_with_callbacks( target=thread_function, callback_final=cb.callback_final, callback_err=cb.callback_error, buffer_stdout=True, sleep_after_start=1) result = None abort = False if (dlg.run(p) == wx.ID_OK) : result = dlg.get_result() elif dlg.exception_raised() : dlg.handle_error() elif (dlg.was_aborted()) : abort = True wx.CallAfter(dlg.Destroy) if (abort) : raise Abort() return result