def test_get_result(self): process = psutil.Process() direct_child_processes = len(process.children(recursive=False)) all_child_processes = len(process.children(recursive=True)) grandchild_processes = all_child_processes - direct_child_processes # Determine the last time we talked to the master (if ever) contacted = config.master_contacted(update=False) if isinstance(contacted, datetime): contacted = datetime.utcnow() - contacted # Determine the last time we announced ourselves to the # master (if ever) last_announce = config.get("last_announce", None) if isinstance(last_announce, datetime): last_announce = datetime.utcnow() - last_announce future_time = config["start"] + 30 process_memory = memory.process_memory() total_consumption = memory.total_consumption() expected_data = { "state": config["state"], "agent_hostname": config["agent_hostname"], "agent_process_ram": process_memory, "consumed_ram": total_consumption, "child_processes": direct_child_processes, "grandchild_processes": grandchild_processes, "pids": config["pids"], "agent_id": str(config["agent_id"]), "last_master_contact": contacted, "last_announce": last_announce, "agent_lock_file": config["agent_lock_file"], "free_ram": 4242, "uptime": total_seconds( timedelta(seconds=future_time - config["start"])), "jobs": list(config["jobtypes"].keys())} request = self.get() status = Status() with nested( mock.patch.object(memory, "free_ram", return_value=4242), mock.patch.object(time, "time", return_value=future_time), mock.patch.object( memory, "process_memory", return_value=process_memory), mock.patch.object( memory, "total_consumption", return_value=total_consumption) ): response = status.render(request) self.assertEqual(response, NOT_DONE_YET) self.assertTrue(request.finished) self.assertEqual(request.responseCode, OK) self.assertEqual(len(request.written), 1) self.assertEqual(loads(request.written[0]), expected_data)
def should_reannounce(self): """Small method which acts as a trigger for :meth:`reannounce`""" if self.reannounce_lock.locked or self.shutting_down: return False contacted = config.master_contacted(update=False) if contacted is None: return True return utility.total_seconds( datetime.utcnow() - contacted) > config["agent_master_reannounce"]
def test_acquire_timeout(self): deferred = TimedDeferredLock() yield deferred.acquire() self.assertTrue(deferred.locked) self.assertEqual(len(deferred.waiting), 0) start = datetime.utcnow() with self.assertRaises(LockTimeoutError): yield deferred.acquire(1) stop = datetime.utcnow() self.assertTrue(1.1 > total_seconds(stop - start) > .9)
def get(self, **_): # Get counts for child processes and grandchild processes process = psutil.Process() direct_child_processes = len(process.children(recursive=False)) all_child_processes = len(process.children(recursive=True)) grandchild_processes = all_child_processes - direct_child_processes # Determine the last time we talked to the master (if ever) contacted = config.master_contacted(update=False) if isinstance(contacted, datetime): # pragma: no cover contacted = datetime.utcnow() - contacted # Determine the last time we announced ourselves to the # master (if ever) last_announce = config.get("last_announce", None) if isinstance(last_announce, datetime): # pragma: no cover last_announce = datetime.utcnow() - last_announce data = {"state": config["state"], "agent_hostname": config["agent_hostname"], "free_ram": memory.free_ram(), "agent_process_ram": memory.process_memory(), "consumed_ram": memory.total_consumption(), "child_processes": direct_child_processes, "grandchild_processes": grandchild_processes, "pids": config["pids"], "agent_id": config["agent_id"], "last_master_contact": contacted, "last_announce": last_announce, "agent_lock_file": config["agent_lock_file"], "uptime": total_seconds( timedelta(seconds=time.time() - config["start"])), "jobs": list(config["jobtypes"].keys())} if config["farm_name"]: data["farm_name"] = config["farm_name"] return dumps(data)
def test_total_seconds(self): self.assertEqual(total_seconds(timedelta(seconds=60)), 60)