Ejemplo n.º 1
0
    def test_interesting_processes_contains(self, lister_mock, os_mock):
        os_mock.return_value = -1
        lister_mock.return_value.dump_processes.return_value = [
            (1, "python2"),
            (2, "mongo"),
            (3, "python3"),
            (4, "mongod"),
            (5, "python"),
            (5, "java")  # this should be ignored.
        ]

        process_ids = None
        interesting_processes = ['python', 'mongo', 'mongod']
        process_match = "contains"
        logger = Mock()

        processes = get_processes(process_ids, interesting_processes, process_match, logger)

        self.assertCountEqual(processes, [
            Pinfo(name="python", pidv=[5]),
            Pinfo(name="python2", pidv=[1]),
            Pinfo(name="python3", pidv=[3]),
            Pinfo(name="mongo", pidv=[2]),
            Pinfo(name="mongod", pidv=[4])
        ])
Ejemplo n.º 2
0
    def test_process_ids(self, lister_mock, os_mock):
        os_mock.return_value = -1
        lister_mock.return_value.dump_processes.return_value = [
            (1, "python"),
            (2, "mongo"),
            (3, "python"),
            (4, "mongod"),
            (5, "mongod"),
            (6, "python"),  # rest is ignored
            (7, "mongod"),
            (8, "mongo"),
            (9, "java"),
        ]

        process_ids = [1, 2, 3, 4, 5]
        interesting_processes = []
        process_match = "exact"
        logger = Mock()

        processes = get_processes(process_ids, interesting_processes, process_match, logger)

        self.assertCountEqual(processes, [
            Pinfo(name="python", pidv=[1, 3]),
            Pinfo(name="mongo", pidv=[2]),
            Pinfo(name="mongod", pidv=[4, 5])
        ])
Ejemplo n.º 3
0
    def dump_info(  # pylint: disable=too-many-arguments
            self, pinfo, take_dump):
        """Dump useful information to the console."""
        debugger = "cdb.exe"
        dbg = self._find_debugger(debugger)

        if dbg is None:
            self._root_logger.warning(
                "Debugger %s not found, skipping dumping of %s", debugger,
                str(pinfo.pidv))
            return

        self._root_logger.info(
            "Debugger %s, analyzing %s processes with PIDs %s", dbg,
            pinfo.name, str(pinfo.pidv))

        # TODO: SERVER-48449
        for pid in pinfo.pidv:
            logger = _get_process_logger(self._dbg_output, pinfo.name, pid=pid)

            process = Pinfo(name=pinfo.name, pidv=pid)
            cmds = self._prefix() + self._process_specific(
                process, take_dump) + self._postfix()

            call([dbg, '-c', ";".join(cmds), '-p', str(pid)], logger)

            self._root_logger.info("Done analyzing %s process with PID %d",
                                   pinfo.name, pid)
Ejemplo n.º 4
0
    def test_interesting_processes_and_process_ids(self, lister_mock, os_mock):
        os_mock.return_value = -1
        lister_mock.return_value.dump_processes.return_value = [(1, "python"),
                                                                (2, "mongo"),
                                                                (3, "python"),
                                                                (4, "mongod"),
                                                                (5, "java")]

        process_ids = [1, 2, 5]
        interesting_processes = ['python', 'mongo', 'mongod']
        process_match = "exact"
        logger = Mock()

        processes = get_processes(process_ids, interesting_processes,
                                  process_match, logger)

        self.assertCountEqual(processes, [
            Pinfo(name="python", pidv=[1]),
            Pinfo(name="mongo", pidv=[2]),
            Pinfo(name="java", pidv=[5]),
        ])