code: def test_cluster_status(self):
      master = Master(port=self.port)
      th = threading.Thread(target=master.run)
      th.start()
      time.sleep(5)
      parl.connect("localhost:{}".format(self.port))
      self.add_worker(n_cpu=1)
      time.sleep(40)
      status_info = master.cluster_monitor.get_status_info()
      self.assertEqual(
          status_info,
          "has 0 used cpus, 1 vacant cpus, 0 used_gpus, 0 vacant_gpus.",
      )
      actor = Actor()
      time.sleep(40)
      status_info = master.cluster_monitor.get_status_info()
      self.assertEqual(
          status_info,
          "has 1 used cpus, 0 vacant cpus, 0 used_gpus, 0 vacant_gpus.",
      )
      master.exit()
      th.join()
  
file_path: PARL/parl/remote/tests/cluster_status_test.py
imports: import os
  import parl
  import unittest
  import time
  import threading
  from parl.remote.master import Master
  from parl.remote.monitor import ClusterMonitor
  from parl.utils.test_utils import XparlTestCase
label_desc: Use image node_id 1 for calling the TestClusterStatus obj's underlying member method code with example usage: obj.test_cluster_status() without return types