You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by dr...@apache.org on 2010/02/26 01:56:02 UTC
svn commit: r916508 - in /incubator/thrift/trunk:
lib/py/src/TSerialization.py test/py/SerializationTest.py
Author: dreiss
Date: Fri Feb 26 00:56:02 2010
New Revision: 916508
URL: http://svn.apache.org/viewvc?rev=916508&view=rev
Log:
THRIFT-695. python: [de]serialize convenience functions
Added:
incubator/thrift/trunk/lib/py/src/TSerialization.py
Modified:
incubator/thrift/trunk/test/py/SerializationTest.py
Added: incubator/thrift/trunk/lib/py/src/TSerialization.py
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/py/src/TSerialization.py?rev=916508&view=auto
==============================================================================
--- incubator/thrift/trunk/lib/py/src/TSerialization.py (added)
+++ incubator/thrift/trunk/lib/py/src/TSerialization.py Fri Feb 26 00:56:02 2010
@@ -0,0 +1,15 @@
+from protocol import TBinaryProtocol
+from transport import TTransport
+
+def serialize(thrift_object, protocol_factory = TBinaryProtocol.TBinaryProtocolFactory()):
+ transport = TTransport.TMemoryBuffer()
+ protocol = protocol_factory.getProtocol(transport)
+ thrift_object.write(protocol)
+ return transport.getvalue()
+
+def deserialize(base, buf, protocol_factory = TBinaryProtocol.TBinaryProtocolFactory()):
+ transport = TTransport.TMemoryBuffer(buf)
+ protocol = protocol_factory.getProtocol(transport)
+ base.read(protocol)
+ return base
+
Modified: incubator/thrift/trunk/test/py/SerializationTest.py
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/test/py/SerializationTest.py?rev=916508&r1=916507&r2=916508&view=diff
==============================================================================
--- incubator/thrift/trunk/test/py/SerializationTest.py (original)
+++ incubator/thrift/trunk/test/py/SerializationTest.py Fri Feb 26 00:56:02 2010
@@ -27,6 +27,7 @@
from thrift.transport import TTransport
from thrift.transport import TSocket
from thrift.protocol import TBinaryProtocol
+from thrift.TSerialization import serialize, deserialize
import unittest
import time
@@ -118,6 +119,23 @@
self.assertEqual(prot.readString(), bigstring)
self.assertEqual(prot.readI16(), 24)
+class SerializersTest(unittest.TestCase):
+
+ def testSerializeThenDeserialize(self):
+ obj = Xtruct2(i32_thing=1,
+ struct_thing=Xtruct(string_thing="foo"))
+
+ s1 = serialize(obj)
+ for i in range(10):
+ self.assertEquals(s1, serialize(obj))
+ objcopy = Xtruct2()
+ deserialize(objcopy, serialize(obj))
+ self.assertEquals(obj, objcopy)
+
+ obj = Xtruct(string_thing="bar")
+ objcopy = Xtruct()
+ deserialize(objcopy, serialize(obj))
+ self.assertEquals(obj, objcopy)
def suite():
@@ -127,6 +145,7 @@
suite.addTest(loader.loadTestsFromTestCase(NormalBinaryTest))
suite.addTest(loader.loadTestsFromTestCase(AcceleratedBinaryTest))
suite.addTest(loader.loadTestsFromTestCase(AcceleratedFramedTest))
+ suite.addTest(loader.loadTestsFromTestCase(SerializersTest))
return suite
if __name__ == "__main__":