示例#1
0
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
示例#2
0
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!")
示例#3
0
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
示例#6
0
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)
示例#8
0
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)
示例#10
0
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
示例#11
0
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
示例#12
0
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
示例#13
0
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)
示例#14
0
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])
示例#15
0
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