Revision fbc263a9 test/ganeti.query_unittest.py

b/test/ganeti.query_unittest.py
1118 1118
      ["node1", "node44"],
1119 1119
      ])
1120 1120

  
1121
    # Name field, but no sorting, result must be in incoming order
1122
    q = query.Query(fielddefs, ["pnode", "snode"], namefield="pnode")
1123
    self.assertFalse(q.RequestedData())
1124
    self.assertEqual(q.Query(data, sort_by_name=False),
1125
      [[(constants.RS_NORMAL, "node1"), (constants.RS_NORMAL, "node44")],
1126
       [(constants.RS_NORMAL, "node30"), (constants.RS_NORMAL, "node90")],
1127
       [(constants.RS_NORMAL, "node25"), (constants.RS_NORMAL, "node1")],
1128
       [(constants.RS_NORMAL, "node20"), (constants.RS_NORMAL, "node1")]])
1129
    self.assertEqual(q.OldStyleQuery(data, sort_by_name=False), [
1130
      ["node1", "node44"],
1131
      ["node30", "node90"],
1132
      ["node25", "node1"],
1133
      ["node20", "node1"],
1134
      ])
1135
    self.assertEqual(q.Query(reversed(data), sort_by_name=False),
1136
      [[(constants.RS_NORMAL, "node20"), (constants.RS_NORMAL, "node1")],
1137
       [(constants.RS_NORMAL, "node25"), (constants.RS_NORMAL, "node1")],
1138
       [(constants.RS_NORMAL, "node30"), (constants.RS_NORMAL, "node90")],
1139
       [(constants.RS_NORMAL, "node1"), (constants.RS_NORMAL, "node44")]])
1140
    self.assertEqual(q.OldStyleQuery(reversed(data), sort_by_name=False), [
1141
      ["node20", "node1"],
1142
      ["node25", "node1"],
1143
      ["node30", "node90"],
1144
      ["node1", "node44"],
1145
      ])
1146

  
1147
  def testEqualNamesOrder(self):
1148
    fielddefs = query._PrepareFieldList([
1149
      (query._MakeField("pnode", "PNode", constants.QFT_TEXT, "Primary"),
1150
       None, 0, lambda ctx, item: item["pnode"]),
1151
      (query._MakeField("num", "Num", constants.QFT_NUMBER, "Num"),
1152
       None, 0, lambda ctx, item: item["num"]),
1153
      ], [])
1154

  
1155
    data = [
1156
      { "pnode": "node1", "num": 100, },
1157
      { "pnode": "node1", "num": 25, },
1158
      { "pnode": "node2", "num": 90, },
1159
      { "pnode": "node2", "num": 30, },
1160
      ]
1161

  
1162
    q = query.Query(fielddefs, ["pnode", "num"], namefield="pnode",
1163
                    filter_=["|", ["=", "pnode", "node1"],
1164
                                  ["=", "pnode", "node2"],
1165
                                  ["=", "pnode", "node1"]])
1166
    self.assertEqual(q.RequestedNames(), ["node1", "node2"],
1167
                     msg="Did not return unique names")
1168
    self.assertFalse(q.RequestedData())
1169
    self.assertEqual(q.Query(data),
1170
      [[(constants.RS_NORMAL, "node1"), (constants.RS_NORMAL, 100)],
1171
       [(constants.RS_NORMAL, "node1"), (constants.RS_NORMAL, 25)],
1172
       [(constants.RS_NORMAL, "node2"), (constants.RS_NORMAL, 90)],
1173
       [(constants.RS_NORMAL, "node2"), (constants.RS_NORMAL, 30)]])
1174
    self.assertEqual(q.Query(data, sort_by_name=False),
1175
      [[(constants.RS_NORMAL, "node1"), (constants.RS_NORMAL, 100)],
1176
       [(constants.RS_NORMAL, "node1"), (constants.RS_NORMAL, 25)],
1177
       [(constants.RS_NORMAL, "node2"), (constants.RS_NORMAL, 90)],
1178
       [(constants.RS_NORMAL, "node2"), (constants.RS_NORMAL, 30)]])
1179

  
1180
    data = [
1181
      { "pnode": "nodeX", "num": 50, },
1182
      { "pnode": "nodeY", "num": 40, },
1183
      { "pnode": "nodeX", "num": 30, },
1184
      { "pnode": "nodeX", "num": 20, },
1185
      { "pnode": "nodeM", "num": 10, },
1186
      ]
1187

  
1188
    q = query.Query(fielddefs, ["pnode", "num"], namefield="pnode",
1189
                    filter_=["|", ["=", "pnode", "nodeX"],
1190
                                  ["=", "pnode", "nodeY"],
1191
                                  ["=", "pnode", "nodeY"],
1192
                                  ["=", "pnode", "nodeY"],
1193
                                  ["=", "pnode", "nodeM"]])
1194
    self.assertEqual(q.RequestedNames(), ["nodeX", "nodeY", "nodeM"],
1195
                     msg="Did not return unique names")
1196
    self.assertFalse(q.RequestedData())
1197

  
1198
    # First sorted by name, then input order
1199
    self.assertEqual(q.Query(data, sort_by_name=True),
1200
      [[(constants.RS_NORMAL, "nodeM"), (constants.RS_NORMAL, 10)],
1201
       [(constants.RS_NORMAL, "nodeX"), (constants.RS_NORMAL, 50)],
1202
       [(constants.RS_NORMAL, "nodeX"), (constants.RS_NORMAL, 30)],
1203
       [(constants.RS_NORMAL, "nodeX"), (constants.RS_NORMAL, 20)],
1204
       [(constants.RS_NORMAL, "nodeY"), (constants.RS_NORMAL, 40)]])
1205

  
1206
    # Input order
1207
    self.assertEqual(q.Query(data, sort_by_name=False),
1208
      [[(constants.RS_NORMAL, "nodeX"), (constants.RS_NORMAL, 50)],
1209
       [(constants.RS_NORMAL, "nodeY"), (constants.RS_NORMAL, 40)],
1210
       [(constants.RS_NORMAL, "nodeX"), (constants.RS_NORMAL, 30)],
1211
       [(constants.RS_NORMAL, "nodeX"), (constants.RS_NORMAL, 20)],
1212
       [(constants.RS_NORMAL, "nodeM"), (constants.RS_NORMAL, 10)]])
1213

  
1121 1214
  def testFilter(self):
1122 1215
    (DK_A, DK_B) = range(1000, 1002)
1123 1216

  

Also available in: Unified diff