def setUp(self): self.fake_cmd = 'fake cmd' self.fake_resp = 'fake response' self.long_running_cmd = 'long running' self.user_key = USER_KEY self.listen_socket = make_socket('127.0.0.1') self.listen_port = self.listen_socket.getsockname()[1]
def test_ssh_proxy(self): """Test connecting to remote destination via SSH proxy client -> proxy -> destination Proxy SSH server accepts no commands and sends no responses, only proxies to destination. Destination accepts a command as usual.""" proxy_server_socket = make_socket('127.0.0.1') proxy_server_port = proxy_server_socket.getsockname()[1] proxy_server = start_server({}, proxy_server_socket) server = start_server({self.fake_cmd: self.fake_resp}, self.listen_socket) client = ParallelSSHClient(['127.0.0.1'], port=self.listen_port, pkey=self.user_key, proxy_host='127.0.0.1', proxy_port=proxy_server_port) output = client.run_command(self.fake_cmd) stdout = list(output['127.0.0.1']['stdout']) expected_stdout = [self.fake_resp] self.assertEqual(expected_stdout, stdout, msg="Got unexpected stdout - %s, expected %s" % ( stdout, expected_stdout, )) server.kill() proxy_server.kill()
def test_pssh_hosts_more_than_pool_size(self): """Test we can successfully run on more hosts than our pool size and get logs for all hosts""" # Make a second server on the same port as the first one server2_socket = make_socket('127.0.0.2', port=self.listen_port) server2_port = server2_socket.getsockname()[1] server1 = start_server({ self.fake_cmd : self.fake_resp }, self.listen_socket) server2 = start_server({ self.fake_cmd : self.fake_resp }, server2_socket) hosts = ['127.0.0.1', '127.0.0.2'] client = ParallelSSHClient(hosts, port=self.listen_port, pkey=self.user_key, pool_size=1, ) output = client.run_command(self.fake_cmd) stdout = [list(output[k]['stdout']) for k in output] expected_stdout = [[self.fake_resp], [self.fake_resp]] self.assertEqual(len(hosts), len(output), msg="Did not get output from all hosts. Got output for \ %s/%s hosts" % (len(output), len(hosts),)) self.assertEqual(expected_stdout, stdout, msg="Did not get expected output from all hosts. \ Got %s - expected %s" % (stdout, expected_stdout,)) del client server1.kill() server2.kill()
def test_pssh_hosts_more_than_pool_size(self): """Test we can successfully run on more hosts than our pool size and get logs for all hosts""" # Make a second server on the same port as the first one server2_socket = make_socket('127.0.0.2', port=self.listen_port) server2_port = server2_socket.getsockname()[1] server1 = start_server({self.fake_cmd: self.fake_resp}, self.listen_socket) server2 = start_server({self.fake_cmd: self.fake_resp}, server2_socket) hosts = ['127.0.0.1', '127.0.0.2'] client = ParallelSSHClient( hosts, port=self.listen_port, pkey=self.user_key, pool_size=1, ) output = client.run_command(self.fake_cmd) stdout = [list(output[k]['stdout']) for k in output] expected_stdout = [[self.fake_resp], [self.fake_resp]] self.assertEqual( len(hosts), len(output), msg="Did not get output from all hosts. Got output for \ %s/%s hosts" % ( len(output), len(hosts), )) self.assertEqual(expected_stdout, stdout, msg="Did not get expected output from all hosts. \ Got %s - expected %s" % ( stdout, expected_stdout, )) del client server1.kill() server2.kill()
def test_ssh_proxy(self): """Test connecting to remote destination via SSH proxy client -> proxy -> destination Proxy SSH server accepts no commands and sends no responses, only proxies to destination. Destination accepts a command as usual.""" proxy_server_socket = make_socket('127.0.0.1') proxy_server_port = proxy_server_socket.getsockname()[1] proxy_server = start_server({}, proxy_server_socket) server = start_server({ self.fake_cmd : self.fake_resp }, self.listen_socket) client = ParallelSSHClient(['127.0.0.1'], port=self.listen_port, pkey=self.user_key, proxy_host='127.0.0.1', proxy_port=proxy_server_port ) output = client.run_command(self.fake_cmd) stdout = list(output['127.0.0.1']['stdout']) expected_stdout = [self.fake_resp] self.assertEqual(expected_stdout, stdout, msg="Got unexpected stdout - %s, expected %s" % (stdout, expected_stdout,)) server.kill() proxy_server.kill()