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()
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()
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()
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()
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(
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)