def testMultipleItems(self): process1 = sysinfo_pb2.Process() process1.pid = 1 process1.username = '******' process1.nice = 10 process1.VMS_size = 42 process1.RSS_size = 43 process1.status = 'sleeping' process1.cpu_percent = 1.5 process1.memory_percent = 2.5 process1.exe = '/foo/bar' process2 = sysinfo_pb2.Process() process2.pid = 2 process2.username = '******' process2.VMS_size = 40 process2.RSS_size = 41 process2.status = 'zombie' process2.exe = '/foo/baz/quux' ps = representer.ProcessList([process1, process2]) out = io.StringIO() ps._repr_pretty_(pretty.PrettyPrinter(out, max_width=55), cycle=False) expected = """ PID USER NI VIRT RES S CPU% MEM% Command 1 admin 10 42B 43B S 1.5 2.5 /foo/bar 2 admin 0 40B 41B Z 0.0 0.0 /foo/baz/q """ self.assertEqual(out.getvalue(), expected)
def ps(self): """Returns a list of processes running on the client.""" args = flows_pb2.ListProcessesArgs() try: ps = self._client.CreateFlow(name='ListProcesses', args=args) except api_errors.AccessForbiddenError as e: raise errors.ApprovalMissingError(self.id, e) _timeout.await_flow(ps) return representer.ProcessList([_.payload for _ in ps.ListResults()])
def ps(self) -> Sequence[sysinfo_pb2.Process]: """Returns a list of processes running on the client.""" args = flows_pb2.ListProcessesArgs() try: ps = self._client.CreateFlow(name='ListProcesses', args=args) except api_errors.AccessForbiddenError as e: raise errors.ApprovalMissingError(self.id, e) _timeout.await_flow(ps) def process(result: message.Message) -> sysinfo_pb2.Process: if not isinstance(result, sysinfo_pb2.Process): raise TypeError(f'Unexpected flow result type: {type(result)!r}') return result results = [process(response.payload) for response in ps.ListResults()] return representer.ProcessList(results)
def testSlice(self): process1 = sysinfo_pb2.Process() process2 = sysinfo_pb2.Process() ps = representer.ProcessList([process1, process2]) self.assertIsInstance(ps[:1], representer.ProcessList)
def testCycle(self): ps = representer.ProcessList([]) out = io.StringIO() with self.assertRaises(AssertionError): ps._repr_pretty_(pretty.PrettyPrinter(out), cycle=True)
def testEmptyResults(self): ps = representer.ProcessList([]) out = io.StringIO() ps._repr_pretty_(pretty.PrettyPrinter(out), cycle=False) self.assertEqual(out.getvalue(), 'No results.')