Revision 208a6cff test/ganeti.rapi.client_unittest.py

b/test/ganeti.rapi.client_unittest.py
31 31
from ganeti import http
32 32
from ganeti import serializer
33 33
from ganeti import utils
34
from ganeti import query
35
from ganeti import objects
34 36

  
35 37
from ganeti.rapi import connector
36 38
from ganeti.rapi import rlib2
......
1152 1154
      self.assertEqual(data["amount"], amount)
1153 1155
      self.assertEqual(self.rapi.CountPending(), 0)
1154 1156

  
1157
  def testQuery(self):
1158
    for idx, what in enumerate(constants.QR_VIA_RAPI):
1159
      for idx2, filter_ in enumerate([None, ["?", "name"]]):
1160
        job_id = 11010 + (idx << 4) + (idx2 << 16)
1161
        fields = sorted(query.ALL_FIELDS[what].keys())[:10]
1162

  
1163
        self.rapi.AddResponse(str(job_id))
1164
        self.assertEqual(self.client.Query(what, fields, filter_=filter_),
1165
                         job_id)
1166
        self.assertItems([what])
1167
        self.assertHandler(rlib2.R_2_query)
1168
        self.assertFalse(self.rapi.GetLastHandler().queryargs)
1169
        data = serializer.LoadJson(self.rapi.GetLastRequestData())
1170
        self.assertEqual(data["fields"], fields)
1171
        if filter_ is None:
1172
          self.assertTrue("filter" not in data)
1173
        else:
1174
          self.assertEqual(data["filter"], filter_)
1175
        self.assertEqual(self.rapi.CountPending(), 0)
1176

  
1177
  def testQueryFields(self):
1178
    exp_result = objects.QueryFieldsResponse(fields=[
1179
      objects.QueryFieldDefinition(name="pnode", title="PNode",
1180
                                   kind=constants.QFT_NUMBER),
1181
      objects.QueryFieldDefinition(name="other", title="Other",
1182
                                   kind=constants.QFT_BOOL),
1183
      ])
1184

  
1185
    for what in constants.QR_VIA_RAPI:
1186
      for fields in [None, ["name", "_unknown_"], ["&", "?|"]]:
1187
        self.rapi.AddResponse(serializer.DumpJson(exp_result.ToDict()))
1188
        result = self.client.QueryFields(what, fields=fields)
1189
        self.assertItems([what])
1190
        self.assertHandler(rlib2.R_2_query_fields)
1191
        self.assertFalse(self.rapi.GetLastRequestData())
1192

  
1193
        queryargs = self.rapi.GetLastHandler().queryargs
1194
        if fields is None:
1195
          self.assertFalse(queryargs)
1196
        else:
1197
          self.assertEqual(queryargs, {
1198
            "fields": [",".join(fields)],
1199
            })
1200

  
1201
        self.assertEqual(objects.QueryFieldsResponse.FromDict(result).ToDict(),
1202
                         exp_result.ToDict())
1203

  
1204
        self.assertEqual(self.rapi.CountPending(), 0)
1205

  
1155 1206

  
1156 1207
class RapiTestRunner(unittest.TextTestRunner):
1157 1208
  def run(self, *args):

Also available in: Unified diff