Esempio n. 1
0
    def test_heartbeater(self):
        """test_heartbeater

        Test whether the eeagent waits until the eeagent listener is ready before sending
        a heartbeat to the PD
        """

        # beat_died is a list because of a hack to get around a limitation in python 2.7
        # See: http://stackoverflow.com/questions/8934772/local-var-referenced-before-assignment
        beat_died = [False]

        def heartbeat_callback(heartbeat, headers):

            eeagent_id = heartbeat['eeagent_id']
            agent_client = SimpleResourceAgentClient(eeagent_id, name=eeagent_id, process=FakeProcess())
            ee_client = ExecutionEngineAgentClient(agent_client, timeout=2)

            try:
                ee_client.dump_state()
            except:
                log.exception("Heartbeat Failed!")
                beat_died[0] = True

        self.beat_subscriber = HeartbeatSubscriber("heartbeat_queue",
            callback=heartbeat_callback, node=self.container.node)
        self.beat_subscriber.start()
        try:
            self._start_eeagent()
            for i in range(0, 5):
                if beat_died[0] is True:
                    assert False, "A Hearbeat callback wasn't able to contact the eeagent"
                gevent.sleep(0.5)
        finally:
            self.beat_subscriber.stop()
Esempio n. 2
0
    def test_heartbeater(self):
        """test_heartbeater

        Test whether the eeagent waits until the eeagent listener is ready before sending
        a heartbeat to the PD
        """

        beat_died = threading.Event()
        beat_succeeded = threading.Event()

        def heartbeat_callback(heartbeat, headers):

            eeagent_id = heartbeat['eeagent_id']
            agent_client = SimpleResourceAgentClient(eeagent_id,
                                                     name=eeagent_id,
                                                     process=FakeProcess())
            ee_client = ExecutionEngineAgentClient(agent_client, timeout=10)

            try:
                ee_client.dump_state()
                beat_succeeded.set()
            except:
                log.exception("Heartbeat Failed!")
                beat_died.set()

        self.beat_subscriber = HeartbeatSubscriber("heartbeat_queue",
                                                   callback=heartbeat_callback,
                                                   node=self.container.node)
        self.beat_subscriber.start()

        self._start_eeagent()
        success = beat_succeeded.wait(20)
        if success is False:
            died = beat_died.wait(20)
            assert died is False, "A Hearbeat callback wasn't able to contact the eeagent"