code: def _assert_infra_validator_passed(self, pipeline_name: str):
      artifacts = self._get_artifacts_with_type_and_pipeline(
          type_name="InfraBlessing", pipeline_name=pipeline_name
      )
      self.assertGreaterEqual(len(artifacts), 1)
      for artifact in artifacts:
          blessed = os.path.join(artifact.uri, "INFRA_BLESSED")
          self.assertTrue(
              fileio.exists(blessed),
              "Expected InfraBlessing results cannot be found under path %s for "
              "artifact %s" % (blessed, artifact),
          )
  
imports: import os
  import subprocess
  import time
  from typing import List
  from absl import logging
  from grpc import insecure_channel
  import tensorflow
  from tfx.dsl.io import fileio
  from tfx.orchestration import test_utils
  from tfx.orchestration.experimental.core.testing import test_dynamic_exec_properties_pipeline
  from tfx.orchestration.kubeflow import test_utils
  from tfx.orchestration.test_pipelines import download_grep_print_pipeline
  from tfx.types import standard_artifacts
  from ml_metadata.proto import metadata_store_pb2
  from ml_metadata.proto import metadata_store_service_pb2
  from ml_metadata.proto import metadata_store_service_pb2_grpc
label_desc: Use image node_id 9 for calling the KubeflowEndToEndTest obj's underlying member method code with example usage: obj._assert_infra_validator_passed(pipeline_name) without return types