Beispiel #1
0
    def testQmp(self):
        # Set up the stub
        socket_file = tempfile.NamedTemporaryFile()
        os.remove(socket_file.name)
        qmp_stub = QmpStub(socket_file.name, self.SERVER_RESPONSES)
        qmp_stub.start()

        # Set up the QMP connection
        qmp_connection = hv_kvm.QmpConnection(socket_file.name)

        try:
            qmp_connection.connect()

            # Format the script
            for request, expected_response in zip(self.REQUESTS,
                                                  self.EXPECTED_RESPONSES):
                response = qmp_connection.Execute(request["execute"],
                                                  request["arguments"])
                self.assertEqual(response, expected_response)
                msg = hv_kvm.QmpMessage({"return": expected_response})
                self.assertEqual(len(str(msg).splitlines()),
                                 1,
                                 msg="Got multi-line message")

            self.assertRaises(monitor.QmpCommandNotSupported,
                              qmp_connection.Execute, "unsupported-command")
        finally:
            qmp_stub.shutdown()
            qmp_connection.close()
  def testQmpContextManager(self):
    # Set up the stub
    socket_file = tempfile.NamedTemporaryFile()
    os.remove(socket_file.name)
    qmp_stub = QmpStub(socket_file.name, self.SERVER_RESPONSES)
    qmp_stub.start()

    # Test the context manager functionality
    with hv_kvm.QmpConnection(socket_file.name) as qmp:
      for request, expected_response in zip(self.REQUESTS,
                                            self.EXPECTED_RESPONSES):
        response = qmp.Execute(request["execute"], request["arguments"])
        self.assertEqual(response, expected_response)
Beispiel #3
0
  def testQmp(self):
    requests = [
      {"execute": "query-kvm", "arguments": []},
      {"execute": "eject", "arguments": {"device": "ide1-cd0"}},
      {"execute": "query-status", "arguments": []},
      {"execute": "query-name", "arguments": []},
      ]

    server_responses = [
      # One message, one send()
      '{"return": {"enabled": true, "present": true}}\r\n',

      # Message sent using multiple send()
      ['{"retur', 'n": {}}\r\n'],

      # Multiple messages sent using one send()
      '{"return": [{"name": "quit"}, {"name": "eject"}]}\r\n'
      '{"return": {"running": true, "singlestep": false}}\r\n',
      ]

    expected_responses = [
      {"return": {"enabled": True, "present": True}},
      {"return": {}},
      {"return": [{"name": "quit"}, {"name": "eject"}]},
      {"return": {"running": True, "singlestep": False}},
      ]

    # Set up the stub
    socket_file = tempfile.NamedTemporaryFile()
    os.remove(socket_file.name)
    qmp_stub = QmpStub(socket_file.name, server_responses)
    qmp_stub.start()

    # Set up the QMP connection
    qmp_connection = hv_kvm.QmpConnection(socket_file.name)
    qmp_connection.connect()

    # Format the script
    for request, expected_response in zip(requests, expected_responses):
      response = qmp_connection.Execute(request)
      msg = hv_kvm.QmpMessage(expected_response)
      self.assertEqual(len(str(msg).splitlines()), 1,
                       msg="Got multi-line message")
      self.assertEqual(response, msg)