code: def setUp(self):
      super().setUp()
  
      pipeline_root = os.path.join(
          os.environ.get(
              "TEST_UNDECLARED_OUTPUTS_DIR", self.get_temp_dir()
          ),
          self.id(),
      )
  
      metadata_path = os.path.join(
          pipeline_root, "metadata", "metadata.db"
      )
      self._mlmd_cm = mlmd_cm.MLMDConnectionManager.sqlite(
          metadata_path
      )
      self.enter_context(self._mlmd_cm)
      self._mlmd_connection = self._mlmd_cm.primary_mlmd_handle
  
      self._pipeline = self._make_pipeline(
          pipeline_root, str(uuid.uuid4())
      )
      self._manual_node = self._pipeline.nodes[0].pipeline_node
  
imports: import os
  import threading
  import time
  import typing
  import uuid
  import tensorflow
  from tfx.dsl.compiler import constants
  from tfx.orchestration.experimental.core import mlmd_state
  from tfx.orchestration.experimental.core import sync_pipeline_task_gen
  from tfx.orchestration.experimental.core import task
  from tfx.orchestration.experimental.core import task_queue
  from tfx.orchestration.experimental.core import task_scheduler
  from tfx.orchestration.experimental.core import test_utils
  from tfx.orchestration.experimental.core.task_schedulers import manual_task_scheduler
  from tfx.orchestration.experimental.core.testing import test_manual_node
  from tfx.orchestration import mlmd_connection_manager
  from tfx.orchestration.portable import runtime_parameter_utils
  from tfx.utils import status
label_desc: Use image node_id 1 for calling the ManualTaskSchedulerTest obj's underlying member method code with example usage: obj.setUp() without return types