예제 #1
0
파일: test_vodka.py 프로젝트: schvin/vaping
def test_probe_to_graphsrv():
    probe = plugin.get_probe(
        {
            "type": "fping_mtr",
            "name": "probe_a",
            "host": "1.1.1.1",
            "interval": "3s",
            "group": "a.b"
        }, {})
    probe_to_graphsrv(probe)
    group = graphsrv.group.groups.get("a").get("b")

    assert group["targets"] == {"1.1.1.1": {"host": "1.1.1.1"}}

    probe = plugin.get_probe(
        {
            "type": "fping",
            "name": "probe_b",
            "interval": "3s",
            "dns": {
                "hosts": [{
                    "host": "1.1.1.1",
                    "name": "Cloudflare"
                }]
            }
        }, {})
    probe_to_graphsrv(probe)
    group = graphsrv.group.groups.get("probe_b").get("dns")

    assert group["targets"] == {
        "1.1.1.1": {
            "host": "1.1.1.1",
            "name": "Cloudflare"
        }
    }
예제 #2
0
파일: test_vodka.py 프로젝트: 20c/vaping
def test_probe_to_graphsrv():
    probe = plugin.get_probe({
        "type" : "fping_mtr",
        "name" : "probe_a",
        "host" : "1.1.1.1",
        "interval" : "3s",
        "group" : "a.b"
    }, {})
    probe_to_graphsrv(probe)
    group = graphsrv.group.groups.get("a").get("b")

    assert group["targets"] == {"1.1.1.1":{"host":"1.1.1.1"}}

    probe = plugin.get_probe({
        "type" : "fping",
        "name" : "probe_b",
        "interval" : "3s",
        "dns": {
            "hosts": [{
                "host" : "1.1.1.1",
                "name" : "Cloudflare"
            }]
        }
    }, {})
    probe_to_graphsrv(probe)
    group = graphsrv.group.groups.get("probe_b").get("dns")

    assert group["targets"] == {"1.1.1.1":{"host":"1.1.1.1", "name":"Cloudflare"}}
예제 #3
0
def test_plugin_groups():
    """
    test plugin groups as per #44 implementation
    """

    probe = plugin.get_probe(
        {
            "type":
            "fping",
            "name":
            "probe_c",
            "interval":
            "3s",
            "groups": [{
                "name": "dns",
                "hosts": [{
                    "host": "1.1.1.1",
                    "name": "Cloudflare"
                }]
            }],
        },
        {},
    )

    expected = {
        "dns": {
            "name": "dns",
            "hosts": [{
                "host": "1.1.1.1",
                "name": "Cloudflare"
            }]
        }
    }

    assert probe.groups == expected
예제 #4
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
예제 #5
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
예제 #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
    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
예제 #8
0
def test_run_probe(this_dir):
    config_dir = os.path.join(this_dir, "data", "config", "fping")
    daemon = vaping.daemon.Vaping(config_dir=config_dir)
    probes = daemon.config.get("probes", None)

    fping = plugin.get_probe(probes[0], daemon.plugin_context)
    msg = fping.probe()
    print(msg)
예제 #9
0
def test_run_probe(config_dir):
    config_dir = os.path.join(config_dir, "fping_mtr")
    daemon = vaping.daemon.Vaping(config_dir=config_dir)
    probes = daemon.config.get("probes", None)

    mtr = plugin.get_probe(probes[0], daemon.plugin_context)
    msg = mtr.probe()
    print(msg)
예제 #10
0
def test_run_probe(config_dir):
    config_dir = os.path.join(config_dir, "fping_mtr")
    daemon = vaping.daemon.Vaping(config_dir=config_dir)
    probes = daemon.config.get("probes", None)

    mtr = plugin.get_probe(probes[0], daemon.plugin_context)
    msg = mtr.probe()
    print(msg)
예제 #11
0
파일: test_fping.py 프로젝트: 20c/vaping
def test_run_probe(this_dir):
    config_dir = os.path.join(this_dir, 'data', 'config', 'fping')
    daemon = vaping.daemon.Vaping(config_dir=config_dir)
    probes = daemon.config.get('probes', None)

    fping = plugin.get_probe(probes[0], daemon.plugin_context)
    msg = fping.probe()
    print(msg)
예제 #12
0
def test_run_probe(this_dir):
    config_dir = os.path.join(this_dir, 'data', 'config', 'fping')
    daemon = vaping.daemon.Vaping(config_dir=config_dir)
    probes = daemon.config.get('probes', None)

    fping = plugin.get_probe(probes[0], daemon.plugin_context)
    msg = fping.probe()
    print(msg)
예제 #13
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)
예제 #14
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)
예제 #15
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
예제 #16
0
def test_plugin_legacy_groups():
    """
    test legacy plugin groups
    TODO: remove with vaping 2.0
    """

    probe = plugin.get_probe(
        {
            "type": "fping",
            "name": "probe_b",
            "interval": "3s",
            "dns": {
                "hosts": [{
                    "host": "1.1.1.1",
                    "name": "Cloudflare"
                }]
            }
        }, {})

    expected = {"dns": {"hosts": [{"host": "1.1.1.1", "name": "Cloudflare"}]}}

    assert probe.groups == expected
예제 #17
0
def test_probe_to_graphsrv():

    # vodka setup with single group plugin

    probe = plugin.get_probe(
        {
            "type": "fping_mtr",
            "name": "probe_a",
            "host": "1.1.1.1",
            "interval": "3s",
            "group": "a.b",
        },
        {},
    )
    probe_to_graphsrv(probe)
    group = graphsrv.group.groups.get("a").get("b")

    assert group["targets"] == {"1.1.1.1": {"host": "1.1.1.1"}}

    # vodka setup with legacy plugin groups (before implementation
    # of #44)
    # TODO: remove with vaping 2.0

    probe = plugin.get_probe(
        {
            "type": "fping",
            "name": "probe_b",
            "interval": "3s",
            "dns": {
                "hosts": [{
                    "host": "1.1.1.1",
                    "name": "Cloudflare"
                }]
            },
        },
        {},
    )
    probe_to_graphsrv(probe)
    group = graphsrv.group.groups.get("probe_b").get("dns")

    assert group["targets"] == {
        "1.1.1.1": {
            "host": "1.1.1.1",
            "name": "Cloudflare"
        }
    }

    # vodka setup with plugin group implementation as
    # per #44

    probe = plugin.get_probe(
        {
            "type":
            "fping",
            "name":
            "probe_c",
            "interval":
            "3s",
            "groups": [{
                "name": "dns",
                "hosts": [{
                    "host": "1.1.1.1",
                    "name": "Cloudflare"
                }]
            }],
        },
        {},
    )
    probe_to_graphsrv(probe)
    group = graphsrv.group.groups.get("probe_c").get("dns")

    assert group["targets"] == {
        "1.1.1.1": {
            "host": "1.1.1.1",
            "name": "Cloudflare"
        }
    }