コード例 #1
0
    def test_gossip_core_stats(self):
        # Test that stats are set and change as different methods are used
        core = self._setup(8801)
        packetdic1 = core.PacketStats.get_stats()
        msgdic1 = str(core.MessageStats.get_stats())
        newNode = self._create_node(8859)
        core.add_node(newNode)
        msg = self._create_msg()
        pak = Packet()
        pak.add_message(msg, newNode, newNode, 0)

        # Following methods should update PacketStats
        core._do_write(pak.pack(), newNode)
        core._send_ack(pak, newNode)
        data = pak.pack()

        # Following method should update MessageStats
        packetdic2 = core.PacketStats.get_stats()
        core.datagramReceived(data, "localhost:8801")
        msgdic2 = str(core.MessageStats.get_stats())
        msgdic = core.MessageStats.get_stats(["MessageType"])["MessageType"]
        self.assertEqual(packetdic2["MessagesAcked"], 1)
        self.assertNotEqual(packetdic2["BytesSent"], [0, 0])
        self.assertNotEqual(packetdic1, packetdic2)
        self.assertNotEqual(msgdic1, msgdic2)
        self.assertEqual(msgdic['/gossip.Message/MessageBase'], 1)
コード例 #2
0
    def test_gossip_core_stats(self):
        # Test that stats are set and change as different methods are used
        core = self._setup(8801)
        packetdic1 = core.PacketStats.get_stats()
        msgdic1 = str(core.MessageStats.get_stats())
        newNode = self._create_node(8859)
        core.add_node(newNode)
        msg = self._create_msg()
        pak = Packet()
        pak.add_message(msg, newNode, newNode, 0)

        # Following methods should update PacketStats
        core._do_write(pak.pack(), newNode)
        core._send_ack(pak, newNode)
        data = pak.pack()

        # Following method should update MessageStats
        packetdic2 = core.PacketStats.get_stats()
        core.datagramReceived(data, "localhost:8801")
        msgdic2 = str(core.MessageStats.get_stats())
        msgdic = core.MessageStats.get_stats(["MessageType"])["MessageType"]
        self.assertEqual(packetdic2["MessagesAcked"], 1)
        self.assertNotEqual(packetdic2["BytesSent"], [0, 0])
        self.assertNotEqual(packetdic1, packetdic2)
        self.assertNotEqual(msgdic1, msgdic2)
        self.assertEqual(msgdic['/gossip.Message/MessageBase'], 1)
コード例 #3
0
 def test_gossip_datagram_received(self):
     # Test that datagramReceived behaves as expected
     core = self._setup(9500)
     peer = self._create_node(9501)
     peer2 = self._create_node(9502)
     core.add_node(peer)
     core.add_node(peer2)
     msg = self._create_msg()
     pak = Packet()
     pak.add_message(msg, peer, peer2, 0)
     data = pak.pack()
     # Test correct use of datagramReceived
     core.datagramReceived(data, "localhost:9001")
     msgType = core.MessageStats.get_stats(["MessageType"])
     self.assertIn('/gossip.Message/MessageBase', msgType["MessageType"])
     pakStats = core.PacketStats.get_stats(["MessagesAcked"])
     self.assertEqual(pakStats["MessagesAcked"], 1)
     # Test handling of duplicate packets
     msg2 = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     core.MessageHandledMap[msg2.Identifier] = time.time()
     pak.add_message(msg2, peer, peer2, 1)
     data2 = pak.pack()
     core.datagramReceived(data2, "localhost:9001")
     pakStats = core.PacketStats.get_stats(["DuplicatePackets"])
     self.assertEqual(pakStats["DuplicatePackets"], 1)
コード例 #4
0
 def test_gossip_datagram_received(self):
     # Test that datagramReceived behaves as expected
     core = self._setup(9500)
     peer = self._create_node(9501)
     peer2 = self._create_node(9502)
     core.add_node(peer)
     core.add_node(peer2)
     msg = self._create_msg()
     pak = Packet()
     pak.add_message(msg, peer, peer2, 0)
     data = pak.pack()
     # Test correct use of datagramReceived
     core.datagramReceived(data, "localhost:9001")
     msgType = core.MessageStats.get_stats(["MessageType"])
     self.assertIn('/gossip.Message/MessageBase',
                   msgType["MessageType"])
     pakStats = core.PacketStats.get_stats(["MessagesAcked"])
     self.assertEqual(pakStats["MessagesAcked"], 1)
     # Test handling of duplicate packets
     msg2 = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     core.MessageHandledMap[msg2.Identifier] = time.time()
     pak.add_message(msg2, peer, peer2, 1)
     data2 = pak.pack()
     core.datagramReceived(data2, "localhost:9001")
     pakStats = core.PacketStats.get_stats(["DuplicatePackets"])
     self.assertEqual(pakStats["DuplicatePackets"], 1)
コード例 #5
0
 def test_gossip_dowrite(self):
     # Test _dowrite puts a message on the wire
     core = self._setup(8804)
     newNode = self._create_node(8805)
     newNode.is_peer = True
     core.add_node(newNode)
     core2 = Gossip
     pak = Packet()
     data = "test the pack"
     pak.Data = data
     # Test correct sending of bytes
     status = core._do_write(pak.pack(), newNode)
     self.assertTrue(status)
     stats = core.PacketStats.get_stats(["BytesSent"])
     self.assertNotEqual(stats["BytesSent"], [0, 0])
     # Test failure of message that is too big
     # This will print out an error
     core.MaximumPacketSize = 0
     status = core._do_write(pak.pack(), newNode)
     self.assertFalse(status)
コード例 #6
0
 def test_gossip_datagram_unknown_peer(self):
     # Test that nothing is done if the nodes are not known
     core = self._setup(9007)
     peer = self._create_node(9008)
     peer2 = self._create_node(9009)
     msg = self._create_msg()
     pak = Packet()
     pak.add_message(msg, peer, peer2, 0)
     data = pak.pack()
     status = core.datagramReceived(data, "localhost:9001")
     self.assertIsNone(status)
コード例 #7
0
 def test_gossip_dowrite(self):
     # Test _dowrite puts a message on the wire
     core = self._setup(8804)
     newNode = self._create_node(8805)
     newNode.is_peer = True
     core.add_node(newNode)
     core2 = Gossip
     pak = Packet()
     data = "test the pack"
     pak.Data = data
     # Test correct sending of bytes
     status = core._do_write(pak.pack(), newNode)
     self.assertTrue(status)
     stats = core.PacketStats.get_stats(["BytesSent"])
     self.assertNotEqual(stats["BytesSent"], [0, 0])
     # Test failure of message that is too big
     # This will print out an error
     core.MaximumPacketSize = 0
     status = core._do_write(pak.pack(), newNode)
     self.assertFalse(status)
コード例 #8
0
 def test_gossip_datagram_unknown_peer(self):
     # Test that nothing is done if the nodes are not known
     core = self._setup(9007)
     peer = self._create_node(9008)
     peer2 = self._create_node(9009)
     msg = self._create_msg()
     pak = Packet()
     pak.add_message(msg, peer, peer2, 0)
     data = pak.pack()
     status = core.datagramReceived(data, "localhost:9001")
     self.assertIsNone(status)
コード例 #9
0
    def test_pack_unpack(self):
        # Test packing a paket and a packed packet can be unpacked correctly
        pak = Packet()
        data = "test the pack"
        pak.Data = data
        # Store original attributes
        original = [pak.PackedFormat, pak.TimeToLive,
                    pak.SequenceNumber, pak.IsAcknowledgement,
                    pak.IsReliable, str(pak.SenderID)]
        packed = pak.pack()
        # Change the packet to see if it will be returned to original
        pak.SequenceNumber = 1234
        pak.unpack(packed)
        # Store the attrubites of the unpacked pack
        new = [pak.PackedFormat, pak.TimeToLive,
               pak.SequenceNumber, pak.IsAcknowledgement,
               pak.IsReliable, str(pak.SenderID)]

        self.assertEquals(original, new)
        self.assertEquals("test the pack", pak.Data)
コード例 #10
0
    def test_pack_unpack(self):
        # Test packing a paket and a packed packet can be unpacked correctly
        pak = Packet()
        data = "test the pack"
        pak.Data = data
        # Store original attributes
        original = [
            pak.PackedFormat, pak.TimeToLive, pak.SequenceNumber,
            pak.IsAcknowledgement, pak.IsReliable,
            str(pak.SenderID)
        ]
        packed = pak.pack()
        # Change the packet to see if it will be returned to original
        pak.SequenceNumber = 1234
        pak.unpack(packed)
        # Store the attrubites of the unpacked pack
        new = [
            pak.PackedFormat, pak.TimeToLive, pak.SequenceNumber,
            pak.IsAcknowledgement, pak.IsReliable,
            str(pak.SenderID)
        ]

        self.assertEqual(original, new)
        self.assertEqual("test the pack", pak.Data.decode())