Example #1
0
async def ptest(circuit, delay, slog):

    ie1 = edzed.InputExp('ie',
                         duration=0.25,
                         expired="exp",
                         initdef="ok1",
                         persistent=True)

    state = {}
    circuit.set_persistent_data(state)
    asyncio.create_task(circuit.run_forever())
    await asyncio.sleep(0.1)
    await circuit.shutdown()
    assert ie1.key in state

    # circuit 2
    await asyncio.sleep(delay)
    edzed.reset_circuit()
    circuit = edzed.get_circuit()
    circuit.set_persistent_data(state)
    logger = TimeLogger('logger')
    ie2 = edzed.InputExp('ie',
                         duration=0.25,
                         expired="exp",
                         initdef="ok2",
                         persistent=True,
                         on_output=edzed.Event(logger))
    asyncio.create_task(circuit.run_forever())
    await asyncio.sleep(0.30)
    await circuit.shutdown()

    logger.compare(slog)
Example #2
0
def test_reset_circuit(circuit):
    """Reset creates a new empty circuit."""
    assert circuit is edzed.get_circuit()
    assert list(circuit.getblocks()) == []
    blk = Noop('test')
    assert list(circuit.getblocks()) == [blk]

    edzed.reset_circuit()
    newcircuit = edzed.get_circuit()
    assert newcircuit is not circuit
    assert list(newcircuit.getblocks()) == []
Example #3
0
def test_no_cross_circuit_events(circuit):
    inp1 = edzed.Input('inp', comment="circuit 1", initdef=None)
    event = edzed.Event(inp1)
    init(circuit)
    event.send(inp1, value=1)
    assert inp1.output == 1

    edzed.reset_circuit()
    inp2 = edzed.Input('inp', comment="circuit 2", initdef=None)
    init(circuit)
    with pytest.raises(edzed.EdzedCircuitError,
                       match="not in the current circuit"):
        event.send(inp2, value=2)
Example #4
0
def test_no_cross_circuit_inputs(circuit):
    """No cross circuit connections. Constants are an exception."""
    noop1 = Noop('noop')
    msg1 = edzed.Const("hello!")
    init(circuit)

    edzed.reset_circuit()
    noop2 = Noop('noop').connect(noop1)
    circuit2 = edzed.get_circuit()
    with pytest.raises(ValueError, match="not in the current circuit"):
        init(circuit2)

    # Const objects do not belong to specific circuit
    edzed.reset_circuit()
    noop3 = Noop('noop').connect(msg1)
    circuit3 = edzed.get_circuit()
    init(circuit3)
Example #5
0
async def test_persistent(circuit):
    td = edzed.TimeDate("pers", persistent=True)
    storage = {}
    circuit.set_persistent_data(storage)
    asyncio.create_task(circuit.run_forever())
    await circuit.wait_init()
    assert td.get_state() == {'times': None, 'dates': None, 'weekdays': None}
    conf = edzed.TimeDate.parse("1:0-2:0", None, "7")
    td.event('reconfig', **conf)
    assert td.get_state() == conf
    await circuit.shutdown()
    assert storage[td.key] == conf

    edzed.reset_circuit()
    td = edzed.TimeDate("pers", persistent=True)
    circuit = edzed.get_circuit()
    circuit.set_persistent_data(storage)
    asyncio.create_task(circuit.run_forever())
    await circuit.wait_init()
    assert td.get_state() == conf
    await circuit.shutdown()
    assert storage[td.key] == conf
Example #6
0
async def test_persistent(circuit):
    td = edzed.TimeSpan("pers", persistent=True)
    storage = {}
    circuit.set_persistent_data(storage)
    asyncio.create_task(circuit.run_forever())
    await circuit.wait_init()
    assert td.get_state() == []
    conf = edzed.TimeSpan.parse(
        "2001August31.23:2:3-31.may2008 0:0,2011August31.1:2:3-31.may2018 1:59")
    td.event('reconfig', span=conf)
    assert td.get_state() == conf
    await circuit.shutdown()
    assert storage[td.key] == conf

    edzed.reset_circuit()
    td = edzed.TimeSpan("pers", persistent=True)
    circuit = edzed.get_circuit()
    circuit.set_persistent_data(storage)
    asyncio.create_task(circuit.run_forever())
    await circuit.wait_init()
    assert td.get_state() == conf
    await circuit.shutdown()
    assert storage[td.key] == conf
Example #7
0
def circuit():
    """Return a new empty circuit."""
    edzed.reset_circuit()
    return edzed.get_circuit()