def test_redis_heartbeat_build(self): heartbeat = RedisHeartBeat(build=1) self.assertEqual(heartbeat.redis_key, RedisHeartBeat.KEY_BUILD.format(1)) self.assertEqual(heartbeat.is_alive(), False) self.assertEqual(RedisHeartBeat.build_is_alive(1), False) heartbeat.ping() self.assertEqual(heartbeat.is_alive(), True) self.assertEqual(RedisHeartBeat.build_is_alive(1), True) heartbeat.clear() self.assertEqual(heartbeat.is_alive(), False) self.assertEqual(RedisHeartBeat.build_is_alive(1), False) RedisHeartBeat.build_ping(1) self.assertEqual(heartbeat.is_alive(), True) self.assertEqual(RedisHeartBeat.build_is_alive(1), True)
def build_jobs_check_heartbeat(build_job_id): if RedisHeartBeat.build_is_alive(build_id=build_job_id): return build_job = get_valid_build_job(build_job_id=build_job_id) if not build_job: return # BuildJob is zombie status build_job.set_status(JobLifeCycle.FAILED, message='BuildJob is in zombie state (no heartbeat was reported).')
def test_post_internal_build_heartbeat(self): self.assertEqual(RedisHeartBeat.build_is_alive(self.build.id), False) resp = self.internal_client.post(self.url) assert resp.status_code == status.HTTP_200_OK self.assertEqual(RedisHeartBeat.build_is_alive(self.build.id), True)