def CreateServer( extra_file_descriptors: List[communication.FileDescriptor], interface: interface_registry.Interface) -> communication.Server: server = communication.SubprocessServer( lambda channel: _MakeServerArgs(channel, interface), extra_file_descriptors) return server
def testCommunication(self): def MakeArgs(channel: communication.Channel) -> List[str]: return [ sys.executable, "-m", "grr_response_client.unprivileged.echo_server", str(channel.pipe_input.Serialize()), str(channel.pipe_output.Serialize()), ] server = communication.SubprocessServer(MakeArgs) server.Start() connection = server.Connect() connection.Send(communication.Message(b"foo", b"bar")) result = connection.Recv() self.assertEqual(result.data, b"foox") self.assertEqual(result.attachment, b"barx") connection.Send(communication.Message(b"FOO", b"BAR")) result = connection.Recv() self.assertEqual(result.data, b"FOOx") self.assertEqual(result.attachment, b"BARx") connection.Send(communication.Message(b"", b"")) result = connection.Recv() self.assertEqual(result.data, b"x") self.assertEqual(result.attachment, b"x") server.Stop()
def CreateFilesystemServer( device_file_descriptor: Optional[int] = None) -> communication.Server: extra_file_descriptors = [] if device_file_descriptor is not None: extra_file_descriptors.append(device_file_descriptor) server = communication.SubprocessServer(_MakeServerArgs, extra_file_descriptors) return server
def testTotalServerCpuSysTime_usesPsutilProcess(self): _FakeCpuTimes = collections.namedtuple("FakeCpuTimes", ["user", "system"]) class _FakeProcess: def __init__(self, pid): pass def cpu_times(self): # pylint: disable=invalid-name return _FakeCpuTimes(42.0, 43.0) with mock.patch.object(psutil, "Process", _FakeProcess): init_cpu_time = communication.TotalServerCpuTime() init_sys_time = communication.TotalServerSysTime() with communication.SubprocessServer(_MakeArgs): pass self.assertAlmostEqual(communication.TotalServerCpuTime() - init_cpu_time, 42.0) self.assertAlmostEqual(communication.TotalServerSysTime() - init_sys_time, 43.0)
def testCommunication(self): server = communication.SubprocessServer(_MakeArgs) server.Start() connection = server.Connect() connection.Send(communication.Message(b"foo", b"bar")) result = connection.Recv() self.assertEqual(result.data, b"foox") self.assertEqual(result.attachment, b"barx") connection.Send(communication.Message(b"FOO", b"BAR")) result = connection.Recv() self.assertEqual(result.data, b"FOOx") self.assertEqual(result.attachment, b"BARx") connection.Send(communication.Message(b"", b"")) result = connection.Recv() self.assertEqual(result.data, b"x") self.assertEqual(result.attachment, b"x") server.Stop()
def testTotalServerCpuSysTime_usesWin32Process(self): def _MockGetProcessTimes(handle): del handle # Unused. return { "UserTime": 42 * 10 * 1000 * 1000, "KernelTime": 43 * 10 * 1000 * 1000 } # pytype: disable=import-error import win32process # pylint: disable=g-import-not-at-top # pytype: enable=import-error with mock.patch.object(win32process, "GetProcessTimes", _MockGetProcessTimes): init_cpu_time = communication.TotalServerCpuTime() init_sys_time = communication.TotalServerSysTime() with communication.SubprocessServer(_MakeArgs): pass self.assertAlmostEqual(communication.TotalServerCpuTime() - init_cpu_time, 42.0) self.assertAlmostEqual(communication.TotalServerSysTime() - init_sys_time, 43.0)
def CreateFilesystemServer() -> communication.Server: server = communication.SubprocessServer(_MakeServerArgs) return server