Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
    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
Esempio n. 6
0
    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
Esempio n. 7
0
    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
Esempio n. 8
0
    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)
Esempio n. 9
0
    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
Esempio n. 10
0
    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
Esempio n. 11
0
    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)
Esempio n. 12
0
    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
Esempio n. 13
0
    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
Esempio n. 14
0
    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
Esempio n. 15
0
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
Esempio n. 17
0
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)