code: def setUp(self):
      super().setUp()
      self.component_a = _FakeComponent(
          _FakeComponentSpecA(output=types.Channel(type=_ArtifactTypeA))
      )
      self.component_b = _FakeComponent(
          _FakeComponentSpecB(
              a=self.component_a.outputs["output"],
              output=types.Channel(type=_ArtifactTypeB),
          )
      )
      self.component_c = _FakeComponent(
          _FakeComponentSpecC(
              a=self.component_a.outputs["output"],
              b=self.component_b.outputs["output"],
              output=types.Channel(type=_ArtifactTypeC),
          )
      )
      self.test_pipeline = tfx_pipeline.Pipeline(
          pipeline_name="x",
          pipeline_root="y",
          metadata_connection_config=metadata_store_pb2.ConnectionConfig(),
          components=[
              self.component_c,
              self.component_a,
              self.component_b,
          ],
      )
  
imports: import json
  import tensorflow
  from tfx import types
  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.experimental.kubernetes import kubernetes_remote_runner
  from tfx.types.component_spec import ChannelParameter
  from tfx.utils import json_utils
  from google.protobuf import json_format
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 1 for calling the KubernetesRemoteRunnerTest obj's underlying member method code with example usage: obj.setUp() without return types