From e571ee44997973a3ccd39fc913a313cb6a5451b1 Mon Sep 17 00:00:00 2001
From: Adeodato Simo <dato@google.com>
Date: Thu, 6 Jan 2011 12:27:40 +0000
Subject: [PATCH] ganeti.query_unittest.py: test lock fields too

Additionally, change TestQueryFields.testSomeFields() to handle lists of
fields shorter than 20 elements.

Signed-off-by: Adeodato Simo <dato@google.com>
Reviewed-by: Michael Hanselmann <hansmi@google.com>
---
 lib/query.py                  |  3 +++
 test/ganeti.query_unittest.py | 13 ++++++++-----
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/lib/query.py b/lib/query.py
index 14c0d4fd5..7906c6792 100644
--- a/lib/query.py
+++ b/lib/query.py
@@ -1072,3 +1072,6 @@ INSTANCE_FIELDS = _BuildInstanceFields()
 
 #: Fields available for lock queries
 LOCK_FIELDS = _BuildLockFields()
+
+#: All available field lists
+ALL_FIELD_LISTS = [NODE_FIELDS, INSTANCE_FIELDS, LOCK_FIELDS]
diff --git a/test/ganeti.query_unittest.py b/test/ganeti.query_unittest.py
index b713970ea..eb327af4f 100755
--- a/test/ganeti.query_unittest.py
+++ b/test/ganeti.query_unittest.py
@@ -763,7 +763,7 @@ class TestInstanceQuery(unittest.TestCase):
 
 class TestQueryFields(unittest.TestCase):
   def testAllFields(self):
-    for fielddefs in [query.NODE_FIELDS, query.INSTANCE_FIELDS]:
+    for fielddefs in query.ALL_FIELD_LISTS:
       result = query.QueryFields(fielddefs, None)
       self.assert_(isinstance(result, dict))
       response = objects.QueryFieldsResponse.FromDict(result)
@@ -776,10 +776,13 @@ class TestQueryFields(unittest.TestCase):
     rnd = random.Random(5357)
 
     for _ in range(10):
-      for fielddefs in [query.NODE_FIELDS, query.INSTANCE_FIELDS]:
-        fields = [fdef
-                  for (fdef, _, _) in rnd.sample(fielddefs.values(),
-                                                 rnd.randint(5, 20))]
+      for fielddefs in query.ALL_FIELD_LISTS:
+        if len(fielddefs) > 20:
+          sample_size = rnd.randint(5, 20)
+        else:
+          sample_size = rnd.randint(1, max(1, len(fielddefs) - 1))
+        fields = [fdef for (fdef, _, _) in rnd.sample(fielddefs.values(),
+                                                      sample_size)]
         result = query.QueryFields(fielddefs, [fdef.name for fdef in fields])
         self.assert_(isinstance(result, dict))
         response = objects.QueryFieldsResponse.FromDict(result)
-- 
GitLab