code: def test_generate_tasks_for_node(self):
      pipeline = self._make_pipeline(
          self._pipeline_root, str(uuid.uuid4()), pipeline_type="chore"
      )
      self._pipeline = pipeline
      chore_b = test_utils.get_node(pipeline, "chore_b")
  
      def id_tracked_fn():
          raise ValueError("Should not be called!")
  
      task_gen = sptg.SyncPipelineTaskGenerator(
          mlmd_connection_manager=self._mlmd_cm,
          is_task_id_tracked_fn=id_tracked_fn,
          service_job_manager=self._mock_service_job_manager,
      )
      chore_b_uid = task_lib.NodeUid.from_node(self._pipeline, chore_b)
  
      with self._mlmd_connection as m:
          pipeline_state = test_utils.get_or_create_pipeline_state(
              m, self._pipeline
          )
          tasks = task_gen.get_tasks_for_node(chore_b, pipeline_state)
  
      self.assertLen(tasks, 2)
      [update_task, exec_task] = tasks
      self.assertIsInstance(update_task, task_lib.UpdateNodeStateTask)
      self.assertEqual(update_task.state, pstate.NodeState.RUNNING)
      self.assertEqual(update_task.node_uid, chore_b_uid)
      self.assertIsInstance(exec_task, task_lib.ExecNodeTask)
      self.assertEqual(exec_task.node_uid, chore_b_uid)
  
imports: import itertools
  import os
  from typing import Literal
  import uuid
  from absl.testing import parameterized
  from absl.testing.absltest import mock
  import tensorflow
  from tfx.dsl.compiler import constants
  from tfx.orchestration import data_types_utils
  from tfx.orchestration.experimental.core import constants
  from tfx.orchestration.experimental.core import mlmd_state
  from tfx.orchestration.experimental.core import pipeline_state
  from tfx.orchestration.experimental.core import service_jobs
  from tfx.orchestration.experimental.core import sync_pipeline_task_gen
  from tfx.orchestration.experimental.core import task
  from tfx.orchestration.experimental.core import task_gen_utils
  from tfx.orchestration.experimental.core import task_queue
  from tfx.orchestration.experimental.core import test_utils
  from tfx.orchestration.experimental.core.testing import test_sync_pipeline
  from tfx.orchestration import mlmd_connection_manager
  from tfx.orchestration.portable import runtime_parameter_utils
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.utils import status
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 29 for calling the SyncPipelineTaskGeneratorTest obj's underlying member method code with example usage: obj.test_generate_tasks_for_node() without return types