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]) ])
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]) ])
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)
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]), ])