Esempio n. 1
0
 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]
Esempio n. 2
0
 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()
Esempio n. 3
0
 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]
Esempio n. 4
0
    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()
Esempio n. 5
0
    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()
Esempio n. 6
0
 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()