def test_sock_reuse(self): connection1 = Connection(('127.0.0.1', self.get_http_port())) yield From(connection1.connect()) connection2 = Connection( ('127.0.0.1', self.get_http_port()), sock=connection1.writer.get_extra_info('socket')) yield From(connection2.connect()) yield From(connection2.write(b'GET / HTTP/1.1\r\n\r\n')) data = yield From(connection2.readline()) self.assertEqual(b'HTTP', data[:4])
def test_sock_reuse(self): connection1 = Connection(('127.0.0.1', self.get_http_port())) yield From(connection1.connect()) connection2 = Connection( ('127.0.0.1', self.get_http_port()), sock=connection1.writer.get_extra_info('socket') ) yield From(connection2.connect()) yield From(connection2.write(b'GET / HTTP/1.1\r\n\r\n')) data = yield From(connection2.readline()) self.assertEqual(b'HTTP', data[:4])
def test_read_timeout(self): connection = Connection(('127.0.0.1', self.get_http_port()), timeout=0.5) yield From(connection.connect()) yield From(connection.write(b'GET /sleep_long HTTP/1.1\r\n', drain=False)) yield From(connection.write(b'\r\n', drain=False)) data = yield From(connection.readline()) self.assertEqual(b'HTTP', data[:4]) while True: data = yield From(connection.readline()) if not data.strip(): break with self.assertRaises(NetworkTimedOut): bytes_left = 2 while bytes_left > 0: data = yield From(connection.read(bytes_left)) if not data: break bytes_left -= len(data)
def test_read_timeout(self): connection = Connection(('127.0.0.1', self.get_http_port()), timeout=0.5) yield From(connection.connect()) yield From( connection.write(b'GET /sleep_long HTTP/1.1\r\n', drain=False)) yield From(connection.write(b'\r\n', drain=False)) data = yield From(connection.readline()) self.assertEqual(b'HTTP', data[:4]) while True: data = yield From(connection.readline()) if not data.strip(): break with self.assertRaises(NetworkTimedOut): bytes_left = 2 while bytes_left > 0: data = yield From(connection.read(bytes_left)) if not data: break bytes_left -= len(data)
def test_control_stream(self): def log_cb(data_type, data): _logger.debug(__('{0}={1}', data_type, data)) connection = Connection(('127.0.0.1', self.server_port())) yield From(connection.connect()) control_stream = ControlStream(connection) control_stream.data_observer.add(log_cb) reply = yield From(control_stream.read_reply()) self.assertEqual(220, reply.code) yield From(control_stream.write_command(Command('USER', 'smaug'))) reply = yield From(control_stream.read_reply()) self.assertEqual(331, reply.code) yield From(control_stream.write_command(Command('PASS', 'gold1'))) reply = yield From(control_stream.read_reply()) self.assertEqual(230, reply.code) yield From(control_stream.write_command(Command('PASV'))) reply = yield From(control_stream.read_reply()) self.assertEqual(227, reply.code) address = parse_address(reply.text) data_connection = Connection(address) yield From(data_connection.connect()) data_stream = DataStream(data_connection) yield From( control_stream.write_command(Command('RETR', 'example (copy).txt'))) reply = yield From(control_stream.read_reply()) self.assertEqual(150, reply.code) my_file = io.BytesIO() yield From(data_stream.read_file(my_file)) reply = yield From(control_stream.read_reply()) self.assertEqual(226, reply.code) self.assertEqual('The real treasure is in Smaug’s heart 💗.\n', my_file.getvalue().decode('utf-8'))
def test_control_stream(self): def log_cb(data_type, data): _logger.debug(__('{0}={1}', data_type, data)) connection = Connection(('127.0.0.1', self.server_port())) yield From(connection.connect()) control_stream = ControlStream(connection) control_stream.data_observer.add(log_cb) reply = yield From(control_stream.read_reply()) self.assertEqual(220, reply.code) yield From(control_stream.write_command(Command('USER', 'smaug'))) reply = yield From(control_stream.read_reply()) self.assertEqual(331, reply.code) yield From(control_stream.write_command(Command('PASS', 'gold1'))) reply = yield From(control_stream.read_reply()) self.assertEqual(230, reply.code) yield From(control_stream.write_command(Command('PASV'))) reply = yield From(control_stream.read_reply()) self.assertEqual(227, reply.code) address = parse_address(reply.text) data_connection = Connection(address) yield From(data_connection.connect()) data_stream = DataStream(data_connection) yield From(control_stream.write_command(Command('RETR', 'example (copy).txt'))) reply = yield From(control_stream.read_reply()) self.assertEqual(150, reply.code) my_file = io.BytesIO() yield From(data_stream.read_file(my_file)) reply = yield From(control_stream.read_reply()) self.assertEqual(226, reply.code) self.assertEqual( 'The real treasure is in Smaug’s heart 💗.\n', my_file.getvalue().decode('utf-8') )
def test_connection(self): connection = Connection( ('127.0.0.1', self.get_http_port()), 'localhost') yield From(connection.connect()) yield From(connection.write(b'GET / HTTP/1.0\r\n\r\n')) data = yield From(connection.read()) self.assertEqual(b'hello world!', data[-12:]) self.assertTrue(connection.closed())
def test_connection(self): connection = Connection(('127.0.0.1', self.get_http_port()), 'localhost') yield From(connection.connect()) yield From(connection.write(b'GET / HTTP/1.0\r\n\r\n')) data = yield From(connection.read()) self.assertEqual(b'hello world!', data[-12:]) self.assertTrue(connection.closed())
def test_start_tls(self): connection = Connection(('127.0.0.1', self.get_http_port()), timeout=1) yield From(connection.connect()) ssl_connection = yield From(connection.start_tls()) yield From(ssl_connection.write(b'GET / HTTP/1.1\r\n\r\n')) data = yield From(ssl_connection.readline()) self.assertEqual(b'HTTP', data[:4])
def test_connect_timeout(self): connection = Connection(('10.0.0.0', 1), connect_timeout=2) with self.assertRaises(NetworkTimedOut): yield From(connection.connect())