def handle(self, *args, **options): while True: r = choose_for_recalculation() if r: recalculate(r) else: time.sleep(settings.RANKINGSD_POLLING_INTERVAL)
def test_simple_flow(self): contest = Contest.objects.get() contest.controller_name = 'oioioi.rankings.tests.MockRankingContestController' contest.save() ranking, _ = Ranking.objects.get_or_create(contest=contest, key='key') ranking.save() self.assertFalse(ranking.is_up_to_date()) recalc = choose_for_recalculation() self.assertIsNotNone(recalc) self.assertIsNotNone(recalc.id) ranking.refresh_from_db() self.assertFalse(ranking.is_up_to_date()) recalculate(recalc) ranking.refresh_from_db() self.assertTrue(ranking.is_up_to_date()) self.assertEqual(ranking.serialized, 'serialized') self.assertEqual([page.data for page in ranking.pages.all()], ['1st', '2nd', '3rd']) self.assertEqual([page.nr for page in ranking.pages.all()], [1, 2, 3])
def test_simple_flow(self): contest = Contest.objects.get() contest.controller_name = \ 'oioioi.rankings.tests.MockRankingContestController' contest.save() ranking, _ = Ranking.objects.get_or_create(contest=contest, key='key') ranking.save() self.assertFalse(ranking.is_up_to_date()) recalc = choose_for_recalculation() self.assertIsNotNone(recalc) self.assertIsNotNone(recalc.id) ranking.refresh_from_db() self.assertFalse(ranking.is_up_to_date()) recalculate(recalc) ranking.refresh_from_db() self.assertTrue(ranking.is_up_to_date()) self.assertEqual(ranking.serialized, 'serialized') self.assertEqual([page.data for page in ranking.pages.all()], ['1st', '2nd', '3rd']) self.assertEqual([page.nr for page in ranking.pages.all()], [1, 2, 3])