code: def test_configs_with_matching_app_names(self):
      config1 = ServeDeploySchema(
          applications=[
              ServeApplicationSchema(
                  name="app1",
                  import_path="fake.import",
                  route_prefix="/app1",
              ),
              ServeApplicationSchema(
                  name="app2",
                  import_path="fake.import2",
                  route_prefix="/app2",
              ),
              ServeApplicationSchema(
                  name="app3",
                  import_path="fake.import3",
                  route_prefix="/app3",
              ),
          ],
      )
  
      # Configs contain apps with same name but different import paths.
      config2 = deepcopy(config1)
      config2.applications[0].import_path = "different_fake.import"
      assert applications_match(config1, config2) is True
  
      config2.applications[0].import_path = "extended.fake.import"
      assert applications_match(config1, config2) is True
  
      config2.applications[0].import_path = "fake:import"
      assert applications_match(config1, config2) is True
  
      # Configs contain apps with same name but different route_prefixes.
      config2 = deepcopy(config1)
      config2.applications[0].route_prefix += "_suffix"
      assert applications_match(config1, config2) is True
  
      # Configs contain apps with same name but different runtime_envs.
      config2 = deepcopy(config1)
      config2.applications[1].runtime_env = {
          "working_dir": "https://fake/uri"
      }
      assert applications_match(config1, config2) is True
  
      # Configs contain apps with same name but different target_capacities.
      config2 = deepcopy(config1)
      config2.target_capacity = 50
      assert applications_match(config1, config2) is True
  
      # Configs contain apps with same name but different http options.
      config2 = deepcopy(config1)
      config2.http_options = HTTPOptionsSchema(host="62.79.45.100")
      assert applications_match(config1, config2) is True
  
file_path: ray/python/ray/serve/tests/unit/test_controller.py
imports: from copy import deepcopy
  import pytest
  from ray.serve._private.common import TargetCapacityDirection
  from ray.serve._private.controller import applications_match, calculate_target_capacity_direction
  from ray.serve.schema import HTTPOptionsSchema, ServeApplicationSchema, ServeDeploySchema
label_desc: Use image node_id 2 for calling the TestApplicationsMatch obj's underlying member method code with example usage: obj.test_configs_with_matching_app_names() without return types