class_docstr: This test runs all components in the template.
class_docstr_tok: ["This","test","runs","all","components","in","the","template","."]
code: def testLocalPipeline(self):
      self._copyTemplate("penguin")
      os.environ["LOCAL_HOME"] = os.path.join(self._temp_dir, "local")
  
      # Create a pipeline with only one component.
      self._create_pipeline()
      self._run_pipeline()
  
      self._copy_schema()
  
      # Update the pipeline to include all components.
      updated_pipeline_file = self._addAllComponents()
      logging.info(
          "Updated %s to add all components to the pipeline.",
          updated_pipeline_file,
      )
  
      # Update the pipeline to use ImportSchemaGen
      self._uncomment(
          "local_runner.py", ["schema_path=generated_schema_path"]
      )
      self._replaceFileContent(
          "local_runner.py",
          [
              (
                  "schema_path=generated_schema_path",
                  "schema_path='schema.pbtxt'",
              )
          ],
      )
  
      # Lowers required threshold to make tests stable.
      self._replaceFileContent(
          os.path.join("pipeline", "configs.py"),
          [
              (
                  "EVAL_ACCURACY_THRESHOLD = 0.6",
                  "EVAL_ACCURACY_THRESHOLD = 0.1",
              ),
          ],
      )
  
      logging.info(
          "Updated pipeline to add all components and use user provided schema."
      )
      self._update_pipeline()
      self._run_pipeline()
  
file_path: tfx/tfx/experimental/templates/penguin/e2e_tests/local_e2e_test.py
imports: import os
  import subprocess
  import sys
  from absl import logging
  import tensorflow
  from tfx.experimental.templates import test_utils
label_desc: Use image node_id 3 for calling the PenguinTemplateLocalEndToEndTest obj's underlying member method code with example usage: obj.testLocalPipeline() without return types