code: def testSessionStartStartupTimeout(self):
      self.cluster_manager.cluster_env_id = "correct"
      self.cluster_manager.cluster_compute_id = "correct"
  
      self.sdk.returns["create_cluster"] = APIDict(
          result=APIDict(id="success")
      )
      self.sdk.returns["start_cluster"] = APIDict(
          result=APIDict(id="cop_id", completed=False)
      )
  
      with freeze_time() as frozen_time, self.assertRaises(
          ClusterStartupTimeout
      ):
          self.sdk.returns["get_cluster_operation"] = _DelayedResponse(
              lambda: frozen_time.tick(delta=10),
              finish_after=300,
              before=APIDict(result=APIDict(completed=False)),
              after=APIDict(result=APIDict(completed=True)),
          )
  
          # Timeout before startup finishes
          self.cluster_manager.start_cluster(timeout=200)
  
imports: import os
  import sys
  import time
  import unittest
  from typing import Callable
  from unittest.mock import patch
  from freezegun import freeze_time
  from ray_release.exception import ClusterCreationError, ClusterStartupError, ClusterStartupTimeout, ClusterStartupFailed, ClusterEnvBuildError, ClusterEnvBuildTimeout, ClusterComputeCreateError, ClusterEnvCreateError
  from ray_release.cluster_manager.full import FullClusterManager
  from ray_release.cluster_manager.minimal import MinimalClusterManager
  from ray_release.tests.utils import UNIT_TEST_PROJECT_ID, UNIT_TEST_CLOUD_ID, APIDict, fail_always, fail_once, MockSDK
  from ray_release.util import get_anyscale_sdk
  from ray_release.test import Test
label_desc: Use image node_id 3 for calling the FullSessionManagerTest obj's underlying member method code with example usage: obj.testSessionStartStartupTimeout() without return types