code: def setUp(self):
      super().setUp()
      self._input_data_dir = os.path.join(
          os.path.dirname(os.path.dirname(os.path.dirname(__file__))),
          "testdata",
          "external",
      )
  
      # Create values in exec_properties
      self._input_config = proto_utils.proto_to_json(
          example_gen_pb2.Input(
              splits=[
                  example_gen_pb2.Input.Split(
                      name="tfrecord", pattern="tfrecord/*"
                  ),
              ]
          )
      )
      self._output_config = proto_utils.proto_to_json(
          example_gen_pb2.Output(
              split_config=example_gen_pb2.SplitConfig(
                  splits=[
                      example_gen_pb2.SplitConfig.Split(
                          name="train", hash_buckets=2
                      ),
                      example_gen_pb2.SplitConfig.Split(
                          name="eval", hash_buckets=1
                      ),
                  ]
              )
          )
      )
  
imports: import os
  import apache_beam
  from apache_beam.testing import util
  import tensorflow
  from tfx.components.example_gen import utils
  from tfx.components.example_gen.import_example_gen import executor
  from tfx.dsl.io import fileio
  from tfx.proto import example_gen_pb2
  from tfx.types import artifact_utils
  from tfx.types import standard_artifacts
  from tfx.types import standard_component_specs
  from tfx.utils import proto_utils
label_desc: Use image node_id 1 for calling the ExecutorTest obj's underlying member method code with example usage: obj.setUp() without return types