示例#1
0
    def test_blocking_ssl_timeout_raise(self):
        """tests less=True mechanism for channels in sockets"""
        sck = socket(AF_INET, SOCK_STREAM)
        sck.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
        with get_dummy_cert() as dncert:
            sck.bind(('127.0.0.1', TESTING_PORT))
            sck.listen(10)
            sck = ssl.wrap_socket(sck, certfile=dncert)
            sck = SSLServerSocket(sck)

            class ClientSocketThread(Thread):
                def __init__(self, utc):
                    Thread.__init__(self)
                    self.utc = utc

                def run(self):
                    """@param utc: unit test class"""
                    sleep(0.1)
                    sck = socket(AF_INET, SOCK_STREAM)
                    sck = ssl.wrap_socket(sck)
                    sck.connect(('127.0.0.1', TESTING_PORT))
                    sck = SSLSocket(sck)
                    sck.settimeout(3)
                    self.utc.assertRaises(DataNotAvailable, sck.read, 1)                    
                    sck.close()

            cs = ClientSocketThread(self)
            cs.start()

            csk = sck.read()        
            cs.join()
            csk.close()
            sck.close()
示例#2
0
    def test_blocking_server(self):
        """tests L{ServerSocket} and a client L{Socket} in a multithreaded model"""
        sck = socket(AF_INET, SOCK_STREAM)
        sck.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
        with get_dummy_cert() as dncert:
            sck.bind(('127.0.0.1', TESTING_PORT))
            sck.listen(10)
            sck = ssl.wrap_socket(sck, certfile=dncert)
            sck = SSLServerSocket(sck)

            class ClientSocketThread(Thread):
                def __init__(self, utc):
                    Thread.__init__(self)
                    self.utc = utc

                def run(self):
                    """@param utc: unit test class"""
                    sleep(0.1)
                    sck = socket(AF_INET, SOCK_STREAM)
                    sck = ssl.wrap_socket(sck)
                    sck.connect(('127.0.0.1', TESTING_PORT))
                    sck = SSLSocket(sck)
                    sck.write('Hello World')
                    self.pkdata = sck.read(3, less=False, peek=True)
                    self.data = sck.read(1)
                    self.data2 = sck.read(2)
                    self.utc.assertRaises(ChannelClosed, sck.read, 1)
                    sck.close()

            cs = ClientSocketThread(self)
            cs.start()

            csk = sck.read()
            self.assertEquals(csk.read(5), 'Hello')
            self.assertEquals(csk.read(6), ' World')
            csk.write('Yes')
            csk.close()
            cs.join()
            self.assertEquals(cs.pkdata, 'Yes')
            self.assertEquals(cs.data, 'Y')
            self.assertEquals(cs.data2, 'es')
            sck.close()
示例#3
0
    def test_blocking_server_client_with_less(self):
        """tests less=True mechanism for channels in sockets"""
        sck = socket(AF_INET, SOCK_STREAM)
        sck.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
        with get_dummy_cert() as dncert:
            sck.bind(('127.0.0.1', TESTING_PORT))
            sck.listen(10)
            sck = ssl.wrap_socket(sck, certfile=dncert)
            sck = SSLServerSocket(sck)

            class ClientSocketThread(Thread):
                def __init__(self, utc):
                    Thread.__init__(self)
                    self.utc = utc

                def run(self):
                    """@param utc: unit test class"""
                    sleep(0.1)
                    sck = socket(AF_INET, SOCK_STREAM)
                    sck = ssl.wrap_socket(sck)
                    sck.connect(('127.0.0.1', TESTING_PORT))
                    sck = SSLSocket(sck)
                    pkdata = sck.read(100, less=True, peek=True)
                    data = sck.read(100, less=True)
                    self.utc.assertEquals(pkdata, 'Long string? Not enough.')
                    self.utc.assertEquals(data, 'Long string? Not enough.')
                    self.utc.assertRaises(ChannelClosed, sck.read, 1)
                    sck.close()

            cs = ClientSocketThread(self)
            cs.start()

            csk = sck.read()        
            csk.write('Long string? Not enough.')
            csk.close()
            cs.join()
            sck.close()
示例#4
0
    def setUp(self):
        """Starts the server"""
        self.dummycert_context = get_dummy_cert()
        dncert = self.dummycert_context.__enter__()
        # setup server channel
        servsock = socket(AF_INET, SOCK_STREAM)
        servsock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
        servsock.bind(('127.0.0.1', TESTING_PORT))
        servsock.listen(10)
        servsock = ssl.wrap_socket(servsock, certfile=dncert)
        servsock = SSLServerSocket(servsock)
        self.servsock = servsock

        jsonsocket.TIME_OUT_SECONDS = 120  # restore sane defaults
        # our test cases monkeypatch it, so there is a need
        # to restore it

        self.events_received, self.events_sent = Queue(), Queue()

        do_nothing_namespace_manager = CounterCollection('test')

        phl = PlayersHandlingLayer(servsock, self.events_received,
                                   self.events_sent, PDBHelperStandin(),
                                   do_nothing_namespace_manager)

        class PHLingThread(BaseThread):
            def __init__(self, phl):
                BaseThread.__init__(self)
                self.phl = phl

            def run(self):
                while not self._terminating:
                    self.phl.select()

        self.phlt = PHLingThread(phl)
        self.phlt.start()
示例#5
0
文件: run.py 项目: Iwan91/Ninja-Tower
                                       config["sqldb_password"],
                                       config["sqldb_dbname"],
                                       nsm,
                                       dbtype='mysql')

    # -------------------------------------------- Socket interfacing part!

    # Read and initialize socket server interface
    server_socket = socket(AF_INET, SOCK_STREAM)
    server_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    server_socket.bind((config['inbound_listening_interface'],
                        config['inbound_listening_port']))
    server_socket.listen(10)
    server_socket = wrap_socket(server_socket, config['inbound_keyfile'],
                                config['inbound_certfile'], True)
    server_socket = SSLServerSocket(server_socket)

    # ===================================================== SelectLayer
    # ------------ comms from and to EventProcessor
    SLtoEP, EPtoSL = Queue(), Queue()

    # Set up player handling layer
    players_handling_layer = PlayersHandlingLayer(
        server_socket, SLtoEP, EPtoSL,
        database_manager.query_interface(SelectLayerPDBHelper), nsm)

    # ===================================================== In-lobby stuff management
    qmgr = QueueManager(config['queues'], nsm)

    # ===================================================== PlayerDB
    player_database = PlayerDatabase(
示例#6
0
文件: run.py 项目: Iwan91/Ninja-Tower
                                       config["sqldb_dbname"],
                                       nsm,
                                       dbtype='mysql')

    # -------------------------------------------- Socket interfacing part!

    # Read and initialize socket server interface
    server_socket = socket(AF_INET, SOCK_STREAM)
    server_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    server_socket.bind((config['inbound_listening_interface'], config['inbound_listening_port']))
    server_socket.listen(10)
    server_socket = wrap_socket(server_socket, 
                                config['inbound_keyfile'],
                                config['inbound_certfile'],
                                True)
    server_socket = SSLServerSocket(server_socket)


    # ===================================================== SelectLayer
    # ------------ comms from and to EventProcessor
    SLtoEP, EPtoSL = Queue(), Queue()

    # Set up player handling layer
    players_handling_layer = PlayersHandlingLayer(server_socket, 
                                                  SLtoEP, 
                                                  EPtoSL, 
                                                  database_manager.query_interface(SelectLayerPDBHelper),
                                                  nsm)

    # ===================================================== In-lobby stuff management
    qmgr = QueueManager(config['queues'], nsm)