code: def test_worker_run(self):
      port = get_free_tcp_port()
      master = Master(port=port)
      th = threading.Thread(target=master.run)
      th.start()
      time.sleep(3)
      worker = Worker("localhost:{}".format(port), 1)
      worker_th = threading.Thread(target=worker.run)
      worker_th.start()
  
      for _ in range(3):
          if master.cpu_num == 1:
              break
          time.sleep(10)
      self.assertEqual(1, master.cpu_num)
  
      time.sleep(20)
      assert worker_th.is_alive()
  
      master.exit()
      worker.exit()
  
file_path: PARL/parl/remote/tests/worker_test.py
imports: import unittest
  import parl
  from parl.remote.master import Master
  from parl.remote.worker import Worker
  import time
  import threading
  from parl.remote.client import disconnect
  from parl.utils import logger, get_free_tcp_port
label_desc: Use image node_id 1 for calling the TestCluster obj's underlying member method code with example usage: obj.test_worker_run() without return types