Revision 55e711aa test/py/ganeti.hypervisor.hv_kvm_unittest.py

b/test/py/ganeti.hypervisor.hv_kvm_unittest.py
86 86
    """
87 87
    threading.Thread.__init__(self)
88 88
    self.socket_filename = socket_filename
89
    self.script = server_responses
89
    self.script = server_responses[:]
90 90

  
91 91
    self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
92 92
    self.socket.bind(self.socket_filename)
......
168 168

  
169 169

  
170 170
class TestQmp(testutils.GanetiTestCase):
171
  def testQmp(self):
172
    requests = [
173
      {"execute": "query-kvm", "arguments": []},
174
      {"execute": "eject", "arguments": {"device": "ide1-cd0"}},
175
      {"execute": "query-status", "arguments": []},
176
      {"execute": "query-name", "arguments": []},
177
      ]
178

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

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

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

  
191
    expected_responses = [
192
      {"enabled": True, "present": True},
193
      {},
194
      [{"name": "quit"}, {"name": "eject"}],
195
      {"running": True, "singlestep": False},
196
      ]
171
  REQUESTS = [
172
    {"execute": "query-kvm", "arguments": []},
173
    {"execute": "eject", "arguments": {"device": "ide1-cd0"}},
174
    {"execute": "query-status", "arguments": []},
175
    {"execute": "query-name", "arguments": []},
176
    ]
177

  
178
  SERVER_RESPONSES = [
179
    # One message, one send()
180
    '{"return": {"enabled": true, "present": true}}\r\n',
181

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

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

  
190
  EXPECTED_RESPONSES = [
191
    {"enabled": True, "present": True},
192
    {},
193
    [{"name": "quit"}, {"name": "eject"}],
194
    {"running": True, "singlestep": False},
195
    ]
197 196

  
197
  def testQmp(self):
198 198
    # Set up the stub
199 199
    socket_file = tempfile.NamedTemporaryFile()
200 200
    os.remove(socket_file.name)
201
    qmp_stub = QmpStub(socket_file.name, server_responses)
201
    qmp_stub = QmpStub(socket_file.name, self.SERVER_RESPONSES)
202 202
    qmp_stub.start()
203 203

  
204 204
    # Set up the QMP connection
......
206 206
    qmp_connection.connect()
207 207

  
208 208
    # Format the script
209
    for request, expected_response in zip(requests, expected_responses):
209
    for request, expected_response in zip(self.REQUESTS,
210
                                          self.EXPECTED_RESPONSES):
210 211
      response = qmp_connection.Execute(request["execute"],
211 212
                                        request["arguments"])
212 213
      self.assertEqual(response, expected_response)
......
218 219
                      qmp_connection.Execute,
219 220
                      "unsupported-command")
220 221

  
222
  def testQmpContextManager(self):
223
    # Set up the stub
224
    socket_file = tempfile.NamedTemporaryFile()
225
    os.remove(socket_file.name)
226
    qmp_stub = QmpStub(socket_file.name, self.SERVER_RESPONSES)
227
    qmp_stub.start()
228

  
229
    # Test the context manager functionality
230
    with hv_kvm.QmpConnection(socket_file.name) as qmp:
231
      for request, expected_response in zip(self.REQUESTS,
232
                                            self.EXPECTED_RESPONSES):
233
        response = qmp.Execute(request["execute"], request["arguments"])
234
        self.assertEqual(response, expected_response)
235

  
221 236

  
222 237
class TestConsole(unittest.TestCase):
223 238
  def _Test(self, instance, node, group, hvparams):

Also available in: Unified diff