コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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')
コード例 #4
0
    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')
コード例 #5
0
    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')
コード例 #6
0
    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')