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()
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"