예제 #1
0
    def test_broadcast(self):
        broadcast_done = False
        broadcast_msg = b"foo\0bar\n baz!"

        while not broadcast_done:
            event = self.client.service(0)
            if event.type == bzenet.EVENT_TYPE_RECEIVE:
                self.assertEquals(event.peer.state,
                                  bzenet.PEER_STATE_CONNECTED)
                self.assertEquals(event.packet.data, broadcast_msg)
                broadcast_done = True
            event = self.server.service(0)
            if event.type == bzenet.EVENT_TYPE_CONNECT:
                self.assertEquals(event.peer.state,
                                  bzenet.PEER_STATE_CONNECTED)
                self.server.broadcast(0, bzenet.Packet(broadcast_msg))
예제 #2
0
    def test_send(self):
        msg = b"foo\0bar"
        msg_received = False

        while not msg_received:
            event = self.server.service(0)
            if event.type == bzenet.EVENT_TYPE_RECEIVE:
                msg_received = True
                self.assertEquals(event.packet.data, msg)

            event = self.client.service(0)
            if event.type == bzenet.EVENT_TYPE_CONNECT:
                packet = bzenet.Packet(msg)
                self.assertEquals(packet.sent, False)
                ret = self.peer.send(0, packet)
                self.assertEquals(ret, 0)
                self.assertEquals(packet.sent, True)
예제 #3
0
 def test_flags(self):
     self.assertEquals(bzenet.Packet(b"foobar").flags, 0)
     self.assertEquals(
         bzenet.Packet(b"foobar", bzenet.PACKET_FLAG_UNSEQUENCED).flags,
         bzenet.PACKET_FLAG_UNSEQUENCED)
     self.assertRaises(MemoryError, getattr, bzenet.Packet(), "flags")
예제 #4
0
 def test_dataLength(self):
     self.assertEquals(bzenet.Packet(b"foobar").dataLength, 6)
     self.assertEquals(bzenet.Packet(b"foo\0bar").dataLength, 7)
     self.assertRaises(MemoryError, getattr, bzenet.Packet(), "dataLength")
예제 #5
0
 def test_data(self):
     self.assertEquals(bzenet.Packet(b"foo\0bar").data, b"foo\0bar")
     self.assertRaises(MemoryError, getattr, bzenet.Packet(), "data")
예제 #6
0
counter = 0
run = True
while run:
    event = host.service(1000)
    if event.type == bzenet.EVENT_TYPE_CONNECT:
        print("%s: CONNECT" % event.peer.address)
    elif event.type == bzenet.EVENT_TYPE_DISCONNECT:
        print("%s: DISCONNECT" % event.peer.address)
        run = False
        continue
    elif event.type == bzenet.EVENT_TYPE_RECEIVE:
        print("%s: IN:  %r" % (event.peer.address, event.packet.data))
        continue
    msg = bytes(bytearray([random.randint(0, 255) for i in range(40)]))
    packet = bzenet.Packet(msg)
    peer.send(0, packet)

    counter += 1
    if counter >= MSG_NUMBER:
        msg = SHUTDOWN_MSG
        peer.send(0, bzenet.Packet(msg))
        host.service(100)
        peer.disconnect()

    print("%s: OUT: %r" % (peer.address, msg))

# Part of the test to do with intercept callback and socket.send
peer = host.connect(bzenet.Address(b"localhost", 54301), 1)
shutdown_scheduled = False
run = True
예제 #7
0
shutdown_recv = False
while run:
    # Wait 1 second for an event
    event = host.service(1000)
    if event.type == bzenet.EVENT_TYPE_CONNECT:
        print("%s: CONNECT" % event.peer.address)
        connect_count += 1
    elif event.type == bzenet.EVENT_TYPE_DISCONNECT:
        print("%s: DISCONNECT" % event.peer.address)
        connect_count -= 1
        if connect_count <= 0 and shutdown_recv:
            run = False
    elif event.type == bzenet.EVENT_TYPE_RECEIVE:
        print("%s: IN:  %r" % (event.peer.address, event.packet.data))
        msg = event.packet.data
        if event.peer.send(0, bzenet.Packet(msg)) < 0:
            print("%s: Error sending echo packet!" % event.peer.address)
        else:
            print("%s: OUT: %r" % (event.peer.address, msg))
        if event.packet.data == b"SHUTDOWN":
            shutdown_recv = True

# Part of the test to do with intercept callback and socket.send

connect_count = 0
run = True
shutdown_recv = False


def receive_callback(address, data):
    if data and data == b"\xff\xff\xff\xffgetstatus\x00":