code: def test_pipeline(self, loss_key):
      model_dir = self._model_dir + "pipeline/"
      hparams = _make_hparams(
          train_input_pattern=self._data_file,
          eval_input_pattern=self._data_file,
          model_dir=model_dir,
          list_size=5,
          num_train_steps=3,
          num_eval_steps=3,
          checkpoint_secs=1,
          num_checkpoints=2,
          loss_key=loss_key,
      )
  
      pip = RankingPipelineClient().build_pipeline(hparams)
      pip.train_and_eval(local_training=True)
  
      required_patterns = [
          r"model\.ckpt\-\d\.data\-00000\-of\-00001",
          r"model\.ckpt\-\d\.index",
          r"model\.ckpt\-\d\.meta",
      ]
      output_files = tf.io.gfile.listdir(model_dir)
      for pattern in required_patterns:
          self.assertRegex(",".join(output_files), pattern)
  
imports: import os
  from absl.testing import parameterized
  import tensorflow
  from tensorflow import estimator
  import tensorflow_ranking
  from google.protobuf import text_format
  from tensorflow_ranking.extension import pipeline
  from tensorflow_serving.apis import input_pb2
label_desc: Use image node_id 3 for calling the RankingPipelineIntegrationTest obj's underlying member method code with example usage: obj.test_pipeline(loss_key) without return types