Example #1
0
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
Example #2
0
    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()
Example #3
0
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
Example #4
0
  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)
Example #5
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()
Example #6
0
  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)
Example #7
0
def CreateFilesystemServer() -> communication.Server:
    server = communication.SubprocessServer(_MakeServerArgs)
    return server