def test_cron_tidy_stale(self): now = datetime.datetime(2010, 1, 2, 3, 4, 5) self.mock_now(now) self.assertEqual(0, _assert_bot()) request = self._assert_task() exp = (request.expiration_ts - request.created_ts) + task_queues._ADVANCE self.assert_count(1, task_queues.BotTaskDimensions) self.assert_count(1, task_queues.TaskDimensions) self.assertEqual([2980491642], task_queues.get_queues(u'bot1')) # No-op. task_queues.cron_tidy_stale() self.assert_count(1, task_queues.BotTaskDimensions) self.assert_count(1, task_queues.TaskDimensions) self.assertEqual([2980491642], task_queues.get_queues(u'bot1')) # One second before expiration. self.mock_now(now, exp.total_seconds()) task_queues.cron_tidy_stale() self.assert_count(1, task_queues.BotTaskDimensions) self.assert_count(1, task_queues.TaskDimensions) self.assertEqual([2980491642], task_queues.get_queues(u'bot1')) # TaskDimension expired. self.mock_now(now, exp.total_seconds() + 1) task_queues.cron_tidy_stale() self.assert_count(0, task_queues.BotTaskDimensions) self.assert_count(0, task_queues.TaskDimensions) self.assertEqual([], task_queues.get_queues(u'bot1'))
def test_cron_tidy_stale(self): now = datetime.datetime(2010, 1, 2, 3, 4, 5) self.mock_now(now) self.assertEqual(0, _assert_bot()) request = self._assert_task() exp = (request.expiration_ts - request.created_ts + task_queues._EXTEND_VALIDITY) self.assert_count(1, task_queues.BotTaskDimensions) self.assert_count(1, task_queues.TaskDimensions) bot_root_key = bot_management.get_root_key(u'bot1') self.assertEqual([2980491642], task_queues.get_queues(bot_root_key)) # No-op. task_queues.cron_tidy_stale() self.assert_count(1, task_queues.BotTaskDimensions) self.assert_count(1, task_queues.TaskDimensions) self.assertEqual([2980491642], task_queues.get_queues(bot_root_key)) # TaskDimension expired but is still kept; get_queues() doesn't return it # anymore even if still in the DB. BotTaskDimensions was evicted. self.mock_now(now, exp.total_seconds() + 1) task_queues.cron_tidy_stale() self.assert_count(0, task_queues.BotTaskDimensions) self.assert_count(1, task_queues.TaskDimensions) self.assertEqual([], task_queues.get_queues(bot_root_key)) # Just before _KEEP_DEAD. self.mock_now(now, (exp + task_queues._KEEP_DEAD).total_seconds()) task_queues.cron_tidy_stale() self.assert_count(0, task_queues.BotTaskDimensions) self.assert_count(1, task_queues.TaskDimensions) self.assertEqual([], task_queues.get_queues(bot_root_key)) # TaskDimension expired, after KEEP_DEAD. self.mock_now(now, (exp + task_queues._KEEP_DEAD).total_seconds() + 1) task_queues.cron_tidy_stale() self.assert_count(0, task_queues.BotTaskDimensions) self.assert_count(0, task_queues.TaskDimensions) self.assertEqual([], task_queues.get_queues(bot_root_key))
def get(self): ndb.get_context().set_cache_policy(lambda _: False) task_queues.cron_tidy_stale() self.response.headers['Content-Type'] = 'text/plain; charset=utf-8' self.response.out.write('Success.')
def run_cron(self): task_queues.cron_tidy_stale()