def test_match_ior(): t1 = Template() t1.sender = "sender1@host" t2 = Template() t2.to = "recv1@host" t2.metadata = {"performative": "query"} m1 = Message() m1.sender = "sender1@host" t1 |= t2 assert t1.match(m1) m2 = Message() m2.to = "recv1@host" m2.metadata = {"performative": "query"} assert t1.match(m2) m3 = Message() m3.sender = "sender2@host" m3.to = "recv1@host" m3.metadata = {"performative": "inform"} assert not t1.match(m3)
def test_match_xor(): t1 = Template() t1.sender = "sender1@host" t2 = Template() t2.to = "recv1@host" t2.metadata = {"performative": "query"} m1 = Message() m1.sender = "sender1@host" assert (t1 ^ t2).match(m1) m2 = Message() m2.to = "recv1@host" m2.metadata = {"performative": "query"} assert (t1 ^ t2).match(m2) m3 = Message() m3.sender = "sender2@host" m3.to = "recv1@host" m3.metadata = {"performative": "inform"} assert not (t1 ^ t2).match(m3) t1 = Template() t1.sender = "sender1@host" t2 = Template() t2.sender = "sender1@host" m4 = Message() m4.sender = "sender1@host" assert not (t1 ^ t2).match(m4)
def energyCost(cls, device, time, protocol_version): """ This method creates the EnergyCost message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ web_url = Configuration.parameters['web_url'] mydir = Configuration.parameters['user_dir'] if protocol_version == "1.0": name = cls.basejid.split('@')[0] url = cls.basejid.split('@')[1] mex = Message(to=cls.basejid + "/actormanager") message = "ENERGY_COST [0] " + "http://" + str( url) + "/~gcdemo/" + cls.realpath + "/" + str( Configuration.mydir) + "/" + str( device.profile) + " " + str(time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "ENERGY_COST",id: "[0]","profile" : "' + web_url + '/' + cls.realpath + "/" + str( mydir) + '/' + str(device.profile) + '"}}' mex.body = message mex.metadata = '0' return mex
def delete_load(cls, device, time, protocol_version): """ This method creates the Delete load message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "DELETE_LOAD [" + str(device.house) + "]:[" + str( device.device.id) + "] " + str( device.consumption) + " " + " " + str(time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{ "message": {"subject": "DELETE_LOAD", "id": "[' + str( device.house) + ']:[' + str( device.device.id) + ']" , "energy": " ' + str( device.consumption) + ' ", "producer" : " ' + str( device.panel) + ' " }} ' mex.body = message mex.metadata = time return mex
def update_producer(cls, device, time, protocol_version): """ This method creates the Update Producer message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ web_url = Configuration.parameters['web_url'] mydir = Configuration.parameters['user_dir'] if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "PREDICTION_UPDATE [" + str(device.house) + "]:[" + str( device.device.id) + "] " + str( web_url) + "/" + cls.realpath + "/" + str( mydir) + "/" + str(device.profile) + " " + str(time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "PREDICTION_UPDATE","type" : "PV","id" : "[' + str( device.house ) + ']:[' + str( device.device.id ) + ']","profile" : "' + web_url + '/' + cls.realpath + "/" + str( mydir) + '/' + str(device.profile) + ' "}}' mex.body = message mex.metadata = time return mex
def background(cls, device, time, protocol_version): """ This method creates the Background message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ mydir = Configuration.parameters['user_dir'] web_url = Configuration.parameters['web_url'] if protocol_version == "1.0": url = cls.basejid.split('@')[1] mex = Message(to=cls.basejid + "/actormanager") message = "BG [" + str(device.house) + "]:[" + str( device.device.id) + "] 0 " + "http://" + str( url) + "/~gcdemo/" + cls.realpath + "/" + str( mydir) + "/" + str(device.profile) + " " + str(time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "BG","id" : "[' + str( device.house ) + ']:[' + str( device.device.id ) + ']","profile" : "' + web_url + '/' + cls.realpath + "/" + str( mydir) + '/' + str(device.profile) + ' "}}' mex.body = message mex.metadata = time return mex
def chargingpoint(cls, device, time, protocol_version): """ This method creates the EnergyHub for Charging Point message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "CREATE_ENERGY_GROUP [" + str( device.houseid) + "]:[" + str( device.id) + "]" + " CONNECTORS_TYPE " + str( device.connection_type) + " POWERPEAK " + str( device.peakload) + " " + str(time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "CREATE_ENERGY_GROUP", "id" : "[' + str( device.houseid) + ']:[' + str( device.id) + ']", "connectors_type" : " ' + str( device.connection_type) + ' ", "powerpeak" : " ' + str( device.peakload) + ' "}}' mex.body = message mex.metadata = '0' return mex
def energyMix(cls, device, time, protocol_version): """ This method creates the EnergyMix message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ web_url = Configuration.parameters['web_url'] mydir = Configuration.parameters['user_dir'] if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "ENERGY_MIX " + str( web_url) + "/" + cls.realpath + "/" + str(mydir) + "/" + str( device.profile) + " " + str(time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "ENERGY_MIX","profile" : "' + web_url + '/' + cls.realpath + "/" + str( mydir) + '/' + str(device.profile) + ' "}}' mex.body = message mex.metadata = '0' return (mex)
def create_ev(cls, device, time, protocol_version): """ This method creates the Create Ev message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "CREATE_EV [" + str( device.device.id) + "] " + device.device.capacity + " " + device.device.max_ch_pow_ac + " " + \ device.device.max_ch_pow_cc + " " + device.device.max_all_en + " " + device.device.min_all_en + \ " " + device.device.sb_ch + " " + device.device.sb_dis + " " + device.device.ch_eff + " " + \ device.device.dis_eff + " " + device.v2g + " " + str(time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "CREATE_EV" , "id" : "[' + str( device.device.id) + ']", "capacity" : " ' + str( device.device.capacity ) + ' " , "max_ch_pow_ac" : " ' + str( device.device.max_ch_pow_ac ) + ' " , "max_ch_pow_cc" : " ' + str( device.device.max_ch_pow_cc ) + ' " , "max_dis_pow_ac" : " ' + str( device.device.max_dis_pow_ac ) + ' " , "max_dis_pow_cc" : " ' + str( device.device.max_dis_pow_cc ) + ' " , "max_all_en" : " ' + str( device.device.max_all_en) + ' " , "min_all_en" : " ' + str( device.device.min_all_en) + ' " , "sb_ch" : " ' + str( device.device.sb_ch) + ' " , "sb_dis" : " ' + str( device.device.sb_dis ) + ' " , "ch_eff" : " ' + str( device.device.ch_eff ) + ' " , "dis_eff": " ' + str( device.device.dis_eff ) + ' " , "v2g" : " ' + str(device.v2g) + ' "}}' mex.body = message mex.metadata = time return mex
def end(cls, actual_time): """ This method creates the end message. Args: actual_time: Simulation Time. """ protocol_version = Configuration.parameters["protocol"] if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "SIMULATION END " + str(actual_time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '({"message" : {"subject" : "SIMULATION_END", "simulation_time": " ' + str( actual_time) + ' "}}' mex.body = message mex.metadata = "0" return mex
def booking_request(cls, device, time, protocol_version): """ This method creates the booking_request message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "EV [" + str( device.device.id ) + "] " + device.Soc_at_arrival + " " + device.actual_departure_time + " " + device.actual_arrival_time + " [" + str( device.house) + "]:[" + str( device.device.cp ) + "] " + device.v2g + " " + device.target_soc + " " + str( time) mex.body = message return (mex) else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "EV" , "id" : "[' + str( device.device.id) + ']", "soc_at_arrival": " ' + str( device.Soc_at_arrival ) + ' " , "actual_departure_time" : " ' + str( device.actual_departure_time ) + ' " , "arrival_time" : " ' + str( device.actual_arrival_time ) + ' " ,"charging_point" : "[' + str( device.house) + ']:[' + str( device.device.cp) + ']", "v2g" : " ' + str( device.v2g) + ' " , "target_soc" : " ' + str( device.target_soc) + ' " }}' mex.body = message mex.metadata = time return (mex)
def neighborhood(cls, device, time, protocol_version): """ This method creates the EnergyHub for neighborhood message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "CREATE_ENERGY_GROUP [99] " + str( device.peakload) + " " + time mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "CREATE_ENERGY_GROUP","powerpeak" : " ' + str( device.peakload) + ' "}}' mex.body = message mex.metadata = '0' return mex
def create_Battery(cls, device, time, protocol_version): """ This method creates the Create Battery message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "CREATE_BATTERY " + "[" + str(device.house) + "]:[" + str( device.device.id ) + "] " + device.device.capacity + " " + device.device.max_ch_pow_ac + " " + device.device.max_ch_pow_cc + " " + device.device.max_all_en + " " + device.device.min_all_en + " " + device.device.sb_ch + " " + device.device.ch_eff + " " + device.Soc_at_arrival + " " + device.start_time + " " + device.end_time mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "CREATE_BATTERY" , "capacity" : " ' + str( device.device.capacity) + ' " , "max_ch_pow_ac" : " ' + str( device.device.max_ch_pow_ac ) + ' " , "max_ch_pow_cc" : " ' + str( device.device.max_ch_pow_cc ) + ' " , "max_all_en" : " ' + str( device.device.max_all_en) + ' " , "min_all_en" : " ' + str( device.device.min_all_en) + ' " , "sb_ch" : " ' + str( device.device.sb_ch) + ' " , "ch_eff" : " ' + str( device.device.ch_eff ) + ' " , "soc_at_arrival": " ' + str( device.Soc_at_arrival ) + ' " , "start_time" : " ' + str( device.start_time ) + ' " , "end_time" : " ' + str( device.end_time) + ' " }}' mex.body = message mex.metadata = time return mex
def create_producer(cls, device, time, protocol_version): """ This method creates the Create Producer message. Args: device: Device the message refers to. time: Simulation Time. protocol_version: Distinguish between schedulers. """ if protocol_version == "1.0": mex = Message(to=cls.basejid + "/actormanager") message = "CREATE_PRODUCER [" + str(device.house) + "]:[" + str( device.device.id) + "] " + str(time) mex.body = message return mex else: mex = Message(to=cls.basejid + "/" + cls.jid) message = '{"message" : {"subject" : "CREATE_PRODUCER","type" : "PV","id" : "[' + str( device.house) + ']:[' + str(device.device.id) + ']"}}' mex.body = message mex.metadata = time return mex
def test_match_not(): t1 = Template() t1.sender = "sender1@host" t1.to = "recv1@host" t1.metadata = {"performative": "query"} m1 = Message() m1.sender = "sender1@host" assert (~t1).match(m1) m2 = Message() m2.sender = "sender1@host" m2.to = "recv1@host" assert (~t1).match(m2) m3 = Message() m3.sender = "sender1@host" m3.to = "recv1@host" m3.metadata = {"performative": "query"} assert not (~t1).match(m3)
def _prepare_gossip_message(receiver, information): msg = Message(to=receiver) msg.body = information.body msg.metadata = dict(gossip_id=information.id) return msg
message.body = "Hello World" message.thread = "thread-id" message.set_metadata("performative", "query") assert template.match(message) t1 = Template() # t1.sender = "sender1@host" t1.sender = "madks@Temp3rr0r-pc" t2 = Template() # t2.to = "recv1@host" t2.to = "admin@Temp3rr0r-pc" t2.metadata = {"performative": "query"} m = Message() # m.sender = "sender1@host" m.sender = "madks@Temp3rr0r-pc" # m.to = "recv1@host" m.to = "admin@Temp3rr0r-pc" m.metadata = {"performative": "query"} # And AND operator assert (t1 & t2).match(m) t3 = Template() # t3.sender = "not_valid_sender@host" t3.sender = "not_valid_sender@Temp3rr0r-pc" # A NOT complement operator assert (~t3).match(m)