コード例 #1
0
ファイル: testMessagePack.py プロジェクト: ustclin234/Hydra-1
 def testPartialUnpackBlockByBlock(self):
     unitSize = len(Message(MessagePackTest.map).pack())
     limit = unitSize * 3
     random = Random()
     multi = 10
     blockSizesA = [0] * (multi - 1)
     for i in range(len(blockSizesA)):
         blockSizesA[i] = random.randint(0, limit)
     sumA = sum(blockSizesA)
     lastSize = unitSize - (sumA % unitSize)
     blockSizes = blockSizesA + [lastSize]
     totalSize = sumA + lastSize
     self.assertEqual(totalSize % unitSize, 0)
     bytes = b''
     for i in range(totalSize // unitSize):
         bytes += Message(MessagePackTest.map).pack()
     self.assertEqual(len(bytes), totalSize)
     unpacker = msgpack.Unpacker(encoding='utf-8')
     generated = 0
     sumD = 0
     for size in blockSizes:
         unpacker.feed(bytes[sumD:sumD + size])
         sumD += size
         newGenerated = sumD // unitSize
         while newGenerated > generated:
             self.assertEqual(unpacker.__next__(), MessagePackTest.map)
             generated += 1
         self.assertRaises(StopIteration, unpacker.__next__)
     self.assertEqual(generated, totalSize // unitSize)
コード例 #2
0
 def testTypeAndContent(self):
     builder = Message.newBuilder()
     self.assertEqual(builder.create().messageType(), Message.Type.Unknown)
     m1 = builder.asRequest("TestRequest1").create()
     self.assertEqual(m1.messageType(), Message.Type.Request)
     self.assertEqual(m1.requestContent(), ("TestRequest1", [], {}))
     self.assertRaises(
         ProtocolException,
         lambda: builder.asRequest("TestRequest2", [100, "arg"], {
             "a": 1,
             Message.KeyTo: "11"
         }).create())
     m2 = builder.asRequest("TestRequest2", [100, "arg"], {
         "a": 1,
         "b": "bb"
     }).create()
     self.assertEqual(m2.messageType(), Message.Type.Request)
     self.assertEqual(m2.requestContent(), ("TestRequest2", [100, "arg"], {
         "b": "bb",
         "a": 1
     }))
     m3 = builder.asResponse("ContentOfResponse", 100).create()
     self.assertEqual(m3.messageType(), Message.Type.Response)
     self.assertRaises(ProtocolException, m3.requestContent)
     self.assertEqual(m3.responseContent(), ("ContentOfResponse", 100))
     m4 = builder.asError("ContentOfError", 1001).create()
     self.assertEqual(m4.messageType(), Message.Type.Error)
     self.assertRaises(ProtocolException, m4.requestContent)
     self.assertRaises(ProtocolException, m4.responseContent)
     self.assertEqual(m4.errorContent(), ("ContentOfError", 1001))
コード例 #3
0
ファイル: testMessagePack.py プロジェクト: ustclin234/Hydra-1
 def testMapPackAndUnpack(self):
     bytes = Message(MessagePackTest.map).pack()
     unpacker = msgpack.Unpacker(encoding='utf-8')
     unpacker.feed(bytes)
     m1 = unpacker.__next__()
     self.assertRaises(StopIteration, unpacker.__next__)
     self.assertEqual(m1, MessagePackTest.map)
コード例 #4
0
ファイル: testMessagePack.py プロジェクト: ustclin234/Hydra-1
 def testException(self):
     unpacker = msgpack.Unpacker(encoding='utf-8')
     bytes = Message(MessagePackTest.map).pack()
     unpacker.feed(bytes)
     unpacker.feed(bytes[1:-1])
     unpacker.feed(bytes)
     self.assertEqual(unpacker.__next__(), MessagePackTest.map)
     self.assertNotEqual(unpacker.__next__(), MessagePackTest.map)
コード例 #5
0
ファイル: testMessagePack.py プロジェクト: ustclin234/Hydra-1
 def testPartialUnpackByteByByte(self):
     multi = 10
     bytes = Message(MessagePackTest.map).pack()
     unpacker = msgpack.Unpacker(encoding='utf-8')
     for j in range(multi):
         for i in range(len(bytes) - 1):
             unpacker.feed(bytes[i:i + 1])
             self.assertRaises(StopIteration, unpacker.__next__)
         unpacker.feed(bytes[-1:])
         self.assertEqual(unpacker.__next__(), MessagePackTest.map)
コード例 #6
0
ファイル: testMessagePack.py プロジェクト: ustclin234/Hydra-1
 def testMultiUnpack(self):
     multi = 100
     bytes = b''
     for i in range(multi):
         bytes += Message(MessagePackTest.map).pack()
     unpacker = msgpack.Unpacker(encoding='utf-8')
     unpacker.feed(bytes)
     for i in range(multi):
         self.assertEqual(unpacker.__next__(), MessagePackTest.map)
     self.assertRaises(StopIteration, unpacker.__next__)
コード例 #7
0
 def testUpdateMessage(self):
     m1 = Message.newBuilder().asRequest("TestRequest1").create()
     self.assertEqual(m1.get("testitem"), None)
     m2 = m1 + {"testitem": 100}
     self.assertEqual(m2.get("testitem"), 100)
     m3 = m2.builder().create()
     self.assertEqual(m3.get("testitem"), 100)
     m4 = m3.builder().update({"t2": "11"}).create()
     self.assertEqual(m4.get("testitem"), 100)
     self.assertEqual(m4.get("t2"), "11")
     r1 = m4.response(99)
     self.assertEqual(r1.messageType(), Message.Type.Response)
     self.assertEqual(r1.responseContent(), (99, m4.messageID()))
     e1 = m4.error(999)
     self.assertEqual(e1.messageType(), Message.Type.Error)
     self.assertEqual(e1.errorContent(), (999, m4.messageID()))
コード例 #8
0
 def testMessageIDAndItsIncrecement(self):
     m0 = Message.newBuilder().create()
     id0 = m0.messageID()
     for i in range(0, 100):
         mi = Message.newBuilder().create()
         self.assertTrue(mi.messageID() == id0 + 1 + i)
     for m in [
             Message({}),
             Message({Message.KeyMessageID: "-1"}),
             Message({Message.KeyMessageID: None}),
             Message({Message.KeyMessageID: 1.2})
     ]:
         self.assertRaises(ProtocolException, m.messageID)
     self.assertTrue(
         Message({
             Message.KeyMessageID: 100
         }).messageID() == 100)
コード例 #9
0
 def testBasicInformation(self):
     b = Message.newBuilder()
     self.assertIsNone(b.create().getTo())
     b.to("the target")
     self.assertEqual(b.create().getTo(), "the target")
コード例 #10
0
 def testGetInformation(self):
     m = Message(MessageTest.map)
     self.assertEqual(m.get("keyString"), "value1")
     self.assertRaises(TypeError, lambda: m.get("keyString") + 1)
     self.assertRaises(ProtocolException, lambda: m.get("keyNull", False))
     self.assertIsNone(m.get("keyNull", True))
コード例 #11
0
ファイル: testMessagePack.py プロジェクト: ustclin234/Hydra-1
 def testOverDeepth(self):
     map = {"a": "b"}
     for i in range(200):
         map = {'a': map}
     Message(map).pack()
コード例 #12
0
ファイル: testMessagePack.py プロジェクト: ustclin234/Hydra-1
 def testFeedOverflow(self):
     unpacker = msgpack.Unpacker(encoding='utf-8')
     bytes = Message(MessagePackTest.map).pack()
     for i in range(1000000):
         unpacker.feed(bytes)