2121
2222import unittest
2323from pssh import ParallelSSHClient , UnknownHostException , \
24- AuthenticationException , ConnectionErrorException
24+ AuthenticationException , ConnectionErrorException , logger as pssh_logger
2525from fake_server .fake_server import start_server , make_socket , \
2626 logger as server_logger , paramiko_logger
2727import random
3535USER_KEY = paramiko .RSAKey .from_private_key_file (
3636 os .path .sep .join ([os .path .dirname (__file__ ), 'test_client_private_key' ]))
3737
38+ # server_logger.setLevel(logging.DEBUG)
39+ # pssh_logger.setLevel(logging.DEBUG)
40+ # logging.basicConfig()
41+
3842class ParallelSSHClientTest (unittest .TestCase ):
3943
4044 def setUp (self ):
@@ -67,7 +71,7 @@ def test_pssh_client_exec_command(self):
6771 output = client .get_stdout (cmd )
6872 expected = {'127.0.0.1' : {'exit_code' : 0 }}
6973 self .assertEqual (expected , output ,
70- msg = "Got unexpected command output - %s" % (output ,))
74+ msg = "Got unexpected command output - %s" % (output ,))
7175 del client
7276 server .join ()
7377
@@ -85,15 +89,15 @@ def test_pssh_client_exec_command_get_buffers(self):
8589 stdout = list (output ['127.0.0.1' ]['stdout' ])
8690 stderr = list (output ['127.0.0.1' ]['stderr' ])
8791 self .assertEqual (expected_exit_code , exit_code ,
88- msg = "Got unexpected exit code - %s, expected %s" %
92+ msg = "Got unexpected exit code - %s, expected %s" %
8993 (exit_code ,
9094 expected_exit_code ,))
9195 self .assertEqual (expected_stdout , stdout ,
92- msg = "Got unexpected stdout - %s, expected %s" %
96+ msg = "Got unexpected stdout - %s, expected %s" %
9397 (stdout ,
9498 expected_stdout ,))
9599 self .assertEqual (expected_stderr , stderr ,
96- msg = "Got unexpected stderr - %s, expected %s" %
100+ msg = "Got unexpected stderr - %s, expected %s" %
97101 (stderr ,
98102 expected_stderr ,))
99103 del client
@@ -112,15 +116,15 @@ def test_pssh_client_run_command_get_output(self):
112116 stdout = list (output ['127.0.0.1' ]['stdout' ])
113117 stderr = list (output ['127.0.0.1' ]['stderr' ])
114118 self .assertEqual (expected_exit_code , exit_code ,
115- msg = "Got unexpected exit code - %s, expected %s" %
119+ msg = "Got unexpected exit code - %s, expected %s" %
116120 (exit_code ,
117121 expected_exit_code ,))
118122 self .assertEqual (expected_stdout , stdout ,
119- msg = "Got unexpected stdout - %s, expected %s" %
123+ msg = "Got unexpected stdout - %s, expected %s" %
120124 (stdout ,
121125 expected_stdout ,))
122126 self .assertEqual (expected_stderr , stderr ,
123- msg = "Got unexpected stderr - %s, expected %s" %
127+ msg = "Got unexpected stderr - %s, expected %s" %
124128 (stderr ,
125129 expected_stderr ,))
126130 del client
@@ -141,15 +145,15 @@ def test_pssh_client_run_command_get_output_explicit(self):
141145 stdout = list (output ['127.0.0.1' ]['stdout' ])
142146 stderr = list (output ['127.0.0.1' ]['stderr' ])
143147 self .assertEqual (expected_exit_code , exit_code ,
144- msg = "Got unexpected exit code - %s, expected %s" %
148+ msg = "Got unexpected exit code - %s, expected %s" %
145149 (exit_code ,
146150 expected_exit_code ,))
147151 self .assertEqual (expected_stdout , stdout ,
148- msg = "Got unexpected stdout - %s, expected %s" %
152+ msg = "Got unexpected stdout - %s, expected %s" %
149153 (stdout ,
150154 expected_stdout ,))
151155 self .assertEqual (expected_stderr , stderr ,
152- msg = "Got unexpected stderr - %s, expected %s" %
156+ msg = "Got unexpected stderr - %s, expected %s" %
153157 (stderr ,
154158 expected_stderr ,))
155159 del client
@@ -298,3 +302,28 @@ def test_pssh_pool_size(self):
298302 self .assertEqual (expected , actual ,
299303 msg = "Expected pool size to be %s, got %s" % (
300304 expected , actual ,))
305+
306+ def test_ssh_proxy (self ):
307+ """Test connecting to remote destination via SSH proxy
308+ client -> proxy -> destination
309+ Proxy SSH server accepts no commands and sends no responses, only
310+ proxies to destination. Destination accepts a command as usual."""
311+ proxy_server_socket = make_socket ('127.0.0.1' )
312+ proxy_server_port = proxy_server_socket .getsockname ()[1 ]
313+ proxy_server = start_server ({}, proxy_server_socket )
314+ server = start_server ({ self .fake_cmd : self .fake_resp },
315+ self .listen_socket )
316+ client = ParallelSSHClient (['127.0.0.1' ], port = self .listen_port ,
317+ pkey = self .user_key ,
318+ proxy_host = '127.0.0.1' ,
319+ proxy_port = proxy_server_port
320+ )
321+ output = client .run_command (self .fake_cmd )
322+ stdout = list (output ['127.0.0.1' ]['stdout' ])
323+ expected_stdout = [self .fake_resp ]
324+ self .assertEqual (expected_stdout , stdout ,
325+ msg = "Got unexpected stdout - %s, expected %s" %
326+ (stdout ,
327+ expected_stdout ,))
328+ server .kill ()
329+ proxy_server .kill ()
0 commit comments