code: def test_hubresult_timestamps(self):
      self.minimum_engines(4)
      v = self.client[:]
      ar = v.apply_async(time.sleep, 0.25)
      ar.get(2)
      rc2 = ipp.Client(profile="iptest")
      # must have try/finally to close second Client, otherwise
      # will have dangling sockets causing problems
      try:
          time.sleep(0.25)
          hr = rc2.get_result(ar.msg_ids)
          assert hr.elapsed > 0.0, "got bad elapsed: %s" % hr.elapsed
          hr.get(1)
          assert (
              hr.wall_time < ar.wall_time + 0.2
          ), f"got bad wall_time: {hr.wall_time} > {ar.wall_time}"
          assert hr.serial_time == ar.serial_time
      finally:
          rc2.close()
  
imports: import os
  import time
  from datetime import datetime
  import pytest
  from IPython.utils.io import capture_output
  import ipyparallel
  from ipyparallel import error
  from .clienttest import ClusterTestCase, raises_remote
label_desc: Use image node_id 22 for calling the TestAsyncResult obj's underlying member method code with example usage: obj.test_hubresult_timestamps() without return types