Exemplo n.º 1
0
    def test_infinite_cleanup_loop(self, mocked_apply_async):
        """
        There is a potential for the cleanup task to constantly call itself
        if every time it re-runs there is at least 1 new object to clean up
        (i.e. every 3 seconds for 60 days a new result is recorded). Make sure
        it only re-calls itself if the whole batch is used.
        """
        with self.settings(CELERY_ALWAYS_EAGER=False):
            initial_results = StatusCheckResult.objects.all().count()

            for i in range(2):
                StatusCheckResult(status_check=self.graphite_check,
                                  time=timezone.now() - timedelta(days=61),
                                  time_complete=timezone.now() -
                                  timedelta(days=61),
                                  succeeded=False).save()

            tasks.clean_db(batch_size=2)
            # If full batch is cleaned it should queue itself again
            self.assertTrue(mocked_apply_async.called)

            StatusCheckResult(status_check=self.graphite_check,
                              time=timezone.now() - timedelta(days=61),
                              time_complete=timezone.now() -
                              timedelta(days=61),
                              succeeded=False).save()

            mocked_apply_async.reset_mock()
            tasks.clean_db(batch_size=2)
            # This time full batch isn't cleaned (only 1 out of 2) - don't call again
            self.assertFalse(mocked_apply_async.called)
Exemplo n.º 2
0
    def test_cleanup_simple(self):
        initial_results = StatusCheckResult.objects.all().count()
        initial_snapshots = ServiceStatusSnapshot.objects.all().count()

        ServiceStatusSnapshot(
            service=self.service,
            num_checks_active=1,
            num_checks_passing=1,
            num_checks_failing=1,
            overall_status=self.service.overall_status,
            time=timezone.now() - timedelta(days=61),
        ).save()

        StatusCheckResult(status_check=self.graphite_check,
                          time=timezone.now() - timedelta(days=61),
                          time_complete=timezone.now() - timedelta(days=61),
                          succeeded=False).save()

        self.assertEqual(StatusCheckResult.objects.all().count(),
                         initial_results + 1)
        tasks.clean_db()
        self.assertEqual(StatusCheckResult.objects.all().count(),
                         initial_results)
        self.assertEqual(ServiceStatusSnapshot.objects.all().count(),
                         initial_snapshots)
Exemplo n.º 3
0
    def test_infinite_cleanup_loop(self, mocked_apply_async):
        """
        There is a potential for the cleanup task to constantly call itself
        if every time it re-runs there is at least 1 new object to clean up
        (i.e. every 3 seconds for 60 days a new result is recorded). Make sure
        it only re-calls itself if the whole batch is used.
        """
        with self.settings(CELERY_ALWAYS_EAGER=False):
            initial_results = StatusCheckResult.objects.all().count()

            for i in range(2):
                StatusCheckResult(
                    status_check=self.graphite_check,
                    time=timezone.now() - timedelta(days=61),
                    time_complete=timezone.now() - timedelta(days=61),
                    succeeded=False
                ).save()

            tasks.clean_db(batch_size=2)
            # If full batch is cleaned it should queue itself again
            self.assertTrue(mocked_apply_async.called)

            StatusCheckResult(
                status_check=self.graphite_check,
                time=timezone.now() - timedelta(days=61),
                time_complete=timezone.now() - timedelta(days=61),
                succeeded=False
            ).save()

            mocked_apply_async.reset_mock()
            tasks.clean_db(batch_size=2)
            # This time full batch isn't cleaned (only 1 out of 2) - don't call again
            self.assertFalse(mocked_apply_async.called)
Exemplo n.º 4
0
    def test_cleanup_batch(self):
        initial_results = StatusCheckResult.objects.all().count()

        for i in range(2):
            StatusCheckResult(
                status_check=self.graphite_check,
                time=timezone.now() - timedelta(days=61),
                time_complete=timezone.now() - timedelta(days=61),
                succeeded=False
            ).save()

        self.assertEqual(StatusCheckResult.objects.all().count(), initial_results + 2)
        tasks.clean_db(batch_size=1)
        self.assertEqual(StatusCheckResult.objects.all().count(), initial_results)
Exemplo n.º 5
0
    def test_cleanup_batch(self):
        initial_results = StatusCheckResult.objects.all().count()

        for i in range(2):
            StatusCheckResult(
                status_check=self.graphite_check,
                time=timezone.now() - timedelta(days=61),
                time_complete=timezone.now() - timedelta(days=61),
                succeeded=False
            ).save()

        self.assertEqual(StatusCheckResult.objects.all().count(), initial_results + 2)
        tasks.clean_db(batch_size=1)
        self.assertEqual(StatusCheckResult.objects.all().count(), initial_results)
Exemplo n.º 6
0
    def test_cleanup_simple(self):
        initial_results = StatusCheckResult.objects.all().count()
        initial_snapshots = ServiceStatusSnapshot.objects.all().count()

        ServiceStatusSnapshot(
            service=self.service,
            num_checks_active=1,
            num_checks_passing=1,
            num_checks_failing=1,
            overall_status=self.service.overall_status,
            time=timezone.now() - timedelta(days=61),
        ).save()

        StatusCheckResult(
            status_check=self.graphite_check,
            time=timezone.now() - timedelta(days=61),
            time_complete=timezone.now() - timedelta(days=61),
            succeeded=False
        ).save()

        self.assertEqual(StatusCheckResult.objects.all().count(), initial_results + 1)
        tasks.clean_db()
        self.assertEqual(StatusCheckResult.objects.all().count(), initial_results)
        self.assertEqual(ServiceStatusSnapshot.objects.all().count(), initial_snapshots)