コード例 #1
0
ファイル: conftest.py プロジェクト: slactjohnson/pswalker
def RE():
    """
    Standard logging runengine
    """
    RE = RunEngine({})
    collector = MsgCollector(msg_hook=run_engine_logger.debug)
    RE.msg_hook = collector
    return RE
コード例 #2
0
def test_pseudo_mv(hw, RE, pln):
    p = hw.pseudo3x3
    m_col = MsgCollector()
    RE.msg_hook = m_col

    RE(pln(p.pseudo1, 1, p.pseudo2, 1))
    expecte_objs = [p, None]
    assert len(m_col.msgs) == 2
    assert [m.obj for m in m_col.msgs] == expecte_objs
コード例 #3
0
def test_reset_wrapper(hw, RE):
    p = hw.pseudo3x3
    m_col = MsgCollector()
    RE.msg_hook = m_col

    RE(bp.relative_inner_product_scan([], 1, p.pseudo1, 0, 1, p.pseudo2, 0, 1))
    expecte_objs = [
        p, None, None, p, None, p, None, None, p, None, None, p, p, None
    ]
    assert len(m_col.msgs) == 14
    assert [m.obj for m in m_col.msgs] == expecte_objs
コード例 #4
0
def test_nonrewindable_detector(RE, hw, start_state, msg_seq):
    class FakeSig:
        def get(self):
            return False

    hw.det.rewindable = FakeSig()

    RE.rewindable = start_state
    m_col = MsgCollector()
    RE.msg_hook = m_col

    RE(run_wrapper(trigger_and_read([hw.motor, hw.det])))

    assert [m.command for m in m_col.msgs] == msg_seq
コード例 #5
0
def test_unresumable_suspend_fail(RE):
    'Tests what happens when a soft pause is requested from a suspended state'

    scan = [Msg('clear_checkpoint'), Msg('sleep', None, 2)]
    m_coll = MsgCollector()
    RE.msg_hook = m_coll

    ev = asyncio.Event(loop=RE.loop)
    threading.Timer(.1, partial(RE.request_suspend, fut=ev.wait)).start()
    threading.Timer(1, ev.set).start()
    start = time.time()
    with pytest.raises(RunEngineInterrupted):
        RE(scan)
    stop = time.time()
    assert .1 < stop - start < 1
コード例 #6
0
ファイル: test_run_engine.py プロジェクト: gjwillms/bluesky
def test_nonrewindable_detector(fresh_RE, motor_det, start_state, msg_seq):
    class FakeSig:
        def get(self):
            return False

    motor, det = motor_det
    det.rewindable = FakeSig()

    RE = fresh_RE
    RE.rewindable = start_state
    m_col = MsgCollector()
    RE.msg_hook = m_col

    RE(bp.run_wrapper(bp.trigger_and_read([motor, det])))

    assert [m.command for m in m_col.msgs] == msg_seq
コード例 #7
0
ファイル: test_suspenders.py プロジェクト: vherzog/bluesky
def test_unresumable_suspend_fail(fresh_RE):
    'Tests what happens when a soft pause is requested from a suspended state'
    RE = fresh_RE

    scan = [Msg('clear_checkpoint'), Msg('sleep', None, 50)]
    m_coll = MsgCollector()
    RE.msg_hook = m_coll

    ev = asyncio.Event(loop=RE.loop)
    loop = RE.loop
    loop.call_later(.1, partial(RE.request_suspend, fut=ev.wait()))
    loop.call_later(1, ev.set)
    start = time.time()
    with pytest.raises(RunEngineInterrupted):
        RE(scan, raise_if_interrupted=True)
    stop = time.time()
    assert .1 < stop - start < 1
コード例 #8
0
def test_intreupted_with_callbacks(fresh_RE, int_meth, stop_num, msg_num):
    RE = fresh_RE

    docs = defaultdict(list)

    def collector_cb(name, doc):
        nonlocal docs
        docs[name].append(doc)

    RE.msg_hook = MsgCollector()
    RE(subs_wrapper(run_wrapper(pause()), {'all': collector_cb}))
    getattr(RE, int_meth)()

    assert len(docs['start']) == 1
    assert len(docs['event']) == 0
    assert len(docs['descriptor']) == 0
    assert len(docs['stop']) == stop_num
    assert len(RE.msg_hook.msgs) == msg_num
コード例 #9
0
def test_interrupted_with_callbacks(RE, int_meth, stop_num, msg_num):

    docs = defaultdict(list)

    def collector_cb(name, doc):
        nonlocal docs
        docs[name].append(doc)

    RE.msg_hook = MsgCollector()

    with pytest.raises(RunEngineInterrupted):
        RE(subs_wrapper(run_wrapper(pause()), {"all": collector_cb}))
    getattr(RE, int_meth)()

    assert len(docs["start"]) == 1
    assert len(docs["event"]) == 0
    assert len(docs["descriptor"]) == 0
    assert len(docs["stop"]) == stop_num
    assert len(RE.msg_hook.msgs) == msg_num
コード例 #10
0
ファイル: test_run_engine.py プロジェクト: gjwillms/bluesky
def test_halt_from_pause(fresh_RE):
    RE = fresh_RE
    except_hit = False
    m_coll = MsgCollector()
    RE.msg_hook = m_coll

    def pausing_plan():
        nonlocal except_hit
        for j in range(5):
            yield Msg('null')
        try:
            yield Msg('pause')
        except Exception:
            yield Msg('null')
            except_hit = True
            raise

    RE(pausing_plan())
    RE.halt()
    assert not except_hit
    assert [m.command for m in m_coll.msgs] == ['null'] * 5 + ['pause']
コード例 #11
0
def test_halt_from_pause(RE):
    except_hit = False
    m_coll = MsgCollector()
    RE.msg_hook = m_coll

    def pausing_plan():
        nonlocal except_hit
        for j in range(5):
            yield Msg('null')
        try:
            yield Msg('pause')
        except Exception:
            yield Msg('null')
            except_hit = True
            raise

    with pytest.raises(RunEngineInterrupted):
        RE(pausing_plan())
    RE.halt()
    assert not except_hit
    assert [m.command for m in m_coll.msgs] == ['null'] * 5 + ['pause']
コード例 #12
0
ファイル: test_run_engine.py プロジェクト: gjwillms/bluesky
def test_halt_async(fresh_RE):
    RE = fresh_RE
    except_hit = False
    m_coll = MsgCollector()
    RE.msg_hook = m_coll

    def sleeping_plan():
        nonlocal except_hit
        try:
            yield Msg('sleep', None, 50)
        except Exception:
            yield Msg('null')
            except_hit = True
            raise

    RE.loop.call_later(.1, RE.halt)
    start = ttime.time()
    RE(sleeping_plan())
    stop = ttime.time()
    assert .09 < stop - start < .2
    assert not except_hit
    assert [m.command for m in m_coll.msgs] == ['sleep']
コード例 #13
0
ファイル: test_run_engine.py プロジェクト: tekinbicer/bluesky
def test_nonrewindable_finalizer(fresh_RE, motor_det, start_state, msg_seq):
    class FakeSig:
        def get(self):
            return False

    motor, det = motor_det
    det.rewindable = FakeSig()

    RE = fresh_RE
    RE.rewindable = start_state
    m_col = MsgCollector()
    RE.msg_hook = m_col

    def evil_plan():
        assert RE.rewindable is False
        yield Msg('aardvark')
    with pytest.raises(KeyError):
        RE(bp.rewindable_wrapper(evil_plan(), False))

    assert RE.rewindable is start_state

    assert [m.command for m in m_col.msgs] == msg_seq
コード例 #14
0
ファイル: test_run_engine.py プロジェクト: ondrocks/bluesky
def test_halt_async(RE):
    except_hit = False
    m_coll = MsgCollector()
    RE.msg_hook = m_coll

    def sleeping_plan():
        nonlocal except_hit
        try:
            yield Msg('sleep', None, 50)
        except Exception:
            yield Msg('null')
            except_hit = True
            raise

    threading.Timer(.1, RE.halt).start()
    start = ttime.time()
    with pytest.raises(RunEngineInterrupted):
        RE(sleeping_plan())
    stop = ttime.time()
    assert .09 < stop - start < 5
    assert not except_hit
    assert [m.command for m in m_coll.msgs] == ['sleep']
コード例 #15
0
def test_ramp(RE, db):
    from ophyd.positioner import SoftPositioner
    from ophyd import StatusBase
    from bluesky.examples import SynGauss

    tt = SoftPositioner(name='mot')
    tt.set(0)
    dd = SynGauss('det', tt, 'mot', 0, 3)

    st = StatusBase()

    def kickoff():
        yield Msg('null')
        for j, v in enumerate(np.linspace(-5, 5, 10)):
            RE.loop.call_later(.1 * j, lambda v=v: tt.set(v))
        RE.loop.call_later(1.2, st._finished)
        return st

    def inner_plan():
        yield from trigger_and_read([dd])

    g = ramp_plan(kickoff(), tt, inner_plan, period=0.08)
    RE.subscribe('all', db.mds.insert)
    RE.msg_hook = MsgCollector()
    rs_uid, = RE(g)
    hdr = db[-1]
    assert hdr.start.uid == rs_uid
    assert len(hdr.descriptors) == 2

    assert set([d['name'] for d in hdr.descriptors]) == \
        set(['primary', 'mot_monitor'])

    primary_events = list(db.get_events(hdr, stream_name='primary'))
    assert len(primary_events) > 11

    monitor_events = list(db.get_events(hdr, stream_name='mot_monitor'))
    assert len(monitor_events) == 10
コード例 #16
0
ファイル: test_run_engine.py プロジェクト: gjwillms/bluesky
def test_prompt_stop(fresh_RE, cancel_func):
    RE = fresh_RE
    except_hit = False
    m_coll = MsgCollector()
    RE.msg_hook = m_coll

    def sleeping_plan():
        nonlocal except_hit
        try:
            yield Msg('sleep', None, 50)
        except Exception:
            yield Msg('null')
            except_hit = True
            raise

    RE.loop.call_later(.1, partial(cancel_func, RE))
    start = ttime.time()
    RE(sleeping_plan())
    stop = ttime.time()
    if RE.state != 'idle':
        RE.abort()
    assert 0.09 < stop - start < .2
    assert except_hit
    assert [m.command for m in m_coll.msgs] == ['sleep', 'null']
コード例 #17
0
ファイル: test_run_engine.py プロジェクト: ondrocks/bluesky
def test_prompt_stop(RE, cancel_func):
    except_hit = False
    m_coll = MsgCollector()
    RE.msg_hook = m_coll

    def sleeping_plan():
        nonlocal except_hit
        try:
            yield Msg('sleep', None, 50)
        except Exception:
            yield Msg('null')
            except_hit = True
            raise

    threading.Timer(.1, partial(cancel_func, RE)).start()
    start = ttime.time()
    with pytest.raises(RunEngineInterrupted):
        RE(sleeping_plan())
    stop = ttime.time()
    if RE.state != 'idle':
        RE.abort()
    assert 0.09 < stop - start < 5
    assert except_hit
    assert [m.command for m in m_coll.msgs] == ['sleep', 'null']