def test_request_state_pond_state_failed_2(self): request = dmixer.blend(Request, state='PENDING') fail_count = request.fail_count now = timezone.now() molecules = mixer.cycle(4).blend(PondMolecule, completed=False, failed=False, event=[]) pond_blocks = [ mixer.blend(PondBlock, molecules=molecules, start=now - timedelta(minutes=30), end=now - timedelta(minutes=20))._to_dict(), mixer.blend(PondBlock, molecules=molecules, start=now - timedelta(minutes=30), end=now - timedelta(minutes=20))._to_dict() ] state_changed = update_request_state(request, pond_blocks, False) request.refresh_from_db() self.assertTrue(state_changed) self.assertEqual(request.state, 'PENDING') self.assertEqual(fail_count + 1, request.fail_count)
def test_request_state_pond_state_failed_and_threshold_failed(self): request = dmixer.blend(Request, state='PENDING', completion_threshold=95.0) fail_count = request.fail_count now = timezone.now() molecules = mixer.cycle(4).blend(PondMolecule, completed=False, failed=True, event=[ { 'completedExposures': 9 }, ], exp_time=100, exp_cnt=10) pond_blocks = [ mixer.blend(PondBlock, molecules=molecules, start=now - timedelta(minutes=30), end=now + timedelta(minutes=30))._to_dict(), mixer.blend(PondBlock, molecules=molecules)._to_dict() ] state_changed = update_request_state(request, pond_blocks, False) request.refresh_from_db() self.assertTrue(state_changed) self.assertEqual(request.state, 'PENDING') self.assertEqual(fail_count + 1, request.fail_count)
def test_request_state_pond_state_failed_but_threshold_complete(self): request = dmixer.blend(Request, state='PENDING', acceptability_threshold=90.0) now = timezone.now() molecules = mixer.cycle(4).blend(PondMolecule, completed=False, failed=True, events=[ { 'completed_exposures': 9 }, ], exposure_time=100, exposure_count=10) pond_blocks = [ mixer.blend(PondBlock, molecules=molecules, start=now - timedelta(minutes=30), end=now + timedelta(minutes=30))._to_dict(), mixer.blend(PondBlock, molecules=molecules)._to_dict() ] state_changed = update_request_state(request, pond_blocks, False) request.refresh_from_db() self.assertTrue(state_changed) self.assertEqual(request.state, 'COMPLETED')
def test_request_state_complete(self): request = dmixer.blend(Request, state='COMPLETED') molecules = mixer.cycle(4).blend(PondMolecule) pond_blocks = [mixer.blend(PondBlock, molecules=molecules)._to_dict(), mixer.blend(PondBlock, molecules=molecules)._to_dict()] state_changed = update_request_state(request, pond_blocks, True) request.refresh_from_db() self.assertFalse(state_changed) self.assertEqual(request.state, 'COMPLETED')
def test_request_state_pond_state_initial_state_pending_ur_expired(self): request = dmixer.blend(Request, state='PENDING') now = timezone.now() molecules = mixer.cycle(4).blend(PondMolecule, completed=False, failed=False, event=[]) pond_blocks = [mixer.blend(PondBlock, molecules=molecules, start=now - timedelta(minutes=30), end=now + timedelta(minutes=30))._to_dict(), mixer.blend(PondBlock, molecules=molecules)._to_dict()] state_changed = update_request_state(request, pond_blocks, True) request.refresh_from_db() self.assertTrue(state_changed) self.assertEqual(request.state, 'WINDOW_EXPIRED')
def test_request_state_pond_state_complete(self): request = dmixer.blend(Request, state='PENDING') molecules = mixer.cycle(4).blend(PondMolecule, completed=False, failed=False, event=[]) complete_molecules = mixer.cycle(4).blend(PondMolecule, completed=True, failed=False, event=[]) pond_blocks = [mixer.blend(PondBlock, molecules=molecules)._to_dict(), mixer.blend(PondBlock, molecules=complete_molecules)._to_dict()] state_changed = update_request_state(request, pond_blocks, True) request.refresh_from_db() self.assertTrue(state_changed) self.assertEqual(request.state, 'COMPLETED')