def test_create_connection_sock(self): with test_utils.run_test_server(self.loop) as httpd: sock = None infos = self.loop.run_until_complete( self.loop.getaddrinfo( *httpd.address, type=socket.SOCK_STREAM)) for family, type, proto, cname, address in infos: try: sock = socket.socket(family=family, type=type, proto=proto) sock.setblocking(False) self.loop.run_until_complete( self.loop.sock_connect(sock, address)) except: pass else: break else: assert False, 'Can not create socket.' f = self.loop.create_connection( lambda: MyProto(loop=self.loop), sock=sock) tr, pr = self.loop.run_until_complete(f) self.assertTrue(isinstance(tr, transports.Transport)) self.assertTrue(isinstance(pr, protocols.Protocol)) self.loop.run_until_complete(pr.done) self.assertGreater(pr.nbytes, 0) tr.close()
def test_open_connection_no_loop_ssl(self): with test_utils.run_test_server(use_ssl=True) as httpd: conn_fut = asyncio.open_connection( *httpd.address, ssl=test_utils.dummy_ssl_context(), loop=self.loop) self._basetest_open_connection_no_loop_ssl(conn_fut)
def test_create_connection_local_addr_in_use(self): with test_utils.run_test_server(self.loop) as httpd: f = self.loop.create_connection( lambda: MyProto(loop=self.loop), *httpd.address, local_addr=httpd.address) with self.assertRaises(OSError) as cm: self.loop.run_until_complete(f) self.assertEqual(cm.exception.errno, errno.EADDRINUSE) self.assertIn(str(httpd.address), cm.exception.strerror)
def test_clean_and_join_metric_parts(metric_parts, expected_metric_name): with test_utils.run_test_server() as httpd: loop = asyncio.get_event_loop() plaintext_protocol = PlaintextProtocol() aiographite = AIOGraphite(*httpd.address, plaintext_protocol, loop=loop) metric_name = aiographite.clean_and_join_metric_parts(metric_parts) assert metric_name == expected_metric_name
def test_create_connection(self): with test_utils.run_test_server(self.loop) as httpd: f = self.loop.create_connection( lambda: MyProto(loop=self.loop), *httpd.address) tr, pr = self.loop.run_until_complete(f) self.assertTrue(isinstance(tr, transports.Transport)) self.assertTrue(isinstance(pr, protocols.Protocol)) self.loop.run_until_complete(pr.done) self.assertGreater(pr.nbytes, 0) tr.close()
def test_create_connection_local_addr(self): with test_utils.run_test_server(self.loop) as httpd: port = find_unused_port() f = self.loop.create_connection( lambda: MyProto(loop=self.loop), *httpd.address, local_addr=(httpd.address[0], port)) tr, pr = self.loop.run_until_complete(f) expected = pr.transport.get_extra_info('socket').getsockname()[1] self.assertEqual(port, expected) tr.close()
def test_open_connection_error(self): with test_utils.run_test_server() as httpd: f = asyncio.open_connection(*httpd.address, loop=self.loop) reader, writer = self.loop.run_until_complete(f) writer._protocol.connection_lost(ZeroDivisionError()) f = reader.read() with self.assertRaises(ZeroDivisionError): self.loop.run_until_complete(f) writer.close() test_utils.run_briefly(self.loop)
def test_open_connection_error(self): with test_utils.run_test_server() as httpd: f = streams.open_connection(*httpd.address, loop=self.loop) reader, writer = self.loop.run_until_complete(f) writer._protocol.connection_lost(ZeroDivisionError()) f = reader.read() with self.assertRaises(ZeroDivisionError): self.loop.run_until_complete(f) writer.close() test_utils.run_briefly(self.loop)
def test_open_connection(self): with test_utils.run_test_server() as httpd: f = asyncio.open_connection(*httpd.address, loop=self.loop) reader, writer = self.loop.run_until_complete(f) writer.write(b'GET / HTTP/1.0\r\n\r\n') f = reader.readline() data = self.loop.run_until_complete(f) self.assertEqual(data, b'HTTP/1.0 200 OK\r\n') f = reader.read() data = self.loop.run_until_complete(f) self.assertTrue(data.endswith(b'\r\n\r\nTest message')) writer.close()
def test_open_connection(self): with test_utils.run_test_server() as httpd: f = streams.open_connection(*httpd.address, loop=self.loop) reader, writer = self.loop.run_until_complete(f) writer.write(b'GET / HTTP/1.0\r\n\r\n') f = reader.readline() data = self.loop.run_until_complete(f) self.assertEqual(data, b'HTTP/1.0 200 OK\r\n') f = reader.read() data = self.loop.run_until_complete(f) self.assertTrue(data.endswith(b'\r\n\r\nTest message')) writer.close()
def test_create_ssl_connection(self): with test_utils.run_test_server( self.loop, use_ssl=True) as httpd: f = self.loop.create_connection( lambda: MyProto(loop=self.loop), *httpd.address, ssl=True) tr, pr = self.loop.run_until_complete(f) self.assertTrue(isinstance(tr, transports.Transport)) self.assertTrue(isinstance(pr, protocols.Protocol)) self.assertTrue('ssl' in tr.__class__.__name__.lower()) self.assertTrue( hasattr(tr.get_extra_info('socket'), 'getsockname')) self.loop.run_until_complete(pr.done) self.assertGreater(pr.nbytes, 0) tr.close()
def test_open_connection_no_loop_ssl(self): with test_utils.run_test_server(use_ssl=True) as httpd: try: asyncio.set_event_loop(self.loop) f = asyncio.open_connection(*httpd.address, ssl=test_utils.dummy_ssl_context()) reader, writer = self.loop.run_until_complete(f) finally: asyncio.set_event_loop(None) writer.write(b'GET / HTTP/1.0\r\n\r\n') f = reader.read() data = self.loop.run_until_complete(f) self.assertTrue(data.endswith(b'\r\n\r\nTest message')) writer.close()
def test_generate_message_for_metric_value_list(metric_value_tuple_list, timestamp): with test_utils.run_test_server() as httpd: loop = asyncio.get_event_loop() plaintext_protocol = PlaintextProtocol() aiographite = AIOGraphite(*httpd.address, plaintext_protocol, loop=loop) message = aiographite._generate_message_for_data_list( metric_value_tuple_list, timestamp, plaintext_protocol.generate_message) expected_message = ( b'zillow 124 1471640923\ntrulia 223 1471640923\n' b'hotpad 53534 1471640923\nstreeteasy 13424 1471640923\n') assert message == expected_message
def test_open_connection_no_loop_ssl(self): with test_utils.run_test_server(use_ssl=True) as httpd: try: events.set_event_loop(self.loop) f = streams.open_connection(*httpd.address, ssl=test_utils.dummy_ssl_context()) reader, writer = self.loop.run_until_complete(f) finally: events.set_event_loop(None) writer.write(b'GET / HTTP/1.0\r\n\r\n') f = reader.read() data = self.loop.run_until_complete(f) self.assertTrue(data.endswith(b'\r\n\r\nTest message')) writer.close()
def test_sock_client_ops(self): with test_utils.run_test_server(self.loop) as httpd: sock = socket.socket() sock.setblocking(False) self.loop.run_until_complete( self.loop.sock_connect(sock, httpd.address)) self.loop.run_until_complete( self.loop.sock_sendall(sock, b'GET / HTTP/1.0\r\n\r\n')) data = self.loop.run_until_complete( self.loop.sock_recv(sock, 1024)) # consume data self.loop.run_until_complete( self.loop.sock_recv(sock, 1024)) sock.close() self.assertTrue(re.match(rb'HTTP/1.0 200 OK', data), data)
def test_open_connection_error(self): with test_utils.run_test_server() as httpd: conn_fut = asyncio.open_connection(*httpd.address, loop=self.loop) self._basetest_open_connection_error(conn_fut)
def test_open_connection(self): with test_utils.run_test_server() as httpd: conn_fut = asyncio.open_connection(*httpd.address, loop=self.loop) self._basetest_open_connection(conn_fut)