docstr: Tests task generation when example-gen service job succeeds.
docstr_tok: ["Tests","task","generation","when","example-gen","service","job","succeeds","."]
code: def test_service_job_success(self):
      """Tests task generation when example-gen service job succeeds."""
      test_utils.fake_example_gen_run(
          self._mlmd_connection, self._example_gen, 1, 1
      )
  
      [
          eg_update_node_state_task,
          sg_update_node_state_task,
          sg_exec_node_task,
      ] = self._generate_and_test(
          True,
          num_initial_executions=1,
          num_tasks_generated=3,
          num_new_executions=1,
          num_active_executions=1,
          expected_exec_nodes=[self._stats_gen],
      )
      self.assertIsInstance(
          eg_update_node_state_task, task_lib.UpdateNodeStateTask
      )
      self.assertEqual(
          "my_example_gen", eg_update_node_state_task.node_uid.node_id
      )
      self.assertEqual(
          pstate.NodeState.COMPLETE, eg_update_node_state_task.state
      )
      self.assertIsInstance(
          sg_update_node_state_task, task_lib.UpdateNodeStateTask
      )
      self.assertEqual(
          "my_statistics_gen",
          sg_update_node_state_task.node_uid.node_id,
      )
      self.assertEqual(
          pstate.NodeState.RUNNING, sg_update_node_state_task.state
      )
      self.assertIsInstance(sg_exec_node_task, task_lib.ExecNodeTask)
  
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 14 for calling the SyncPipelineTaskGeneratorTest obj's underlying member method code with example usage: obj.test_service_job_success() without return types