class_docstr: Defines testing harness for pipeline on KubeflowV2DagRunner.
code: def setUpClass(cls):
      super(BaseKubeflowV2Test, cls).setUpClass()
  
      if ":" not in cls._BASE_CONTAINER_IMAGE:
          # Generate base container image for the test if tag is not specified.
          cls.container_image = "{}:{}".format(
              cls._BASE_CONTAINER_IMAGE, test_utils.random_id()
          )
  
          # Create a container image for use by test pipelines.
          test_utils.build_and_push_docker_image(
              cls.container_image, cls._REPO_BASE
          )
      else:  # Use the given image as a base image.
          cls.container_image = cls._BASE_CONTAINER_IMAGE
  
imports: import datetime
  import os
  import subprocess
  from typing import Any, Dict, List, Optional
  from absl import logging
  from google.cloud import aiplatform
  from google.cloud.aiplatform import pipeline_jobs
  from tfx.dsl.components.base import base_node
  from tfx.orchestration import pipeline
  from tfx.orchestration import test_utils
  from tfx.orchestration.kubeflow.v2 import kubeflow_v2_dag_runner
  from tfx.orchestration.kubeflow.v2 import vertex_client_utils
  from tfx.utils import io_utils
  from tfx.utils import test_case_utils
label_desc: Use image node_id 1 for calling the BaseKubeflowV2Test obj's underlying member method code with example usage: obj.setUpClass(cls) without return types