Example #1
0
 def set_status(self, status, message=None, traceback=None, **kwargs):
     if status in ExperimentLifeCycle.HEARTBEAT_STATUS:
         RedisHeartBeat.experiment_ping(self.id)
     if ExperimentLifeCycle.can_transition(status_from=self.last_status,
                                           status_to=status):
         ExperimentStatus.objects.create(experiment=self,
                                         status=status,
                                         message=message,
                                         traceback=traceback)
Example #2
0
 def set_status(self, status, created_at=None, message=None, traceback=None, **kwargs):
     if status in ExperimentLifeCycle.HEARTBEAT_STATUS:
         RedisHeartBeat.experiment_ping(self.id)
     last_status = self.last_status_before(status_date=created_at)
     if ExperimentLifeCycle.can_transition(status_from=last_status, status_to=status):
         params = {'created_at': created_at} if created_at else {}
         ExperimentStatus.objects.create(experiment=self,
                                         status=status,
                                         message=message,
                                         traceback=traceback,
                                         **params)
    def test_experiments_check_heartbeat(self):
        experiment1 = ExperimentFactory()
        ExperimentStatusFactory(experiment=experiment1,
                                status=ExperimentLifeCycle.RUNNING)
        RedisHeartBeat.experiment_ping(experiment_id=experiment1.id)
        experiment2 = ExperimentFactory()
        ExperimentStatusFactory(experiment=experiment2,
                                status=ExperimentLifeCycle.RUNNING)

        experiments_check_heartbeat(experiment1.id)
        experiment1.refresh_from_db()
        self.assertEqual(experiment1.last_status, ExperimentLifeCycle.RUNNING)

        experiments_check_heartbeat(experiment2.id)
        experiment2.refresh_from_db()
        self.assertEqual(experiment2.last_status, ExperimentLifeCycle.FAILED)
    def test_redis_heartbeat_experiment(self):
        heartbeat = RedisHeartBeat(experiment=1)
        self.assertEqual(heartbeat.redis_key, RedisHeartBeat.KEY_EXPERIMENT.format(1))
        self.assertEqual(heartbeat.is_alive(), False)
        self.assertEqual(RedisHeartBeat.experiment_is_alive(1), False)

        heartbeat.ping()
        self.assertEqual(heartbeat.is_alive(), True)
        self.assertEqual(RedisHeartBeat.experiment_is_alive(1), True)

        heartbeat.clear()
        self.assertEqual(heartbeat.is_alive(), False)
        self.assertEqual(RedisHeartBeat.experiment_is_alive(1), False)

        RedisHeartBeat.experiment_ping(1)
        self.assertEqual(heartbeat.is_alive(), True)
        self.assertEqual(RedisHeartBeat.experiment_is_alive(1), True)
Example #5
0
 def post(self, request, *args, **kwargs):
     RedisHeartBeat.experiment_ping(experiment_id=self.experiment.id)
     return Response(status=status.HTTP_200_OK)