Add unittest for RPC compression
authorMichael Hanselmann <hansmi@google.com>
Thu, 5 Jan 2012 16:47:38 +0000 (17:47 +0100)
committerMichael Hanselmann <hansmi@google.com>
Fri, 6 Jan 2012 11:34:45 +0000 (12:34 +0100)
Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>

test/ganeti.rpc_unittest.py

index da94a70..990a412 100755 (executable)
@@ -33,6 +33,7 @@ from ganeti import http
 from ganeti import errors
 from ganeti import serializer
 from ganeti import objects
+from ganeti import backend
 
 import testutils
 
@@ -448,5 +449,25 @@ class TestNodeConfigResolver(unittest.TestCase):
       ])
 
 
+class TestCompress(unittest.TestCase):
+  def test(self):
+    for data in ["", "Hello", "Hello World!\nnew\nlines"]:
+      self.assertEqual(rpc._Compress(data),
+                       (constants.RPC_ENCODING_NONE, data))
+
+    for data in [512 * " ", 5242 * "Hello World!\n"]:
+      compressed = rpc._Compress(data)
+      self.assertEqual(len(compressed), 2)
+      self.assertEqual(backend._Decompress(compressed), data)
+
+  def testDecompression(self):
+    self.assertRaises(AssertionError, backend._Decompress, "")
+    self.assertRaises(AssertionError, backend._Decompress, [""])
+    self.assertRaises(AssertionError, backend._Decompress,
+                      ("unknown compression", "data"))
+    self.assertRaises(Exception, backend._Decompress,
+                      (constants.RPC_ENCODING_ZLIB_BASE64, "invalid zlib data"))
+
+
 if __name__ == "__main__":
   testutils.GanetiTestProgram()