コード例 #1
0
def test_simple_example2():
    producer = IntProducer(0, 40, 0.01)
    sum_agg = SumAggregator()(producer)
    printer = CommandlineConsumer()(sum_agg)
    flow = Flow([producer], [printer])
    flow.run()
    flow.join()
コード例 #2
0
def test_no_raise_error():
    a = IntProducer()
    b = IdentityProcessor()(a)
    c = IdentityProcessor()(b)
    d = CommandlineConsumer()(c)

    graph_engine = GraphEngine([a], [d])
コード例 #3
0
def test_raise_error_1():
    a = IntProducer()
    b = IdentityProcessor()(a)
    c = IdentityProcessor()(b)
    d = CommandlineConsumer()

    with pytest.raises(ValueError):
        graph_engine = GraphEngine([a], [d])
コード例 #4
0
def test_mp_example1():
    producer = IntProducer(0, 40, 0.1)
    identity = IdentityProcessor(nb_tasks = 5)(producer)
    identity1 = IdentityProcessor(nb_tasks = 5)(identity)
    joined = JoinerProcessor(nb_tasks = 5)(identity, identity1)
    printer = CommandlineConsumer()(joined)
    flow = Flow([producer], [printer])
    flow.run()
    flow.join()
コード例 #5
0
def test_taskmodulenode_example1():
    producer = IntProducer(0, 40, 0.05)
    identity = IdentityProcessor(nb_tasks = 1)(producer)
    identity1 = IdentityProcessor(nb_tasks = 1)(identity)
    joined = JoinerProcessor(nb_tasks = 1)(identity, identity1)
    task_module = TaskModuleNode(identity, joined)
    printer = CommandlineConsumer()(task_module)
    flow = Flow([producer], [printer])
    flow.run()
    flow.join()
コード例 #6
0
def test_graph_with_no_consumer():
    # Graph with no consumer should run.
    producer = IntProducer(0, 40, 0.05)
    identity = IdentityProcessor(nb_tasks=1)(producer)
    identity1 = IdentityProcessor(nb_tasks=1)(identity)
    joined = JoinerProcessor(nb_tasks=1)(identity, identity1)
    task_module = TaskModuleNode(identity, joined)
    flow = Flow([producer], [])
    flow.run()
    flow.join()
コード例 #7
0
def test_topological_sort():
    a = IntProducer()
    b = IdentityProcessor()(a)
    c = IdentityProcessor()(b)
    d = IdentityProcessor()(c)
    e = IdentityProcessor()(d)

    expected_tsort = [a, b, c, d, e]
    tsort = topological_sort([a])
    assert len(tsort) == len(expected_tsort), "topological sort returned different number of nodes"
    assert all([tsort[i] is expected_tsort[i] for i in range(len(tsort))]), "wrong topological sort"
コード例 #8
0
def test_graph_with_deadend_processor():
    # Graph with no consumer should run.
    producer = IntProducer(0, 40, 0.05)
    identity = IdentityProcessor(nb_tasks=1)(producer)
    identity1 = IdentityProcessor(nb_tasks=1)(identity)
    joined = JoinerProcessor(nb_tasks=1)(identity, identity1)
    task_module = TaskModuleNode(identity, joined)
    dead_end = IdentityProcessor()(task_module)
    printer = CommandlineConsumer()(task_module)
    flow = Flow([producer], [printer])
    flow.run()
    flow.join()
コード例 #9
0
def test_taskmodule_node_1():
    '''
    Tests that task module can create its own parents without
    having to take them from the entry node.
    '''

    zero = IntProducer()
    a = IdentityProcessor()
    b = IdentityProcessor()(a)
    c = IdentityProcessor()(b)
    task_module = TaskModuleNode(a, c)(zero)
    out = CommandlineConsumer()(task_module)

    graph_engine = GraphEngine([zero], [out])
コード例 #10
0
def test_nb_tasks_created():
    #1. Test that the number of tasks created is equal to number of nodes
    A = IntProducer()
    B = IdentityProcessor()(A)
    C = IdentityProcessor()(B)
    D = JoinerProcessor()(C)
    E = JoinerProcessor()(B, C, D)

    tsort = topological_sort([A])
    tasks_data = _task_data_from_node_tsort(tsort)

    ee = RealtimeExecutionEngine()
    ee._al_create_processes(tasks_data)
    assert len(tsort) == len(ee._procs)
コード例 #11
0
def test_taskmodule_node_2():
    '''
    Tests that task module can take the childs from its exit_entry
    '''
    zero = IntProducer()
    a = IdentityProcessor()(zero)
    b = IdentityProcessor()(a)
    c = IdentityProcessor()(b)
    out = CommandlineConsumer()(c)
    task_module = TaskModuleNode(a, c)

    graph_engine = GraphEngine([zero], [out])
    tsort = graph_engine.topological_sort()
    assert len(tsort) == 3
    assert task_module in tsort
コード例 #12
0
def test_nb_tasks_created_1():
    #2. Test that number of tasks created is different than number of
    # nodes, in the case of TaskModuleProcessor
    zero = IntProducer()
    a = IdentityProcessor()(zero)
    b = IdentityProcessor()(a)
    c = IdentityProcessor()(b)
    d = JoinerProcessor()(b, c)
    e = IdentityProcessor()(d)
    f = JoinerProcessor()(d, e, c, b)
    module = TaskModuleNode(a, f)
    out = CommandlineConsumer()(module)

    tsort = topological_sort([zero])
    tasks_data = _task_data_from_node_tsort(tsort)

    ee = RealtimeExecutionEngine()
    ee._al_create_processes(tasks_data)
    assert len(ee._procs) == 3
コード例 #13
0
def test_taskmodule_node_3():
    '''
    Test error when trying to put module inside of moduel
    '''

    #2. Tests module inside of module
    zero = IntProducer()
    a = IdentityProcessor()(zero)
    b = IdentityProcessor()(a)
    c = IdentityProcessor()(b)
    d = JoinerProcessor()(b, c)
    e = IdentityProcessor()(d)
    f = JoinerProcessor()(d, e, c, b)
    module = TaskModuleNode(a, f)

    g = IdentityProcessor()(module)
    h = IdentityProcessor()(g)
    i = IdentityProcessor()(h)
    with pytest.raises(ValueError):
        module1 = TaskModuleNode(module, i)
コード例 #14
0
def test_gpu_nodes_not_accepted(monkeypatch):
    #2. Test that gpu node rejects because already all gpus were allocated
    # to other nodes.
    def gpus_mock():
        return [0, 1]

    monkeypatch.setattr(videoflow.utils.system,
                        'get_gpus_available_to_process', gpus_mock)

    A = IntProducer()
    B = IdentityProcessorGpuOnly()(A)
    C = IdentityProcessorGpuOnly()(B)
    D = IdentityProcessorGpuOnly()(C)
    E = JoinerProcessor()(D)
    F = JoinerProcessor()(B, C, D, E)

    tsort = topological_sort([A])
    tasks_data = _task_data_from_node_tsort(tsort)

    ee = RealtimeExecutionEngine()
    with pytest.raises(RuntimeError):
        ee._al_create_processes(tasks_data)
コード例 #15
0
def test_taskmodule_node():
    '''
    Tests simple task module creation
    and tests that it can be part of a flow
    '''
    #1. Tests simple module first
    zero = IntProducer()
    a = IdentityProcessor()(zero)
    b = IdentityProcessor()(a)
    c = IdentityProcessor()(b)
    d = JoinerProcessor()(b, c)
    e = IdentityProcessor()(d)
    f = JoinerProcessor()(d, e, c, b)
    module = TaskModuleNode(a, f)
    out = CommandlineConsumer()(module)

    #2. Tests that you raise an exception as error here.
    with pytest.raises(RuntimeError):
        out1 = CommandlineConsumer()(f)
    graph_engine = GraphEngine([zero], [out])

    tsort = graph_engine.topological_sort()
    assert len(tsort) == 3
コード例 #16
0
from videoflow.core import Flow
from videoflow.producers import IntProducer
from videoflow.processors import IdentityProcessor, JoinerProcessor
from videoflow.consumers import CommandlineConsumer

producer = IntProducer(0, 40, 0.1)
identity = IdentityProcessor()(producer)
identity1 = IdentityProcessor()(identity)
joined = JoinerProcessor()(identity, identity1)
printer = CommandlineConsumer()(joined)
flow = Flow([producer], [printer],maintain_states=True,state_config={"flow_name":"simple_example","save_interval":25})
flow.run()
flow.join()
コード例 #17
0
from videoflow.core import Flow
from videoflow.producers import IntProducer
from videoflow.processors import IdentityProcessor, JoinerProcessor
from videoflow.consumers import CommandlineConsumer
from videoflow.core.constants import BATCH

reader = IntProducer(0, 100, 0.001)
game_state_processor = IdentityProcessor(fps=6, nb_tasks=1, name='i1')(reader)
hero_processors = JoinerProcessor()(reader, game_state_processor)
ability_processor = JoinerProcessor()(reader, game_state_processor,
                                      hero_processors)
ammo_processor = JoinerProcessor()(reader, game_state_processor)
death_processor = JoinerProcessor()(reader, game_state_processor)
hp_processor = JoinerProcessor()(reader, game_state_processor)
killfeed_processor = JoinerProcessor(fps=1, nb_tasks=5)(reader,
                                                        game_state_processor)
map_processor = JoinerProcessor()(reader, game_state_processor)
resurrect_processor = JoinerProcessor()(reader, game_state_processor)
sr_processor = JoinerProcessor()(reader, game_state_processor)
ultimate_processor = JoinerProcessor()(reader, game_state_processor)
player_score_processor = JoinerProcessor()(reader, game_state_processor)
consumer_before = JoinerProcessor()(
    reader, game_state_processor, hero_processors, death_processor,
    killfeed_processor, ammo_processor, hp_processor, ultimate_processor,
    ability_processor, player_score_processor, map_processor, sr_processor,
    resurrect_processor)
consumer = CommandlineConsumer()(consumer_before)
flow = Flow([reader], [consumer], flow_type=BATCH)
flow.run()
flow.join()