Example #1
0
def tasks():
    return {
        'SimpleTask':
        TaskInfos(cls=SimpleTask, metadata={'meta': True}),
        'ComplexTask':
        TaskInfos(cls=ComplexTask,
                  metadata={
                      'group': 'Complex',
                      'meta': False
                  })
    }
Example #2
0
def test_register_interface_decl_children2(int_decl, collector):
    """Test handling child type issue when extending.

    """
    infos = TaskInfos()
    infos.interfaces['Test'] = InterfaceInfos()
    collector.contributions['ecpy.Task'] = infos

    task, interface = int_decl
    task.task = 'ecpy.Task'
    interface.interface = 'Test'
    interface.insert_children(None, [Task()])

    tb = {}
    task.register(collector, tb)
    assert ('ecpy.Task:Test' in tb and 'Interface' in tb['ecpy.Task:Test'])
Example #3
0
def test_analysing_instr_task_dependencies(monkeypatch, task_workbench,
                                           task_dep_collector,
                                           profile_dep_collector,
                                           driver_dep_collector):
    """Test analysing the dependencies of a task.

    """
    plugin = task_workbench.get_plugin('ecpy.tasks')
    plugin._tasks.contributions['ecpy.InstrumentTask'] =\
        TaskInfos(cls=InstrumentTask, instruments=['test'])

    dep = set()
    errors = dict()
    t = InstrumentTask(selected_instrument=('test', 'dummy', 'c', None))
    run = task_dep_collector.analyse(task_workbench, t, getattr, dep, errors)

    assert run == {
        'ecpy.tasks.instruments.drivers', 'ecpy.tasks.instruments.profiles'
    }
    assert 'ecpy.InstrumentTask' in dep
    assert not errors

    dep.clear()
    profile_dep_collector.analyse(task_workbench, t, dep, errors)
    assert 'test' in dep
    assert not errors

    dep.clear()
    driver_dep_collector.analyse(task_workbench, t, dep, errors)
    assert 'dummy' in dep
    assert not errors
Example #4
0
def test_register_interface_decl_children2(int_decl, collector):
    """Test handling child type issue when extending.

    """
    infos = TaskInfos()
    infos.interfaces['Test'] = InterfaceInfos()
    collector.contributions['ecpy.Task'] = infos

    task, interface = int_decl
    task.task = 'ecpy.Task'
    interface.interface = 'Test'
    interface.insert_children(None, [Task()])

    tb = {}
    task.register(collector, tb)
    assert 'ecpy.Task.Test' in tb and 'Interface' in tb['ecpy.Task.Test']
Example #5
0
def exec_infos(measure_workbench, measure, tmpdir, process_engine,
               sync_server):

    tp = measure_workbench.get_plugin('ecpy.tasks')
    tp._tasks.contributions['tests.WaitingTask'] = TaskInfos(cls=WaitingTask)

    r = RootTask(default_path=text(tmpdir))
    r.add_child_task(0, WaitingTask(name='test1', sock_id='test1',
                                    sync_port=sync_server.port))
    r.add_child_task(1, WaitingTask(name='test2', sock_id='test2',
                                    sync_port=sync_server.port))

    measure.root_task = r
    deps = measure.dependencies
    res, msg, errors = deps.collect_runtimes()
    assert res

    return ExecutionInfos(
            id='test',
            task=r,
            build_deps=deps.get_build_dependencies().dependencies,
            runtime_deps=deps.get_runtime_dependencies('main'),
            observed_entries=['test'],
            checks=not measure.forced_enqueued,
            )
Example #6
0
def test_register_interface_extend_task(collector, int_decl):
    """Test extending a task by adding interfaces.

    """
    collector.contributions['ecpy.Task'] = TaskInfos()
    task, _ = int_decl
    task.task = 'ecpy.Task'
    task.register(collector, {})
    assert collector.contributions['ecpy.Task'].interfaces
Example #7
0
def instr_task_workbench(prof_plugin):
    """Workbench with instrument and task support and patched task.

    """
    w = prof_plugin.workbench
    w.register(TasksManagerManifest())
    p = w.get_plugin('ecpy.tasks')
    infos = TaskInfos(cls=InterInstrTask,
                      instruments=['tests.test.FalseDriver'])
    infos.interfaces = {'test.I':
                        InterfaceInfos(cls=TaskInterface, parent=infos,
                                       instruments=['tests.test.FalseDriver4',
                                                    'tests.test.FalseDriver2'],
                                       )
                        }
    p._tasks.contributions['ecpy.InstrumentTask'] = infos

    return w
Example #8
0
def test_register_interface_extend_interface1(collector, int_decl):
    """Test extending an interface.

    """
    infos = TaskInfos()
    infos.interfaces['Test'] = InterfaceInfos()
    collector.contributions['ecpy.Task'] = infos

    task, interface = int_decl
    task.task = 'ecpy.Task'
    interface.interface = 'Test'
    interface.instruments = ['test']
    interface.dependencies = ['dep']

    task.register(collector, {})
    interface = collector.contributions['ecpy.Task'].interfaces['Test']
    assert interface.instruments == {'test'}
    assert 'dep' in interface.dependencies
Example #9
0
def test_register_interface_decl_duplicate1(int_decl, collector):
    """Test handling duplicate : in collector.

    """
    tb = {}
    task, i = int_decl
    infos = TaskInfos(interfaces={'ecpy.IterableLoopInterface': None})
    collector.contributions[task.id] = infos
    i.register(collector, tb)
    assert 'ecpy.LoopTask:ecpy.IterableLoopInterface_duplicate1' in tb
Example #10
0
def test_register_interface_extend_interface1(collector, int_decl):
    """Test extending an interface.

    """
    infos = TaskInfos()
    infos.interfaces['Test'] = InterfaceInfos()
    collector.contributions['ecpy.Task'] = infos

    task, interface = int_decl
    task.task = 'ecpy.Task'
    interface.interface = 'Test'
    interface.instruments = ['test']
    interface.dependencies = ['dep']

    task.register(collector, {})
    interface = collector.contributions['ecpy.Task'].interfaces['Test']
    assert interface.instruments == {'test'}
    assert 'dep' in interface.dependencies
    assert len(interface.dependencies) == 3
Example #11
0
def test_register_task_decl_extend3(collector, task_decl):
    """Test extending a task using wrong children.

    """
    tb = {}
    collector.contributions['ecpy.Task'] = TaskInfos()
    task_decl.task = 'ecpy.Task'
    task_decl.insert_children(None, [Task()])
    task_decl.register(collector, tb)
    assert 'ecpy.Task' in tb
Example #12
0
def test_unregister_interface_decl4(collector, int_decl):
    """Test unregistering an interface simply contributing instruments.

    """
    infos = TaskInfos()
    infos.interfaces['Test'] = InterfaceInfos()
    collector.contributions['ecpy.Task'] = infos

    task, interface = int_decl
    task.task = 'ecpy.Task'
    interface.interface = 'Test'
    interface.instruments = ['test']
    interface.dependencies = ['dep']

    task.register(collector, {})
    interface = collector.contributions['ecpy.Task'].interfaces['Test']
    assert interface.instruments == {'test'}
    task.unregister(collector)
    assert not interface.instruments
    assert not interface.dependencies
Example #13
0
def test_nested_interfaces_extend1(nested_int_decl, collector):
    """Test registering, unregistering an interface extending an interface
    to an interface.

    """
    infos = TaskInfos()
    infos.interfaces['Test'] = InterfaceInfos(interfaces={'Nested':
                                                          InterfaceInfos()})
    collector.contributions['ecpy.Task'] = infos

    task, interface = nested_int_decl
    task.task = 'ecpy.Task'
    interface.parent.interface = 'Test'
    interface.interface = 'Nested'
    interface.instruments = ['test']

    task.register(collector, {})
    i = collector.contributions['ecpy.Task'].interfaces['Test']
    assert i.interfaces['Nested'].instruments == {'test'}
    interface.parent.unregister(collector)
Example #14
0
def test_unregister_interface_decl4(collector, int_decl):
    """Test unregistering an interface simply contributing instruments.

    """
    infos = TaskInfos()
    infos.interfaces['Test'] = InterfaceInfos()
    collector.contributions['ecpy.Task'] = infos

    task, interface = int_decl
    task.task = 'ecpy.Task'
    interface.interface = 'Test'
    interface.instruments = ['test']
    interface.dependencies = ['dep']

    task.register(collector, {})
    interface = collector.contributions['ecpy.Task'].interfaces['Test']
    assert interface.instruments == {'test'}
    task.unregister(collector)
    assert not interface.instruments
    assert not interface.dependencies
Example #15
0
def test_nested_interfaces_extend1(nested_int_decl, collector):
    """Test registering, unregistering an interface extending an interface
    to an interface.

    """
    infos = TaskInfos()
    infos.interfaces['Test'] = InterfaceInfos(
        interfaces={'Nested': InterfaceInfos()})
    collector.contributions['ecpy.Task'] = infos

    task, interface = nested_int_decl
    task.task = 'ecpy.Task'
    interface.parent.interface = 'Test'
    interface.interface = 'Nested'
    interface.instruments = ['test']

    task.register(collector, {})
    i = collector.contributions['ecpy.Task'].interfaces['Test']
    assert i.interfaces['Nested'].instruments == {'test'}
    interface.parent.unregister(collector)
Example #16
0
def instr_task_workbench(prof_plugin):
    """Workbench with instrument and task support and patched task.

    """
    w = prof_plugin.workbench
    w.register(TasksManagerManifest())
    p = w.get_plugin('ecpy.tasks')
    infos = TaskInfos(cls=InterInstrTask,
                      instruments=['tests.test.FalseDriver'])
    infos.interfaces = {
        'test.I':
        InterfaceInfos(
            cls=TaskInterface,
            parent=infos,
            instruments=['tests.test.FalseDriver4', 'tests.test.FalseDriver2'],
        )
    }
    p._tasks.contributions['ecpy.InstrumentTask'] = infos

    return w
Example #17
0
def test_unregister_task_decl3(collector, task_decl):
    """Test unregistering a task simply contributing instruments.

    """
    collector.contributions['ecpy.Task'] = TaskInfos()
    task_decl.task = 'Task'
    task_decl.instruments = ['test']
    task_decl.dependencies = ['dep']
    task_decl.register(collector, {})
    task_decl.unregister(collector)
    assert not collector.contributions['ecpy.Task'].instruments
    assert not collector.contributions['ecpy.Task'].dependencies
Example #18
0
def test_register_task_decl_extend1(collector, task_decl):
    """Test extending a task.

    """
    collector.contributions['ecpy.Task'] = TaskInfos()
    task_decl.task = 'ecpy.Task'
    task_decl.instruments = ['test']
    task_decl.dependencies = ['dep']
    task_decl.register(collector, {})
    infos = collector.contributions['ecpy.Task']
    assert infos.instruments == set(['test'])
    assert infos.dependencies == set(['dep'])
Example #19
0
def test_analysing_instr_interface_dependencies(monkeypatch, task_workbench,
                                                interface_dep_collector,
                                                i_profile_dep_collector,
                                                i_driver_dep_collector):
    """Test analysing the dependencies of an interface.

    """
    class FalseI(TaskInterface):

        __slots__ = ('__dict__')

    plugin = task_workbench.get_plugin('ecpy.tasks')
    p_infos = TaskInfos(cls=InstrumentTask, instruments=['test'])
    plugin._tasks.contributions['ecpy.InstrumentTask'] = p_infos
    p_infos.interfaces['tests.FalseI'] =\
        InterfaceInfos(cls=FalseI, instruments=['test'], parent=p_infos)

    dep = set()
    errors = dict()
    i = FalseI()
    t = InstrumentTask(selected_instrument=('test', 'dummy', 'c', None))
    i.task = t
    run = interface_dep_collector.analyse(task_workbench, i, getattr, dep,
                                          errors)

    assert run == {
        INSTR_RUNTIME_INTERFACE_DRIVERS_ID, INSTR_RUNTIME_INTERFACE_PROFILES_ID
    }
    assert 'ecpy.InstrumentTask:tests.FalseI' in dep
    assert not errors

    dep.clear()
    i_profile_dep_collector.analyse(task_workbench, i, dep, errors)
    assert 'test' in dep
    assert not errors

    dep.clear()
    i_driver_dep_collector.analyse(task_workbench, i, dep, errors)
    assert 'dummy' in dep
    assert not errors

    i.selected_instrument = ('test2', 'dummy2', 'c', None)

    dep.clear()
    i_profile_dep_collector.analyse(task_workbench, i, dep, errors)
    assert 'test2' in dep
    assert not errors

    dep.clear()
    i_driver_dep_collector.analyse(task_workbench, i, dep, errors)
    assert 'dummy2' in dep
    assert not errors
Example #20
0
def test_register_interface_extend_interface2(collector, int_decl):
    """Test extending an interface not yet declared.

    """
    collector.contributions['ecpy.Task'] = TaskInfos()

    task, interface = int_decl
    task.task = 'ecpy.Task'
    interface.interface = 'Test'
    interface.instruments = ['test']

    task.register(collector, {})
    assert collector._delayed == [interface]