def test_patch_404(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_logging): # Mock patch deployment side effect mock_patch_namespaced_deployment.side_effect = client.rest.ApiException(status=404) # Mock list return value list_return_value = deepcopy(self.correct_list_replica_set) mock_list_namespaced_replica_set.return_value = list_return_value # Mock read return value read_return_value = deepcopy(list_return_value.items[0]) read_return_value.status = client.V1beta1ReplicaSetStatus() read_return_value.status.replicas = 0 mock_read_namespaced_replica_set.return_value = read_return_value # Mock delete replica set return value mock_delete_replica_set.return_value = True # Mock delete deployment return value mock_delete_deployment.return_value = True response = reap_deployment(self.name, self.namespace) mock_logging.debug.assert_called_once_with('can not gracefully delete nonexistent deploy/{} from ns/{}'.format(self.name, self.namespace)) rs_name = self.correct_list_replica_set.items[0].metadata.name mock_delete_replica_set.assert_called_once_with(rs_name, self.namespace) mock_delete_deployment.assert_called_once_with(self.name, self.namespace) assert response is True
def test_delete_deploy_only_after_rs(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_sleep, mock_logging): # Mock list return value list_return_value = deepcopy(self.correct_list_replica_set) mock_list_namespaced_replica_set.return_value = list_return_value # Mock read return value read_return_value = deepcopy(list_return_value.items[0]) read_return_value.status = client.V1beta1ReplicaSetStatus() read_return_value.status.replicas = 0 mock_read_namespaced_replica_set.return_value = read_return_value # Mock delete replica set return value mock_delete_replica_set.return_value = False response = reap_deployment(self.name, self.namespace) assert response is False assert mock_delete_replica_set.called is True assert mock_delete_deployment.called is False
def test_no_more_retries(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_sleep): # Mock list return value list_return_value = deepcopy(self.correct_list_replica_set) mock_list_namespaced_replica_set.return_value = list_return_value # Mock read return value read_return_value = deepcopy(list_return_value.items[0]) read_return_value.status = client.V1beta1ReplicaSetStatus() read_return_value.status.replicas = 0 mock_read_namespaced_replica_set.return_value = read_return_value # Mock delete replica set return value mock_delete_replica_set.return_value = False response = reap_deployment(self.name, self.namespace) sleep_calls = [call(0), call(2), call(4), call(6), call(8)] mock_sleep.assert_has_calls(sleep_calls) assert response is False assert mock_delete_replica_set.call_count == 5 assert mock_delete_deployment.called is False
def test_success(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_logging): # Mock list return value list_return_value = deepcopy(self.correct_list_replica_set) mock_list_namespaced_replica_set.return_value = list_return_value # Mock read return value read_return_value = deepcopy(list_return_value.items[0]) read_return_value.status = client.V1beta1ReplicaSetStatus() read_return_value.status.replicas = 0 mock_read_namespaced_replica_set.return_value = read_return_value # Mock delete replica set return value mock_delete_replica_set.return_value = True # Mock delete deployment return value mock_delete_deployment.return_value = True response = reap_deployment(self.name, self.namespace) body = {'spec': { 'replicas': 0, 'revision_history_limit': 0, 'paused': True}} mock_patch_namespaced_deployment.assert_called_once_with( self.name, self.namespace, body) label_selector = get_default_label_selector(name=self.name) mock_list_namespaced_replica_set.assert_called_once_with( self.namespace, label_selector=label_selector) rs_name = self.correct_list_replica_set.items[0].metadata.name mock_read_namespaced_replica_set.assert_called_once_with( rs_name, self.namespace) mock_delete_replica_set.assert_called_once_with(rs_name, self.namespace) mock_delete_deployment.assert_called_once_with(self.name, self.namespace) assert response is True
def test_both_deletes_end_loop(self, mock_patch_namespaced_deployment, mock_list_namespaced_replica_set, mock_read_namespaced_replica_set, mock_delete_replica_set, mock_delete_deployment, mock_sleep, mock_logging): # Mock list return value list_return_value = deepcopy(self.correct_list_replica_set) mock_list_namespaced_replica_set.return_value = list_return_value # Mock read return value read_return_value = deepcopy(list_return_value.items[0]) read_return_value.status = client.V1beta1ReplicaSetStatus() read_return_value.status.replicas = 0 mock_read_namespaced_replica_set.return_value = read_return_value # Mock delete replica set return value mock_delete_replica_set.return_value = True # Mock delete deployment return value mock_delete_replica_set.return_value = True response = reap_deployment(self.name, self.namespace) mock_sleep.assert_called_once_with(0) assert response is True assert mock_delete_replica_set.called is True assert mock_delete_deployment.called is True