def test_job_limit_hc2(self): schedule_health_checks(DummyLogger()) devs = 0 # check that only 2 devices got healthcheck for device in self.devices: device.refresh_from_db() if device.state != Device.STATE_IDLE: devs = devs + 1 self.assertEqual(devs, 2) for job in TestJob.objects.filter( state__in=[TestJob.STATE_SCHEDULING, TestJob.STATE_SCHEDULED]): job.go_state_finished(TestJob.HEALTH_COMPLETE) job.actual_device.health = Device.HEALTH_GOOD job.actual_device.state = Device.STATE_IDLE job.actual_device.save() job.save() # STEP 2 schedule_health_checks(DummyLogger()) devs = 0 # check that only 4 devices got healthcheck for device in self.devices: device.refresh_from_db() if device.state != Device.STATE_IDLE: devs = devs + 1 self.assertEqual(devs, 2)
def test_health_visibility_all_restricted(self): self._check_initial_state() self.device_type01.disable_health_check = False self.device_type01.save() schedule_health_checks(DummyLogger())[0] self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_scheduled(self.device03)
def test_health_visibility(self): self._check_initial_state() self.device_type01.disable_health_check = False self.device_type01.save() schedule_health_checks(logging.getLogger())[0] self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_scheduled(self.device03)
def test_health_visibility_all_restricted(self): self._check_initial_state() self.device_type01.disable_health_check = False self.device_type01.save() schedule_health_checks(logging.getLogger(), [], ["worker-01", "worker-03"]) self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_scheduled(self.device03)
def test_health_visibility_some_restricted(self): self._check_initial_state() self.device_type01.disable_health_check = False self.device_type01.save() schedule_health_checks(logging.getLogger()) self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) # device03 is restricted in setUp self._check_hc_scheduled(self.device03)
def test_health_visibility_owners(self): self._check_initial_state() self.device_type01.disable_health_check = False self.device_type01.owners_only = True self.device_type01.save() schedule_health_checks(DummyLogger())[0] # no health checks can be scheduled for _minimal_valid_job self._check_hc_not_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_not_scheduled(self.device03)
def test_device_health_wrong(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) # HEALTH_(BAD|MAINTENANCE|RETIRED) for health in [ Device.HEALTH_BAD, Device.HEALTH_MAINTENANCE, Device.HEALTH_RETIRED, ]: self.device01.health = health self.device01.save() self.device02.health = health self.device02.save() self.device03.health = health self.device03.save() available_devices = schedule_health_checks( logging.getLogger(), [], ["worker-01", "worker-03"]) self.assertEqual(available_devices, {"panda": []}) self._check_hc_not_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_not_scheduled(self.device03)
def test_no_devicedict(self): Device.get_health_check = _minimal_valid_job self.device_type02.disable_health_check = False self.device_type02.display = True self.device_type02.save() self.device04.state = Device.STATE_IDLE self.device04.health = Device.HEALTH_UNKNOWN self.device04.save() schedule_health_checks(DummyLogger()) self.device04.refresh_from_db() self.assertFalse(self.device04.is_valid()) self.assertEqual(self.device04.health, Device.HEALTH_BAD) self.assertIsNone(self.device04.current_job())
def test_health_visibility_owners_personal(self): self._check_initial_state() # repeat test_health_visibility_owners with suitable test job Device.get_health_check = self._minimal_personal_job self.device_type01.disable_health_check = False self.device_type01.owners_only = True self.device_type01.save() schedule_health_checks(DummyLogger())[0] # health checks can be scheduled for _minimal_personal_job self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_scheduled(self.device03)
def test_without_health_checks(self): # Make sure that get_health_check does return None Device.get_health_check = lambda cls: None self.assertEqual(self.device01.get_health_check(), None) self.assertEqual(self.device02.get_health_check(), None) self.assertEqual(self.device03.get_health_check(), None) # Schedule without health check available_devices = schedule_health_checks(DummyLogger())[0] self.assertEqual(available_devices, {"panda": ["panda01", "panda03"]})
def test_without_health_checks(self): # Make sure that get_health_check does return None Device.get_health_check = lambda cls: None self.assertEqual(self.device01.get_health_check(), None) self.assertEqual(self.device02.get_health_check(), None) self.assertEqual(self.device03.get_health_check(), None) # Schedule without health check available_devices = schedule_health_checks(DummyLogger()) self.assertEquals(available_devices, {"dt-01": ["device-01", "device-03"]})
def test_disabled_hc(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) self.device_type01.disable_health_check = True self.device_type01.save() available_devices = schedule_health_checks(DummyLogger())[0] self.assertEqual(available_devices, {"panda": ["panda01", "panda03"]})
def test_without_previous_hc_device_health_unknown(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) available_devices = schedule_health_checks(DummyLogger())[0] self.assertEqual(available_devices, {"panda": []}) self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_scheduled(self.device03)
def test_disabled_hc(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) self.device_type01.disable_health_check = True self.device_type01.save() available_devices = schedule_health_checks(DummyLogger()) self.assertEquals(available_devices, {"dt-01": ["device-01", "device-03"]})
def test_without_previous_hc_device_health_unknown(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) available_devices = schedule_health_checks(DummyLogger()) self.assertEquals(available_devices, {"dt-01": []}) self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_scheduled(self.device03)
def test_device_health_good(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) self.device01.health = Device.HEALTH_GOOD self.device01.save() self.device02.health = Device.HEALTH_GOOD self.device02.save() self.device03.health = Device.HEALTH_GOOD self.device03.save() available_devices = schedule_health_checks(DummyLogger())[0] self.assertEquals(available_devices, {"dt-01": ["device-03"]}) self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_not_scheduled(self.device03)
def test_device_health_looping(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) self.device01.health = Device.HEALTH_LOOPING self.device01.save() self.device02.health = Device.HEALTH_LOOPING self.device02.save() self.device03.health = Device.HEALTH_LOOPING self.device03.save() available_devices = schedule_health_checks(DummyLogger())[0] self.assertEqual(available_devices, {"panda": []}) self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_scheduled(self.device03)
def test_device_health_looping(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) self.device01.health = Device.HEALTH_LOOPING self.device01.save() self.device02.health = Device.HEALTH_LOOPING self.device02.save() self.device03.health = Device.HEALTH_LOOPING self.device03.save() available_devices = schedule_health_checks(DummyLogger()) self.assertEquals(available_devices, {"dt-01": []}) self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_scheduled(self.device03)
def test_device_health_good(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) self.device01.health = Device.HEALTH_GOOD self.device01.save() self.device02.health = Device.HEALTH_GOOD self.device02.save() self.device03.health = Device.HEALTH_GOOD self.device03.save() available_devices = schedule_health_checks(logging.getLogger(), [], ["worker-01", "worker-03"]) self.assertEqual(available_devices, {"panda": ["panda03"]}) self._check_hc_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_not_scheduled(self.device03)
def test_device_health_wrong(self): # Make sure that get_health_check does return something Device.get_health_check = _minimal_valid_job self.assertNotEqual(self.device01.get_health_check(), None) self.assertNotEqual(self.device02.get_health_check(), None) self.assertNotEqual(self.device03.get_health_check(), None) # HEALTH_(BAD|MAINTENANCE|RETIRED) for health in [Device.HEALTH_BAD, Device.HEALTH_MAINTENANCE, Device.HEALTH_RETIRED]: self.device01.health = health self.device01.save() self.device02.health = health self.device02.save() self.device03.health = health self.device03.save() available_devices = schedule_health_checks(DummyLogger()) self.assertEquals(available_devices, {"dt-01": []}) self._check_hc_not_scheduled(self.device01) self._check_hc_not_scheduled(self.device02) self._check_hc_not_scheduled(self.device03)