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