def start_simulation(params): numberOfSteps = int(params["numberOfSteps"]) simulation.start(numberOfSteps) ts = simulation.find_ts(do_update=False) agents = agent.agents(ts,ts); #logs = simulation.logs_for_ts(params["numberOfSteps"]) return WebSuccess(data = agents )
def test_batch(self): """batch test: two node with same batchId should be friend after 2 step""" agent.deleteAll() simulation.clear_all_messages() simulation.reset_ts() a = agent.random_agent() b = agent.random_agent() a["agentName"] = "a" a["agentX"] = str(150) a["agentY"] = str(100) a["agentOwner"] = str(53) a["agentBatch"] = str(50) a["agentLocality"] = str(50) b["agentName"] = "b" b["agentX"] = str(950) b["agentY"] = str(100) b["agentOwner"] = str(52) b["agentBatch"] = str(50) b["agentLocality"] = str(50) agent.new_agent(0, a) agent.new_agent(0, b) simulation.start(2) db = get_conn() ag = {a["name"]: a for a in db.agents.find()} self.assertTrue("a" in ag["b"]["friendships"]) self.assertTrue("b" in ag["a"]["friendships"])
def test_frienships(self): pass agent.deleteAll() simulation.clear_all_messages() simulation.reset_ts() a = agent.random_agent() b = agent.random_agent() c = agent.random_agent() a["agentName"] = "a" a["agentOwner"] = str(50) b["agentName"] = "b" b["agentOwner"] = str(50) c["agentName"] = "c" c["agentOwner"] = str(50) agent.new_agent(0, a) simulation.start(5) agent.new_agent(5, b) simulation.start(5) agent.new_agent(10, c) simulation.start(5) data1 = agent.agents(15, 0) data2 = agent.agents(15, 3) data3 = agent.agents(15, 5) data4 = agent.agents(15, 7) data5 = agent.agents(15, 10) data6 = agent.agents(15, 12) data7 = agent.agents(15, 15) data1 = [x["data"]["id"] for x in data1["data"]] data2 = [x["data"]["id"] for x in data2["data"]] data3 = [x["data"]["id"] for x in data3["data"]] data4 = [x["data"]["id"] for x in data4["data"]] data5 = [x["data"]["id"] for x in data5["data"]] data6 = [x["data"]["id"] for x in data6["data"]] data7 = [x["data"]["id"] for x in data7["data"]] self.assertIn("a", data1) self.assertNotIn("b", data1) self.assertNotIn("c", data1) self.assertNotIn("a-b", data1) self.assertNotIn("a-c", data1) self.assertNotIn("b-c", data1) self.assertIn("a", data2) self.assertNotIn("b", data2) self.assertNotIn("c", data2) self.assertNotIn("a-b", data2) self.assertNotIn("a-c", data2) self.assertNotIn("b-c", data2) self.assertIn("a", data3) self.assertIn("b", data3) self.assertNotIn("c", data3) self.assertNotIn("a-b", data3) self.assertNotIn("a-c", data3) self.assertNotIn("b-c", data3) self.assertIn("a", data4) self.assertIn("b", data4) self.assertNotIn("c", data4) self.assertIn("a-b", data4) self.assertNotIn("a-c", data4) self.assertNotIn("b-c", data4) self.assertIn("a", data5) self.assertIn("b", data5) self.assertIn("c", data5) self.assertIn("a-b", data5) self.assertNotIn("a-c", data5) self.assertNotIn("b-c", data5) self.assertIn("a", data6) self.assertIn("b", data6) self.assertIn("c", data6) self.assertIn("a-b", data6) self.assertIn("a-c", data6) self.assertIn("b-c", data6) self.assertIn("a", data7) self.assertIn("b", data7) self.assertIn("c", data7) self.assertIn("a-b", data7) self.assertIn("a-c", data7) self.assertIn("b-c", data7)
def test_frienship_change(self): """Frienship change: if a+b+c+d is more than 20 frienship strength gets increased and if it is less than 20 gets decreased""" agent.deleteAll() simulation.clear_all_messages() simulation.reset_ts() a = agent.random_agent() b = agent.random_agent() a["agentName"] = "a" a["agentX"] = str(150) a["agentY"] = str(100) a["agentOwner"] = str(53) a["agentBatch"] = str(50) a["agentLocality"] = str(50) b["agentName"] = "b" b["agentX"] = str(950) b["agentY"] = str(100) b["agentOwner"] = str(52) b["agentBatch"] = str(50) b["agentLocality"] = str(50) agent.new_agent(0, a) agent.new_agent(0, b) simulation.start(2) db = get_conn() ag = {a["name"]: a for a in db.agents.find()} self.assertTrue("a" in ag["b"]["friendships"]) self.assertTrue("b" in ag["a"]["friendships"]) db.agents.find_one_and_update( {"name": "a"}, {"$set": { "qoi": 5, "qos": 5, "qod": 5, "availability": 5 }}) db.agents.find_one_and_update( {"name": "b"}, {"$set": { "qoi": 5, "qos": 5, "qod": 5, "availability": 5 }}) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 2) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 2) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 3) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 3) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 4) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 4) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 5) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 5) simulation.start(70) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 5) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 5) db.agents.find_one_and_update( {"name": "a"}, {"$set": { "qoi": 5, "qos": 5, "qod": 5, "availability": 2 }}) db.agents.find_one_and_update( {"name": "b"}, {"$set": { "qoi": 5, "qos": 5, "qod": 5, "availability": 2 }}) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 4) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 4) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 3) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 3) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 2) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 2) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue(ag["b"]["friendships"]["a"]["strength"] == 1) self.assertTrue(ag["a"]["friendships"]["b"]["strength"] == 1) simulation.start(30) ag = {a["name"]: a for a in db.agents.find()} self.assertTrue("a" not in ag["b"]["friendships"]) self.assertTrue("b" not in ag["a"]["friendships"])