code: def setUp(self) -> None:
      self.tempdir = tempfile.mkdtemp()
      self.sdk = MockSDK()
  
      self.sdk.returns["get_project"] = APIDict(
          result=APIDict(name="unit_test_project")
      )
      self.sdk.returns["get_cloud"] = APIDict(
          result=APIDict(provider="AWS")
      )
  
      self.writeClusterEnv("{'env': true}")
      self.writeClusterCompute("{'compute': true}")
  
      with open(
          os.path.join(self.tempdir, "driver_fail.sh"), "wt"
      ) as f:
          f.write("exit 1\n")
  
      with open(
          os.path.join(self.tempdir, "driver_succeed.sh"), "wt"
      ) as f:
          f.write("exit 0\n")
  
      this_sdk = self.sdk
      this_tempdir = self.tempdir
  
      self.instances = {}
  
      self.cluster_manager_return = {}
      self.command_runner_return = {}
      self.file_manager_return = {}
  
      this_instances = self.instances
      this_cluster_manager_return = self.cluster_manager_return
      this_command_runner_return = self.command_runner_return
      this_file_manager_return = self.file_manager_return
  
      class MockClusterManager(MockReturn, FullClusterManager):
          def __init__(
              self,
              test_name: str,
              project_id: str,
              sdk=None,
              smoke_test: bool = False,
          ):
              super(MockClusterManager, self).__init__(
                  test_name, project_id, this_sdk, smoke_test=smoke_test
              )
              self.return_dict = this_cluster_manager_return
              this_instances["cluster_manager"] = self
  
      class MockCommandRunner(MockReturn, CommandRunner):
          return_dict = self.cluster_manager_return
  
          def __init__(
              self,
              cluster_manager: ClusterManager,
              file_manager: FileManager,
              working_dir,
              sdk=None,
              artifact_path: Optional[str] = None,
          ):
              super(MockCommandRunner, self).__init__(
                  cluster_manager, file_manager, this_tempdir
              )
              self.return_dict = this_command_runner_return
  
      class MockFileManager(MockReturn, FileManager):
          def __init__(self, cluster_manager: ClusterManager):
              super(MockFileManager, self).__init__(cluster_manager)
              self.return_dict = this_file_manager_return
  
      self.mock_alert_return = None
  
      def mock_alerter(test: Test, result: Result):
          return self.mock_alert_return
  
      result_to_handle_map["unit_test_alerter"] = (mock_alerter, False)
  
      type_str_to_command_runner["unit_test"] = MockCommandRunner
      command_runner_to_cluster_manager[
          MockCommandRunner
      ] = MockClusterManager
  
      self.test = MockTest(
          name="unit_test_end_to_end",
          run=dict(
              type="unit_test",
              prepare="prepare_cmd",
              script="test_cmd",
              wait_for_nodes=dict(num_nodes=4, timeout=40),
          ),
          working_dir=self.tempdir,
          cluster=dict(
              cluster_env="cluster_env.yaml",
              cluster_compute="cluster_compute.yaml",
          ),
          alert="unit_test_alerter",
      )
      self.anyscale_project = "prj_unit12345678"
  
imports: import os
  import pytest
  import shutil
  import sys
  import tempfile
  import time
  from typing import Type, Callable, Optional
  import unittest
  from unittest.mock import patch
  from ray_release.alerts.handle import result_to_handle_map
  from ray_release.cluster_manager.cluster_manager import ClusterManager
  from ray_release.cluster_manager.full import FullClusterManager
  from ray_release.command_runner.command_runner import CommandRunner
  from ray_release.test import Test
  from ray_release.exception import ReleaseTestConfigError, ClusterCreationError, ClusterStartupError, ClusterStartupTimeout, RemoteEnvSetupError, CommandError, PrepareCommandError, CommandTimeout, PrepareCommandTimeout, TestCommandError, TestCommandTimeout, FetchResultError, LogsError, ResultsAlert, ClusterNodesWaitTimeout
  from ray_release.file_manager.file_manager import FileManager
  from ray_release.glue import run_release_test, type_str_to_command_runner, command_runner_to_cluster_manager
  from ray_release.logger import logger
  from ray_release.reporter.reporter import Reporter
  from ray_release.result import Result, ExitCode
  from ray_release.tests.utils import MockSDK, APIDict
label_desc: Use image node_id 3 for calling the GlueTest obj's underlying member method code with example usage: obj.setUp() and returns: self