code: def test_multi_process_runner(self):
      mpr_result = multi_process_runner.run(
          fn_that_adds_task_type_in_return_data,
          multi_worker_test_base.create_cluster_spec(
              num_workers=2, num_ps=3, has_chief=True
          ),
      )
  
      job_count_dict = {"worker": 2, "ps": 3, "chief": 1}
      for data in mpr_result.return_value:
          job_count_dict[data] -= 1
  
      self.assertEqual(job_count_dict["worker"], 0)
      self.assertEqual(job_count_dict["ps"], 0)
      self.assertEqual(job_count_dict["chief"], 0)
  
imports: import ctypes
  import json
  import os
  import sys
  import threading
  import time
  import unittest
  from absl import logging
  from absl.testing import parameterized
  from tensorflow.python.distribute import combinations
  from tensorflow.python.distribute import multi_process_runner
  from tensorflow.python.distribute import multi_worker_test_base
  from tensorflow.python.eager import context
  from tensorflow.python.eager import test
label_desc: Use image node_id 2 for calling the MultiProcessRunnerTest obj's underlying member method code with example usage: obj.test_multi_process_runner() without return types