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)
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)
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)
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)
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)