示例#1
0
def test_emission_queuing():
    plugin.instantiate(config["plugin"], None)
    queue_tester = plugin.get_instance("queue_tester")
    emit_store1 = plugin.get_output("emit_store1", None)
    emit_store2 = plugin.get_output("emit_store2", None)

    # daemon handles this, do it manually here since
    # we are not starting the daemon
    queue_tester._emit = [emit_store1, emit_store2]

    message = queue_tester.probe()
    queue_tester.queue_emission(message)

    queue_tester.send_emission()
    assert emit_store1.store[0] == message
    assert emit_store2.store == []

    queue_tester.send_emission()
    assert emit_store1.store[0] == message
    assert len(emit_store1.store) == 1
    assert emit_store2.store[0] == message
    assert len(emit_store2.store) == 1
    assert queue_tester._emit_queue.qsize() == 0

    message = queue_tester.probe()
    queue_tester.queue_emission(message)
    queue_tester.emit_all()
    assert len(emit_store1.store) == 2
    assert len(emit_store2.store) == 2
    assert queue_tester._emit_queue.qsize() == 0
示例#2
0
文件: test_plugin.py 项目: 20c/vaping
def test_emission_queuing():
    plugin.instantiate(config["plugin"], None)
    queue_tester = plugin.get_instance("queue_tester")
    emit_store1 = plugin.get_output("emit_store1", None)
    emit_store2 = plugin.get_output("emit_store2", None)

    # daemon handles this, do it manually here since
    # we are not starting the daemon
    queue_tester._emit = [emit_store1, emit_store2]

    message = queue_tester.probe()
    queue_tester.queue_emission(message)

    queue_tester.send_emission()
    assert emit_store1.store[0] == message
    assert emit_store2.store == []

    queue_tester.send_emission()
    assert emit_store1.store[0] == message
    assert len(emit_store1.store) == 1
    assert emit_store2.store[0] == message
    assert len(emit_store2.store) == 1
    assert queue_tester._emit_queue.qsize() == 0

    message = queue_tester.probe()
    queue_tester.queue_emission(message)
    queue_tester.emit_all()
    assert len(emit_store1.store) == 2
    assert len(emit_store2.store) == 2
    assert queue_tester._emit_queue.qsize() == 0
示例#3
0
    def _main(self):
        """
        process
        """
        probes = self.config.get('probes', None)
        if not probes:
            raise ValueError('no probes specified')

        for probe_config in self.config['probes']:
            probe = plugin.get_probe(probe_config, self.plugin_context)
            # FIXME - needs to check for output defined in plugin
            if 'output' not in probe_config:
                raise ValueError("no output specified")
            if len(probe_config['output']) != 1:
                raise NotImplementedError(
                    "only single output is currently supported")
            # get_probe instantiates, need to set _emit
            probe._emit = plugin.get_output(probe_config['output'][0],
                                            self.plugin_context)
            if not probe._emit.started:
                probe._emit.start()
                self.joins.append(probe._emit)

            probe.start()
            self.joins.append(probe)

        vaping.io.joinall(self.joins)
        return 0
示例#4
0
    def _main(self):
        """
        process
        """
        try:
            probes = self.config.get("probes", None)
            if not probes:
                raise ValueError("no probes specified")

            for probe_config in self.config["probes"]:
                probe = plugin.get_probe(probe_config, self.plugin_context)

                # get all output targets and start / join them
                for output_name in probe_config.get("output", []):
                    output = plugin.get_output(output_name,
                                               self.plugin_context)
                    if not output.started and not output.__class__.lazy_start:
                        output.start()
                    self.joins.append(output)
                    probe._emit.append(output)

                probe.start()
                self.joins.append(probe)

            vaping.io.join_plugins(self.joins)
        except Exception as exc:
            self.log.error(exc)

        return 0
示例#5
0
文件: daemon.py 项目: 20c/vaping
    def _main(self):
        """
        process
        """
        probes = self.config.get('probes', None)
        if not probes:
            raise ValueError('no probes specified')

        for probe_config in self.config['probes']:
            probe = plugin.get_probe(probe_config, self.plugin_context)
            # FIXME - needs to check for output defined in plugin
            if 'output' not in probe_config:
                raise ValueError("no output specified")

            # get all output targets and start / join them
            for output_name in probe_config['output']:
                output = plugin.get_output(output_name, self.plugin_context)
                if not output.started:
                    output.start()
                    self.joins.append(output)
                probe._emit.append(output)

            probe.start()
            self.joins.append(probe)

        vaping.io.joinall(self.joins)
        return 0
示例#6
0
    def _main(self):
        """
        process
        """
        probes = self.config.get('probes', None)
        if not probes:
            raise ValueError('no probes specified')

        for probe_config in self.config['probes']:
            probe = plugin.get_probe(probe_config, self.plugin_context)
            # FIXME - needs to check for output defined in plugin
            if 'output' not in probe_config:
                raise ValueError("no output specified")

            # get all output targets and start / join them
            for output_name in probe_config['output']:
                output = plugin.get_output(output_name, self.plugin_context)
                if not output.started:
                    output.start()
                    self.joins.append(output)
                probe._emit.append(output)

            probe.start()
            self.joins.append(probe)

        vaping.io.joinall(self.joins)
        return 0
示例#7
0
文件: test_plugin.py 项目: 20c/vaping
def test_emission_queuing():

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)

    plugin.instantiate(config["plugin"], None)
    queue_tester = plugin.get_instance("queue_tester")
    emit_store1 = plugin.get_output("emit_store1", None)
    emit_store2 = plugin.get_output("emit_store2", None)

    # plugins = [queue_tester, emit_store1, emit_store2]

    # daemon handles this, do it manually here since
    # we are not starting the daemon
    queue_tester._emit = [emit_store1, emit_store2]

    message = queue_tester.probe()
    asyncio.run(queue_tester.queue_emission(message))

    asyncio.run(queue_tester.send_emission())
    assert emit_store1.store[0] == message
    assert emit_store2.store == []

    asyncio.run(queue_tester.send_emission())
    assert emit_store1.store[0] == message
    assert len(emit_store1.store) == 1
    assert emit_store2.store[0] == message
    assert len(emit_store2.store) == 1
    assert queue_tester._emit_queue.qsize() == 0

    message = queue_tester.probe()
    asyncio.run(queue_tester.queue_emission(message))
    asyncio.run(queue_tester.emit_all())
    assert len(emit_store1.store) == 2
    assert len(emit_store2.store) == 2
    assert queue_tester._emit_queue.qsize() == 0

    loop.close()
示例#8
0
def test_plugin_instance():
    with pytest.raises(ValueError):
        plugin.new_plugin({}, None)

    with pytest.raises(ValueError):
        plugin.get_instance('nonexistant', None)
    with pytest.raises(ValueError):
        plugin.get_instance(['unparsable'], None)

    plugin.instantiate(config['plugin'], None)
    for each in config['plugin']:
        if 'name' not in each:
            continue
        obj = plugin.get_instance(each['name'], None)
        for k, v in list(each.items()):
            assert v == obj.config[k]

    obj = plugin.get_instance(anon_config, None)
    assert obj.config == anon_config

    # copy ctor
    obj = plugin.get_instance('fancy_copy', None)
    assert 'reeb' == obj.config['str0']

    obj = plugin.get_instance({'fancy_copy': {'var0': 'luggage'}}, None)
    assert 'reeb' == obj.config['str0']

    with pytest.raises(TypeError):
        plugin.get_probe('emit0', None)
    assert None != plugin.get_probe('probe1', None)
    assert not hasattr(plugin.get_probe('probe1', None), 'emit')

    with pytest.raises(TypeError):
        plugin.get_output('emit_abc', None)
    with pytest.raises(TypeError):
        plugin.get_output('probe1', None)
    assert None != plugin.get_output('emit0', None)
示例#9
0
文件: test_plugin.py 项目: 20c/vaping
def test_plugin_instance():
    with pytest.raises(ValueError):
        plugin.new_plugin({}, None)

    with pytest.raises(ValueError):
        plugin.get_instance("nonexistant", None)
    with pytest.raises(ValueError):
        plugin.get_instance(["unparsable"], None)

    plugin.instantiate(config["plugin"], None)
    for each in config["plugin"]:
        if "name" not in each:
            continue
        obj = plugin.get_instance(each["name"], None)
        for k, v in list(each.items()):
            assert v == obj.config[k]

    obj = plugin.get_instance(anon_config, None)
    assert obj.config == anon_config

    # copy ctor
    obj = plugin.get_instance("fancy_copy", None)
    assert "reeb" == obj.config["str0"]

    obj = plugin.get_instance({"fancy_copy": {"var0": "luggage"}}, None)
    assert "reeb" == obj.config["str0"]

    with pytest.raises(TypeError):
        plugin.get_probe("emit0", None)
    assert plugin.get_probe("probe1", None) is not None
    assert not hasattr(plugin.get_probe("probe1", None), "emit")

    with pytest.raises(TypeError):
        plugin.get_output("emit_abc", None)
    with pytest.raises(TypeError):
        plugin.get_output("probe1", None)
    assert plugin.get_output("emit0", None) is not None
示例#10
0
文件: test_plugin.py 项目: 20c/vaping
def test_plugin_instance():
    with pytest.raises(ValueError):
        plugin.new_plugin({}, None)

    with pytest.raises(ValueError):
        plugin.get_instance('nonexistant', None)
    with pytest.raises(ValueError):
        plugin.get_instance(['unparsable'], None)

    plugin.instantiate(config['plugin'], None)
    for each in config['plugin']:
        if 'name' not in each:
            continue
        obj = plugin.get_instance(each['name'], None)
        for k,v in list(each.items()):
            assert v == obj.config[k]

    obj = plugin.get_instance(anon_config, None)
    assert obj.config == anon_config

    # copy ctor
    obj = plugin.get_instance('fancy_copy', None)
    assert 'reeb' == obj.config['str0']

    obj = plugin.get_instance({'fancy_copy': {'var0': 'luggage'}}, None)
    assert 'reeb' == obj.config['str0']

    with pytest.raises(TypeError):
        plugin.get_probe('emit0', None)
    assert None != plugin.get_probe('probe1', None)
    assert not hasattr(plugin.get_probe('probe1', None), 'emit')

    with pytest.raises(TypeError):
        plugin.get_output('emit_abc', None)
    with pytest.raises(TypeError):
        plugin.get_output('probe1', None)
    assert None != plugin.get_output('emit0', None)