예제 #1
0
    def test_shut_down_obsolete_pr_sandboxes(self, data, mock_archive, mock_logger, mock_consul):
        """
        Test that `shut_down_obsolete_pr_sandboxes` correctly identifies and shuts down instances
        whose PRs got merged (more than) one week ago.
        """
        mock_logger.side_effect = self.mock_logger_process
        reference_date = timezone.now()

        # Create PRs and instances
        for i in range(5):
            make_watched_pr_and_instance(source_fork_name='some/fork{}'.format(i))

        # Calculate date when PR was closed
        pr_state = data['pr_state']
        if pr_state == 'closed':
            pr_closed_date = reference_date - timedelta(days=data['pr_days_since_closed'])
            closed_at = pr_closed_date.strftime('%Y-%m-%dT%H:%M:%SZ')
        else:
            closed_at = None

        with patch(
                'pr_watch.github.get_pr_info_by_number',
                return_value={'state': pr_state, 'closed_at': closed_at},
        ):
            # Run task
            tasks.shut_down_obsolete_pr_sandboxes()

            # Check if task tried to shut down instances
            if data['instance_is_archived']:
                self.assertEqual(mock_archive.call_count, 5)
                self.assertEqual(mock_logger.call_count, 15)
                mock_logger.assert_called_with("Shutting down obsolete sandbox instance", {})
            else:
                self.assertEqual(mock_archive.call_count, 0)
                self.assertEqual(mock_logger.call_count, 10)
예제 #2
0
    def test_shut_down_obsolete_pr_sandboxes(self, data, mock_shut_down):
        """
        Test that `shut_down_obsolete_pr_sandboxes` correctly identifies and shuts down instances
        whose PRs got merged (more than) one week ago.
        """
        reference_date = timezone.now()

        # Create PRs and instances
        for dummy in range(5):
            make_watched_pr_and_instance()

        # Calculate date when PR was closed
        pr_state = data['pr_state']
        if pr_state == 'closed':
            pr_closed_date = reference_date - timedelta(days=data['pr_days_since_closed'])
            closed_at = pr_closed_date.strftime('%Y-%m-%dT%H:%M:%SZ')
        else:
            closed_at = None

        with patch(
            'pr_watch.github.get_pr_info_by_number',
            return_value={'state': pr_state, 'closed_at': closed_at},
        ):
            # Run task
            tasks.shut_down_obsolete_pr_sandboxes()

            # Check if task tried to shut down instances
            if data['instance_is_shut_down']:
                self.assertEqual(mock_shut_down.call_count, 5)
            else:
                self.assertEqual(mock_shut_down.call_count, 0)
예제 #3
0
    def test_shut_down_obsolete_pr_sandboxes_no_pr(self, mock_archive):
        """
        Test that `shut_down_obsolete_pr_sandboxes` does not shut down instances
        that are not associated with a PR.
        """
        for dummy in range(5):
            OpenEdXInstanceFactory()

        tasks.shut_down_obsolete_pr_sandboxes()

        self.assertEqual(mock_archive.call_count, 0)
예제 #4
0
    def test_shut_down_obsolete_pr_sandboxes_no_pr(self, mock_shut_down):
        """
        Test that `shut_down_obsolete_pr_sandboxes` does not shut down instances
        that are not associated with a PR.
        """
        for dummy in range(5):
            OpenEdXInstanceFactory()

        tasks.shut_down_obsolete_pr_sandboxes()

        self.assertEqual(mock_shut_down.call_count, 0)
예제 #5
0
    def test_shut_down_obsolete_pr_sandboxes_archived(self, mock_archive):
        """
        Test that `shut_down_obsolete_pr_sandboxes` does not shut down instances
        more than once.
        """
        for dummy in range(5):
            instance = OpenEdXInstanceFactory()
            instance.ref.is_archived = True
            instance.save()

        tasks.shut_down_obsolete_pr_sandboxes()

        self.assertEqual(mock_archive.call_count, 0)