Ejemplo n.º 1
0
    def testMsgWaitallProblems2(self):
        class ReceiveThread(threading.Thread):
            def __init__(self, sock, sizes):
                super(ReceiveThread, self).__init__()
                self.sock = sock
                self.sizes = sizes

            def run(self):
                cs, _ = self.sock.accept()
                for size in self.sizes:
                    data = socketutil.receive_data(cs, size)
                    socketutil.send_data(cs, data)
                cs.close()

        ss = socketutil.create_socket(bind=("localhost", 0))
        SIZES = [
            1000, 10000, 32000, 32768, 32780, 41950, 41952, 42000, 65000,
            65535, 65600, 80000, 999999
        ]
        serverthread = ReceiveThread(ss, SIZES)
        serverthread.setDaemon(True)
        serverthread.start()
        port = ss.getsockname()[1]
        cs = socketutil.create_socket(connect=("localhost", port), timeout=2)
        # test some sizes that might be problematic with MSG_WAITALL and check that they work fine
        for size in SIZES:
            socketutil.send_data(cs, b"x" * size)
            data = socketutil.receive_data(cs, size)
            assert size == len(data)
        serverthread.join()
        ss.close()
        cs.close()
Ejemplo n.º 2
0
 def testSend(self):
     ss = socketutil.create_socket(bind=("localhost", 0))
     port = ss.getsockname()[1]
     cs = socketutil.create_socket(connect=("localhost", port))
     socketutil.send_data(cs, b"foobar!" * 10)
     cs.shutdown(socket.SHUT_WR)
     a = ss.accept()
     data = socketutil.receive_data(a[0], 5)
     assert b"fooba" == data
     data = socketutil.receive_data(a[0], 5)
     assert b"r!foo" == data
     a[0].close()
     ss.close()
     cs.close()
Ejemplo n.º 3
0
 def testMsgWaitallProblems(self):
     ss = socketutil.create_socket(bind=("localhost", 0), timeout=2)
     port = ss.getsockname()[1]
     cs = socketutil.create_socket(connect=("localhost", port), timeout=2)
     a = ss.accept()
     # test some sizes that might be problematic with MSG_WAITALL and check that they work fine
     for size in [
             1000, 10000, 32000, 32768, 32780, 41950, 41952, 42000, 65000,
             65535, 65600, 80000
     ]:
         socketutil.send_data(cs, b"x" * size)
         data = socketutil.receive_data(a[0], size)
         socketutil.send_data(a[0], data)
         data = socketutil.receive_data(cs, size)
         assert size == len(data)
     a[0].close()
     ss.close()
     cs.close()
Ejemplo n.º 4
0
 def testSendUnix(self):
     if not hasattr(socket, "AF_UNIX"):
         pytest.skip("no unix domain sockets capability")
     SOCKNAME = "test_unixsocket"
     if os.path.exists(SOCKNAME):
         os.remove(SOCKNAME)
     ss = socketutil.create_socket(bind=SOCKNAME)
     cs = socketutil.create_socket(connect=SOCKNAME)
     socketutil.send_data(cs, b"foobar!" * 10)
     cs.shutdown(socket.SHUT_WR)
     a = ss.accept()
     data = socketutil.receive_data(a[0], 5)
     assert b"fooba" == data
     data = socketutil.receive_data(a[0], 5)
     assert b"r!foo" == data
     a[0].close()
     ss.close()
     cs.close()
     if os.path.exists(SOCKNAME):
         os.remove(SOCKNAME)
Ejemplo n.º 5
0
 def run(self):
     cs, _ = self.sock.accept()
     for size in self.sizes:
         data = socketutil.receive_data(cs, size)
         socketutil.send_data(cs, data)
     cs.close()