def test_loadclasses_config_agent_classname_noconf(self, exists_mocked): """ Test AgentConfigurator with a full valid classname and no conf at all""" # Mock os.path.exists == True exists_mocked.return_value = True m = mock_open(read_data = '{"agents":[{"name":"mpdstatus", "classname":"clu.agents.mpd.mpdagent.MpdRmqAgent"}]}') open_name = '%s.open' % "clu.common.config.configurator" with patch(open_name, m, create=True): co = AgentConfigurator({"filename":"afile", "folder" : "afolder"}) co.loadfile() co.loadclasses() co.initalize_all() self.assertTrue(len(co.agents) == 1) from clu.agents.mpd.mpdagent import MpdRmqAgent self.assertTrue(type(co.agents[0]) == MpdRmqAgent)
def main(): configurator= AgentConfigurator({"folder":"/home/jc", "filename":"clu.conf"}) configurator.loadfile() configurator.loadclasses() configurator.initalize_all() runners = [] try: for agent in configurator.agents: runner = AgentRunner(agent) runners.append(runner.start()) # keep the main thread alive while True: time.sleep(0.1) except KeyboardInterrupt, ex: LOGGER.warning("ctrl-C catched, shuting down all threads") for runner in runners: runner.stop() runner.join()
def test_loadclasses_config_agent_classname_withconf(self, exists_mocked): """ Test AgentConfigurator agent instanciation with a full valid classname and configuration""" # Mock os.path.exists == True import json exists_mocked.return_value = True conf={"channel":{"exchange":"home.events","type":"topic"},"messages":{"routing_key":"home.events.multimedia.music.mpd"}} mpdconf={"host":"mpd.lan"} rmqconf={"host":"rmq.lan"} agentconfstr = json.dumps(conf) mpdconfstr = json.dumps(mpdconf) rmqconfstr = json.dumps(rmqconf) agentconf='{"config":%s, "mpdconf": %s, "rmqconf":%s}'%(agentconfstr, mpdconfstr, rmqconfstr) full_conf = '{"agents":[{"name":"mpdstatus", "classname":"clu.agents.mpd.mpdagent.MpdRmqAgent"}],"configs":{"mpdstatus":%s}}'%(agentconf) m = mock_open(read_data = full_conf) open_name = '%s.open' % "clu.common.config.configurator" with patch(open_name, m, create=True): co = AgentConfigurator({"filename":"afile", "folder" : "afolder"}) co.loadfile() co.loadclasses() co.initalize_all() self.assertTrue(len(co.agents) == 1) from clu.agents.mpd.mpdagent import MpdRmqAgent instance = co.agents[0] self.assertTrue(type(instance) == MpdRmqAgent) self.assertTrue(instance.config is not None) self.assertTrue(instance.config.channel.exchange == "home.events") self.assertTrue(instance.config.channel.type == "topic") self.assertTrue(instance.config.messages.routing_key == "home.events.multimedia.music.mpd") self.assertTrue(instance.mpdclient is not None) self.assertTrue(instance.mpdclient.config.host == "mpd.lan") self.assertTrue(instance.rmqclient is not None) self.assertTrue(instance.rmqclient.config.host == "rmq.lan")