code: def test_deploy_app_custom_exception(serve_instance):
      """Check that controller doesn't deserialize an exception from deploy_app."""
  
      controller = _get_global_client()._controller
  
      config = {
          "applications": [
              {
                  "name": "broken_app",
                  "route_prefix": "/broken",
                  "import_path": "ray.serve.tests.test_config_files.broken_app:app",
              }
          ]
      }
  
      ray.get(
          controller.deploy_config.remote(
              config=ServeDeploySchema.parse_obj(config)
          )
      )
  
      def check_custom_exception() -> bool:
          status = serve.status().applications["broken_app"]
          assert status.status == ApplicationStatus.DEPLOY_FAILED
          assert "custom exception info" in status.message
          return True
  
      wait_for_condition(check_custom_exception, timeout=10)
  
file_path: ray/python/ray/serve/tests/test_controller.py
imports: import json
  import time
  import pytest
  import ray
  from ray import serve
  from ray._private.test_utils import wait_for_condition
  from ray.serve._private.common import ApplicationStatus
  from ray.serve._private.constants import DEFAULT_AUTOSCALING_POLICY, SERVE_DEFAULT_APP_NAME
  from ray.serve._private.deployment_info import DeploymentInfo
  from ray.serve.autoscaling_policy import default_autoscaling_policy
  from ray.serve.context import _get_global_client
  from ray.serve.generated.serve_pb2 import DeploymentRoute
  from ray.serve.schema import ServeDeploySchema
label_desc: Use image node_id 2 for calling a global function with example usage: test_deploy_app_custom_exception(serve_instance) and returns: True