コード例 #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()
コード例 #2
0
    def testDelete(self):
        toDelete = "execute"
        test_data = {
            toDelete: "command",
            "arguments": ["a", "b", "c"],
        }
        message = hv_kvm.QmpMessage(test_data)

        oldLen = len(message)
        del (message[toDelete])
        newLen = len(message)
        self.assertEqual(oldLen - 1, newLen)
コード例 #3
0
  def testSerialization(self):
    test_data = {
      "execute": "command",
      "arguments": ["a", "b", "c"],
      }
    message = hv_kvm.QmpMessage(test_data)

    for k, v in test_data.items():
      self.assertEqual(message[k], v)

    serialized = str(message)
    self.assertEqual(len(serialized.splitlines()), 1,
                     msg="Got multi-line message")

    rebuilt_message = hv_kvm.QmpMessage.BuildFromJsonString(serialized)
    self.assertEqual(rebuilt_message, message)
    self.assertEqual(len(rebuilt_message), len(test_data))
コード例 #4
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)