def test_tunnel_retries(self): local_port = 3050 fw_host, fw_port = '127.0.0.1', 2100 t = Tunnel(self.proxy_host, deque(), deque(), port=self.port, pkey=self.user_key, num_retries=2) t._init_tunnel_client() try: t._open_channel_retries(fw_host, fw_port, local_port) except (ChannelFailure, SocketSendError) as ex: pass else: raise AssertionError(ex)
def test_tunnel_channel_eof(self): remote_host = '127.0.0.59' server = OpenSSHServer(listen_ip=remote_host, port=self.port) server.start_server() in_q, out_q = deque(), deque() try: tunnel = Tunnel(self.proxy_host, in_q, out_q, port=self.port, pkey=self.user_key, num_retries=1) tunnel._init_tunnel_client() channel = tunnel._open_channel_retries(self.proxy_host, self.port, 2150) self.assertFalse(channel.eof()) channel.close() listen_socket, listen_port = tunnel._init_tunnel_sock() client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(('127.0.0.1', listen_port)) client = spawn(self._connect_client, client_socket) tunnel._read_channel(client_socket, channel) tunnel._read_forward_sock(client_socket, channel) self.assertTrue(channel.eof()) client.kill() finally: server.stop()
def test_tunnel_sock_failure(self): remote_host = '127.0.0.59' server = OpenSSHServer(listen_ip=remote_host, port=self.port) server.start_server() in_q, out_q = deque(), deque() try: tunnel = Tunnel(self.proxy_host, in_q, out_q, port=self.port, pkey=self.user_key, num_retries=1) tunnel._init_tunnel_client() channel = tunnel._open_channel_retries(self.proxy_host, self.port, 2150) self.assertFalse(channel.eof()) listen_socket, listen_port = tunnel._init_tunnel_sock() client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(('127.0.0.1', listen_port)) client_socket.send(b'blah\n') client_socket.close() gl1 = spawn(tunnel._read_channel, client_socket, channel) gl2 = spawn(tunnel._read_forward_sock, client_socket, channel) sleep(1) gl1.kill() gl2.kill() tunnel._sockets.append(None) tunnel.cleanup() finally: server.stop()