def __init__(self, ip, _pass, source, place, kwords, summ_parms): Agent.__init__(self, ip, _pass) self.source = source self.place = place self.kwords = kwords self.summ_parms = summ_parms self.connected = False
def __init__(self, manager_jid, neighbours, cars_speed, *args, **kwargs): Agent.__init__(self, *args, **kwargs) Crossroad.__init__(self) self.sumo_api = SumoApi() self.manager_jid = manager_jid self.subscribers = [] self.neighbours = neighbours self.neighbours_jid = {} self.cfp = { messages_body_labels.direction: None, # because of which direction we wanna change lights messages_body_labels.to_change: None, # if we wanna last green longer (false) or change it quicker (true) messages_body_labels.change_by: None } # how much we wanna change lights remaining duration self.last_cfp_ts = 0 self.delay_before_next_cfp = 0 self.cars_speed = cars_speed self.directions_max_cars = { 'vertical': 0, 'horizontal': 0 } # directions and max cars on their streets
def start(self, auto_register=True): Agent.start(self, auto_register=auto_register) if self.m_ServiceList: for service in self.m_ServiceList: print(" * Name: " + self.name) print(" * Type: " + service) self.register_service(service)
async def test_stop(test_client): agent = Agent("jid@server", "password") agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/spade/stop") response = await response.text() sel = Selector(text=response) assert sel.css("div.alert-warning > span::text").get().strip() == "Agent is stopping now." with LogCapture() as log: try: await client.get("/spade/stop/now/", timeout=0.0005) except requests.exceptions.ReadTimeout: pass log.check_present(('spade.Web', 'WARNING', "Stopping agent from web interface.")) counter = 5 while agent.is_alive() and counter > 0: counter -= 0.5 time.sleep(0.5) assert not agent.is_alive()
def __init__( self, name="cmanager@localhost", passwd="secret", players=10, fps=33, match_time=380, map_name="map_01", map_path=None, service_jid="cservice@localhost", service_passwd="secret", port=8001, ): AbstractAgent.__init__(self, name, service_jid=service_jid) Agent.__init__(self, name, passwd) self.game_statistic = GameStatistic() self.max_total_agents = players self.fps = 1 / fps self.match_time = match_time self.map_name = str(map_name) self.port = port self.config = Config(data_path=map_path) self.number_of_agents = 0 self.agents = {} self.match_init = 0 self.domain = name.split("@")[1] self.objective_agent = None self.service_agent = Service(jid=self.service_jid, password=service_passwd) self.render_server = Server(map_name=self.map_name, port=self.port) self.din_objects = dict() self.map = TerrainMap()
def test_find_behaviour_fail(): agent = Agent("jid@server", "password") found_behaviour = agent.web.find_behaviour("OneShotBehaviour/EmptyOneShotBehaviour") assert found_behaviour is None agent.stop()
async def test_stop(test_client, loop): agent = Agent("jid@server", "password") agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/spade/stop") response = await response.text() sel = Selector(text=response) assert sel.css("div.alert-warning > span::text").get().strip( ) == "Agent is stopping now." with LogCapture() as log: try: await client.get("/spade/stop/now/", timeout=0.0005) except requests.exceptions.ReadTimeout: pass log.check_present( ('spade.Web', 'WARNING', "Stopping agent from web interface.")) counter = 5 while agent.is_alive() and counter > 0: counter -= 0.5 time.sleep(0.5) assert not agent.is_alive()
async def test_find_behaviour_fail(): agent = Agent("jid@server", "password") found_behaviour = agent.web.find_behaviour("OneShotBehaviour/EmptyOneShotBehaviour") assert found_behaviour is None agent.stop()
def __init__( self, jid, password, workersParams, task ): #workersParams to lista slownikow (jid, password, name, priceEle, priceChan, sameIndex, coworkers) Agent.__init__(self, jid, password) self.MyJid = jid self.logger = Logger(self.jid) self.workersParams = workersParams self.task = task self.workers = []
def __init__(self, host, pw, network, num_routes, agent_type="global", start_node=None, destination_node=None, loop=None): Agent.__init__(self, host, pw, loop=loop) self.traveller = Traveller(network, num_routes, agent_type, start_node, destination_node)
def __init__(self, jid, passwd="secret", team=0, service_jid="cservice@localhost", verify_security=False): self.m_ServiceList = list() self._name = jid self.m_iPositionX = None self.m_iPositionZ = None self.m_eTeam = team self.service_jid = service_jid Agent.__init__(self, jid, passwd, verify_security)
async def test_add_get(test_client, loop): agent = Agent("jid@server", "password") agent.web.add_get("/test", lambda request: {"number": 42}, "examples/hello.html") agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/test") response = await response.text() sel = Selector(text=response) assert sel.css("h1::text").get().strip() == "42" agent.stop()
async def test_add_get(test_client): agent = Agent("jid@server", "password") agent.web.add_get("/test", lambda request: {"number": 42}, "examples/hello.html") agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/test") response = await response.text() sel = Selector(text=response) assert sel.css("h1::text").get().strip() == "42" agent.stop()
async def test_add_get_raw(test_client): agent = Agent("jid@server", "password") agent.web.add_get("/test", lambda request: web.Response(text="Hello Raw Get"), template=None, raw=True) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/test") response = await response.text() assert response == "Hello Raw Get" # sel = Selector(text=response) # assert sel.css("h1::text").get().strip() == "42" agent.stop()
async def test_request_home(test_client, loop): agent = Agent("jid@server", "password") agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/spade") response = await response.text() sel = Selector(text=response) assert sel.css("title::text").get() == "jid agent" assert sel.css("img::attr(src)").get() == agent.avatar assert sel.css("ul.products-list > li").getall() == [] agent.stop()
def start(self, auto_register=True): class RegisterServiceBehaviour(Behaviour): async def run(self): msg = await self.receive(timeout=1000000) self.agent.register_service(msg.body, str(msg.sender.bare())) print("Service " + msg.body + " of " + msg.sender + " registered") class DeregisterServiceBehaviour(Behaviour): async def run(self): msg = await self.receive(timeout=1000000) self.agent.deregister_service(msg.body, msg.sender) print("Service " + msg.body + " of " + msg.sender + " deregistered") class DeregisterAgentBehaviour(Behaviour): async def run(self): msg = await self.receive(timeout=1000000) self.agent.deregister_agent(msg.sender) print("Agent " + msg.sender + " deregistered") class GetServiceBehaviour(Behaviour): async def run(self): msg = await self.receive(timeout=1000000) names = self.agent.get_service(msg.body) reply = msg.make_reply() reply.body = str(names) await self.send(reply) print("Services sended") Agent.start(self, auto_register=auto_register) template1 = Template() template1.set_metadata("performative", "register") self.add_behaviour(RegisterServiceBehaviour(), template1) template2 = Template() template2.set_metadata("performative", "deregister_service") self.add_behaviour(DeregisterServiceBehaviour(), template2) template3 = Template() template3.set_metadata("performative", "deregister_agent") self.add_behaviour(DeregisterAgentBehaviour(), template3) template4 = Template() template4.set_metadata("performative", "get") self.add_behaviour(GetServiceBehaviour(), template4)
async def test_add_get_json(test_client, loop): async def controller(request): return {"number": 42} agent = Agent("jid@server", "password") agent.web.add_get("/test", controller, None) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/test") assert response.status == 200 data = await response.json() assert data["number"] == 42 agent.stop()
def start(self, auto_register=True): future = Agent.start(self, auto_register=auto_register) if self.services: for service in self.services: logger.info("{} registering service {}".format( self.name, service)) self.register_service(service) return future
async def test_add_get_json(test_client): async def controller(request): return {"number": 42} agent = Agent("jid@server", "password") agent.web.add_get("/test", controller, None) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/test") assert response.status == 200 data = await response.json() assert data["number"] == 42 agent.stop()
def __init__(self, name, passwd="secret", manager_jid="cmanager@localhost", x=0, z=0, team=0): Agent.__init__(self, name, passwd) AbstractAgent.__init__(self, name, team) self.type = PACK_NONE self.manager = manager_jid self.position = Vector3D() self.position.x = x self.position.y = 0 self.position.z = z
async def test_kill_behaviour(test_client): class EmptyCyclicBehaviour(CyclicBehaviour): async def run(self): await asyncio.sleep(0.1) agent = Agent("jid@server", "password") behaviour = EmptyCyclicBehaviour() agent.add_behaviour(behaviour) agent.web.setup_routes() client = await test_client(agent.web.app) await client.get("/spade/behaviour/CyclicBehaviour/EmptyCyclicBehaviour/kill/") assert behaviour.is_killed() agent.stop()
async def test_add_post_raw(test_client): agent = Agent("jid@server", "password") async def handle_post(request): form = await request.post() number = form["number"] return web.Response(text="Hello Raw Post Number={}".format(number)) agent.web.add_post("/test", handle_post, template=None, raw=True) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.post("/test", data={"number": 1024}) response = await response.text() assert response == "Hello Raw Post Number=1024" agent.stop().result()
async def test_add_get_raw(test_client): agent = Agent("jid@server", "password") agent.web.add_get( "/test", lambda request: web.Response(text="Hello Raw Get"), template=None, raw=True, ) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/test") response = await response.text() assert response == "Hello Raw Get" agent.stop().result()
async def test_add_post_raw(test_client): agent = Agent("jid@server", "password") async def handle_post(request): form = await request.post() number = form["number"] return web.Response(text="Hello Raw Post Number={}".format(number)) agent.web.add_post("/test", handle_post, template=None, raw=True) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.post("/test", data={"number": 1024}) response = await response.text() assert response == "Hello Raw Post Number=1024" agent.stop()
async def test_get_messages(test_client): agent = Agent("jid@server", "password") agent.web.setup_routes() client = await test_client(agent.web.app) # add messages to trace for i in range(5): msg = Message(body=str(i), sender="{}@server".format(i), to="receiver@server") agent.traces.append(msg) response = await client.get("/spade/messages/") response = await response.text() sel = Selector(text=response) assert len(sel.css("ul.timeline > li").getall()) == 6 # num messages + end clock agent.stop()
async def test_get_messages(test_client, loop): agent = Agent("jid@server", "password") agent.web.setup_routes() client = await test_client(agent.web.app) # add messages to trace for i in range(5): msg = Message(body=str(i), sender="{}@server".format(i), to="receiver@server") agent.traces.append(msg) response = await client.get("/messages/") response = await response.text() sel = Selector(text=response) assert len(sel.css("ul.timeline > li").getall()) == 6 # num messages + end clock agent.stop()
async def test_get_agent(test_client, loop): agent = Agent("jid@server", "password") agent.web.setup_routes() client = await test_client(agent.web.app) jid = "friend@server" item = Item(jid=JID.fromstr(jid)) agent.presence.roster._update_entry(item) response = await client.get(f"/spade/agent/{jid}/") response = await response.text() sel = Selector(text=response) assert sel.css("section.content-header > h1::text").get().strip() == jid agent.stop()
async def test_add_post(test_client): agent = Agent("jid@server", "password") async def handle_post(request): form = await request.post() number = form["number"] return {"number": number} agent.web.add_post("/test", handle_post, "examples/hello.html") agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.post("/test", data={"number": 1024}) response = await response.text() sel = Selector(text=response) assert sel.css("h1::text").get() == "1024" agent.stop()
async def test_get_behaviour(test_client): class EmptyOneShotBehaviour(OneShotBehaviour): async def run(self): self.kill() agent = Agent("jid@server", "password") behaviour = EmptyOneShotBehaviour() agent.add_behaviour(behaviour) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/spade/behaviour/OneShotBehaviour/EmptyOneShotBehaviour/") response = await response.text() sel = Selector(text=response) assert sel.css("section.content-header > h1::text").get().strip() == "OneShotBehaviour/EmptyOneShotBehaviour" agent.stop()
def test_default_template_path(): agent = Agent("jid@server", "password") env = get_env(agent.web.app) loader = env.loader package_loader = loader.loaders[0] filesystem_loader = loader.loaders[1] assert type(loader) == ChoiceLoader assert len(loader.loaders) == 2 assert type(package_loader) == PackageLoader assert type(filesystem_loader) == FileSystemLoader assert "internal_tpl_agent.html" in package_loader.list_templates() assert "internal_tpl_agent.html" not in filesystem_loader.list_templates() assert filesystem_loader.searchpath == ["."] agent.stop()
async def test_add_post_json(test_client): async def handle_post(request): form = await request.post() number = form["number"] return {"number": int(number)} agent = Agent("jid@server", "password") agent.web.add_post("/test", handle_post, None) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.post("/test", data={"number": 1024}) assert response.status == 200 data = await response.json() assert data["number"] == 1024 agent.stop()
async def test_add_get_raw(test_client): agent = Agent("jid@server", "password") agent.web.add_get("/test", lambda request: web.Response(text="Hello Raw Get"), template=None, raw=True) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/test") response = await response.text() assert response == "Hello Raw Get" # sel = Selector(text=response) # assert sel.css("h1::text").get().strip() == "42" agent.stop().result()
async def test_add_post_json(test_client, loop): async def handle_post(request): form = await request.post() number = form["number"] return {"number": int(number)} agent = Agent("jid@server", "password") agent.web.add_post("/test", handle_post, None) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.post("/test", data={"number": 1024}) assert response.status == 200 data = await response.json() assert data["number"] == 1024 agent.stop()
async def test_add_post(test_client, loop): agent = Agent("jid@server", "password") async def handle_post(request): form = await request.post() number = form["number"] return {"number": number} agent.web.add_post("/test", handle_post, "examples/hello.html") agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.post("/test", data={"number": 1024}) response = await response.text() sel = Selector(text=response) assert sel.css("h1::text").get() == "1024" agent.stop()
def test_add_template_path(): agent = Agent("jid@server", "password") agent.web.start(templates_path="/tmp/spade") env = get_env(agent.web.app) loader = env.loader assert type(loader) == ChoiceLoader assert len(loader.loaders) == 3 assert type(loader.loaders[0]) == FileSystemLoader assert type(loader.loaders[1]) == PackageLoader assert type(loader.loaders[2]) == FileSystemLoader filesystem_loader = loader.loaders[0] assert filesystem_loader.list_templates() == [] assert filesystem_loader.searchpath == ["/tmp/spade"] agent.stop()
def test_create_agent(mocker): mocker.patch("spade.agent.AioThread.connect") agent = Agent("jid@server", "fake_password") assert agent.is_alive() is False agent.start(auto_register=False) assert agent.is_alive() is True agent.aiothread.connect.assert_called_once() assert agent.stream is None agent.aiothread.conn_coro = mocker.Mock() agent.aiothread.conn_coro.__aexit__ = CoroutineMock() agent.stop() agent.aiothread.conn_coro.__aexit__.assert_called_once() assert agent.is_alive() is False
def test_create_agent(mocker): agent = Agent("jid@server", "fake_password") agent._async_connect = CoroutineMock() assert agent.is_alive() is False future = agent.start(auto_register=False) assert future.result() is None agent._async_connect.assert_called_once() assert agent.stream is None agent.conn_coro = mocker.Mock() agent.conn_coro.__aexit__ = CoroutineMock() assert agent.is_alive() is True future = agent.stop() future.result() agent.conn_coro.__aexit__.assert_called_once() assert agent.is_alive() is False
def test_find_behaviour(): class EmptyOneShotBehaviour(OneShotBehaviour): async def run(self): pass agent = Agent("jid@server", "password") behaviour = EmptyOneShotBehaviour() agent.add_behaviour(behaviour) found_behaviour = agent.web.find_behaviour("OneShotBehaviour/EmptyOneShotBehaviour") assert found_behaviour == behaviour agent.stop()
async def test_kill_behaviour(test_client, loop): class EmptyCyclicBehaviour(CyclicBehaviour): async def run(self): await asyncio.sleep(0.1) agent = Agent("jid@server", "password") behaviour = EmptyCyclicBehaviour() agent.add_behaviour(behaviour) agent.web.setup_routes() client = await test_client(agent.web.app) await client.get("/behaviour/CyclicBehaviour/EmptyCyclicBehaviour/kill/") assert behaviour.is_killed() agent.stop()
async def test_get_behaviour(test_client, loop): class EmptyOneShotBehaviour(OneShotBehaviour): async def run(self): self.kill() agent = Agent("jid@server", "password") behaviour = EmptyOneShotBehaviour() agent.add_behaviour(behaviour) agent.web.setup_routes() client = await test_client(agent.web.app) response = await client.get("/behaviour/OneShotBehaviour/EmptyOneShotBehaviour/") response = await response.text() sel = Selector(text=response) assert sel.css("section.content-header > h1::text").get().strip() == "OneShotBehaviour/EmptyOneShotBehaviour" agent.stop()
def __init__(self, jid="cservice@localhost", password="******"): self.m_ServiceList = {} Agent.__init__(self, jid, password)