code: def _getTestPipeline(
      self,
  ) -> pipeline_py.Pipeline:  # pylint: disable=invalid-name
      component_a = _get_fake_component(
          _FakeComponentSpecA(
              output=types.Channel(type=_ArtifactTypeA),
              component_name="_FakeComponent.a",
          )
      )
      component_b = _get_fake_component(
          _FakeComponentSpecB(
              a=component_a.outputs["output"],
              output=types.Channel(type=_ArtifactTypeB),
              component_name="_FakeComponent.b",
          )
      )
      component_c = _get_fake_component(
          _FakeComponentSpecC(
              a=component_a.outputs["output"],
              output=types.Channel(type=_ArtifactTypeC),
              component_name="_FakeComponent.c",
          )
      )
      component_c.add_upstream_node(component_b)
      component_d = _get_fake_component(
          _FakeComponentSpecD(
              b=component_b.outputs["output"],
              c=component_c.outputs["output"],
              output=types.Channel(type=_ArtifactTypeD),
              component_name="_FakeComponent.d",
          )
      )
      component_e = _get_fake_component(
          _FakeComponentSpecE(
              a=component_a.outputs["output"],
              b=component_b.outputs["output"],
              d=component_d.outputs["output"],
              output=types.Channel(type=_ArtifactTypeE),
              component_name="_FakeComponent.e",
          )
      )
  
      temp_path = tempfile.mkdtemp()
      pipeline_root_path = os.path.join(temp_path, "pipeline_root")
      metadata_path = os.path.join(temp_path, "metadata.db")
      return pipeline_py.Pipeline(
          pipeline_name="test_pipeline",
          pipeline_root=pipeline_root_path,
          metadata_connection_config=sqlite_metadata_connection_config(
              metadata_path
          ),
          components=[
              component_d,
              component_c,
              component_a,
              component_b,
              component_e,
          ],
      )
  
imports: import os
  import tempfile
  from typing import Any, Dict, List
  import absl.testing.absltest
  from tfx import types
  from tfx.dsl.compiler import compiler
  from tfx.dsl.components.base import base_component
  from tfx.dsl.components.base import base_executor
  from tfx.dsl.components.base import executor_spec
  from tfx.orchestration import pipeline
  from tfx.orchestration.local import local_dag_runner
  from tfx.orchestration.metadata import sqlite_metadata_connection_config
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types.component_spec import ChannelParameter
  from tfx.types.component_spec import ExecutionParameter
label_desc: Use image node_id 2 for calling the LocalDagRunnerTest obj's underlying member method code with example usage: obj._getTestPipeline() and returns: pipeline_py