Esempio n. 1
0
    def test_asyncio(self):
        logger.info("start test_asyncio()")
        if IS_TRAVIS and IS_WINDOWS:
            return unittest.skip("travis's windows fail stream drain()")

        loop = asyncio.get_event_loop()

        sock1 = SecureReliableSocket()
        sock2 = SecureReliableSocket()
        sock1.setblocking(False)
        sock2.setblocking(False)

        async def coro():
            fut1 = loop.run_in_executor(self.executor, sock1.connect,
                                        ("127.0.0.1", self.port))
            fut2 = loop.run_in_executor(self.executor, sock2.connect,
                                        ("127.0.0.1", self.port))
            await fut1
            await fut2

            reader1, writer1 = await asyncio.open_connection(sock=sock1)
            reader2, writer2 = await asyncio.open_connection(sock=sock2)

            writer1.write(b"nice world")
            await writer1.drain()
            received = await reader2.read(1024)
            assert received == b"nice world"

            writer1.close()
            writer2.close()

        loop.run_until_complete(coro())
        sleep(1.0)
        assert sock1.is_closed and sock2.is_closed, (sock1, sock2)
Esempio n. 2
0
from srudp import SecureReliableSocket
from time import sleep, time
import sys

sock = SecureReliableSocket()
sock.connect((sys.argv[1], int(sys.argv[2])))

while not sock.is_closed:
    sock.sendall(b'hello ' + str(time()).encode())
    sleep(3)
print("closed", sock)
Esempio n. 3
0
    def test_big_size(self):
        logger.info("start test_big_size()")
        sock1 = SecureReliableSocket()
        sock2 = SecureReliableSocket()
        sock1.settimeout(5.0)
        sock2.settimeout(5.0)

        # connect
        fut1 = self.executor.submit(sock1.connect, ("127.0.0.1", self.port1),
                                    self.port2)
        fut2 = self.executor.submit(sock2.connect, ("127.0.0.1", self.port2),
                                    self.port1)

        fut1.result(10.0)
        fut2.result(10.0)

        # 1M bytes data
        data = os.urandom(1000000)
        self.executor.submit(sock2.sendall, data)\
            .add_done_callback(lambda fut: fut.result())
        received = b""
        while True:
            try:
                received += sock1.recv(4096)
                if 1000000 <= len(received):
                    break
            except s.timeout:
                break
        assert received == data, (len(received), len(data))

        # close
        sock1.close()
        sock2.close()
Esempio n. 4
0
    def test_basic(self):
        logger.info("start test_basic()")
        sock1 = SecureReliableSocket()
        sock2 = SecureReliableSocket()
        sock1.settimeout(5.0)
        sock2.settimeout(5.0)

        # connect
        fut1 = self.executor.submit(sock1.connect, ("127.0.0.1", self.port1),
                                    self.port2)
        fut2 = self.executor.submit(sock2.connect, ("127.0.0.1", self.port2),
                                    self.port1)

        logger.info("wait fut")
        fut1.result(10.0)
        fut2.result(10.0)

        # connection info
        logger.info("getsockname")
        assert sock1.getpeername() == sock2.getsockname(), (
            sock1.getpeername(), sock2.getsockname())

        # normal sending
        logger.info("sending")
        sock1.sendall(b"hello world")
        logger.info("recv")
        assert sock2.recv(1024) == b"hello world"

        # broadcast sending
        sock2.broadcast(b"good man")
        assert sock1.recv(1024) == b"good man"

        # broadcast hook fnc
        def hook_fnc(packet: Packet, _sock: SecureReliableSocket):
            assert packet.data == b"broadcasting now"

        sock1.broadcast_hook_fnc = hook_fnc
        sock2.broadcast(b"broadcasting now")

        # close
        sock1.close()
        sock2.close()
Esempio n. 5
0
    def test_ipv6(self):
        logger.info("start test_ipv6()")
        if IS_TRAVIS:
            return unittest.skip("ipv6 isn't supported")

        sock1 = SecureReliableSocket(s.AF_INET6)
        sock2 = SecureReliableSocket(s.AF_INET6)
        sock1.settimeout(5.0)
        sock2.settimeout(5.0)

        # connect
        fut1 = self.executor.submit(sock1.connect, ("::1", self.port1),
                                    self.port2)
        sleep(1.0)
        fut2 = self.executor.submit(sock2.connect, ("::1", self.port2),
                                    self.port1)

        fut1.result(10.0)
        fut2.result(10.0)

        assert sock1.established and sock2.established, (sock1, sock2)

        # close
        sock1.close()
        sock2.close()
Esempio n. 6
0
    def test_ipv6(self):
        logger.info("start test_ipv6()")
        # https://docs.travis-ci.com/user/reference/overview/#virtualisation-environment-vs-operating-system
        if IS_TRAVIS:
            return unittest.skip("ipv6 isn't supported")

        sock1 = SecureReliableSocket(s.AF_INET6)
        sock2 = SecureReliableSocket(s.AF_INET6)
        sock1.settimeout(5.0)
        sock2.settimeout(5.0)

        # connect
        fut1 = self.executor.submit(sock1.connect, ("::1", self.port))
        sleep(1.0)
        fut2 = self.executor.submit(sock2.connect, ("::1", self.port))

        fut1.result(10.0)
        fut2.result(10.0)

        assert sock1.established and sock2.established, (sock1, sock2)

        # close
        sock1.close()
        sock2.close()
Esempio n. 7
0
from srudp import SecureReliableSocket
from time import time
import sys

sock = SecureReliableSocket()
sock.connect((sys.argv[1], int(sys.argv[2])))

while not sock.is_closed:
    data = sock.recv(1024)
    if not data:
        break
    print(time(), data)
print("closed", sock)