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" } }
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"}}
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
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
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
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
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)
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)
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)
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)
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)
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
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
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" } }