Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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"]
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 def test_total_seconds(self):
     self.assertEqual(total_seconds(timedelta(seconds=60)), 60)