def test_list_apps(fake_deployment, fake_stateful_set, invalid_app): mock_kube_client = mock.MagicMock() with mock.patch( "paasta_tools.cleanup_kubernetes_jobs.KubeClient", return_value=mock_kube_client, autospec=True, ), mock.patch( "paasta_tools.cleanup_kubernetes_jobs.get_services_for_cluster", return_value={}, autospec=True, ), mock.patch("paasta_tools.cleanup_kubernetes_jobs.alert_state_change", autospec=True) as mock_alert_state_change: mock_alert_state_change.__enter__ = mock.Mock( return_value=(mock.Mock(), None)) mock_alert_state_change.__exit__ = mock.Mock(return_value=None) cleanup_unused_apps("soa_dir", kill_threshold=1, force=False) assert mock_kube_client.deployments.list_namespaced_deployment.call_count == 1 assert mock_kube_client.deployments.list_namespaced_stateful_set.call_count == 1
def test_cleanup_unused_apps_dont_kill_everything(fake_deployment, fake_stateful_set, invalid_app): mock_kube_client = mock.MagicMock() with mock.patch( "paasta_tools.cleanup_kubernetes_jobs.KubeClient", return_value=mock_kube_client, autospec=True, ), mock.patch( "paasta_tools.cleanup_kubernetes_jobs.list_namespaced_applications", return_value=[DeploymentWrapper(fake_deployment)], autospec=True, ), mock.patch( "paasta_tools.cleanup_kubernetes_jobs.get_services_for_cluster", return_value={}, autospec=True, ), mock.patch("paasta_tools.cleanup_kubernetes_jobs.alert_state_change", autospec=True) as mock_alert_state_change: mock_alert_state_change.__enter__ = mock.Mock( return_value=(mock.Mock(), None)) mock_alert_state_change.__exit__ = mock.Mock(return_value=None) with raises(DontKillEverythingError): cleanup_unused_apps("soa_dir", kill_threshold=0, force=False) assert mock_kube_client.deployments.delete_namespaced_deployment.call_count == 0