Skip to content

Commit f16f720

Browse files
committed
Migrate fake server into greenlet
1 parent ce8991c commit f16f720

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

fake_server/fake_server.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from gevent import monkey
1414
monkey.patch_all()
1515
import os
16-
import socket
16+
from gevent import socket
1717
from gevent.event import Event
1818
import sys
1919
import traceback
@@ -89,17 +89,19 @@ def listen(cmd_req_response, sock, fail_auth = False):
8989
try:
9090
sock.listen(100)
9191
logger.info('Listening for connection on %s:%s..', listen_ip, listen_port)
92+
client, addr = sock.accept()
9293
except Exception, e:
9394
logger.error('*** Listen failed: %s' % (str(e),))
9495
traceback.print_exc()
9596
return
96-
accept_thread = gevent.spawn(handle_ssh_connection,
97-
cmd_req_response, sock,
98-
fail_auth=fail_auth)
97+
# accept_thread = gevent.spawn(handle_ssh_connection,
98+
# cmd_req_response, client, addr,
99+
# fail_auth=fail_auth)
100+
handle_ssh_connection(cmd_req_response, client, addr, fail_auth=fail_auth)
99101
# accept_thread.start()
100-
return accept_thread
102+
# return accept_thread
101103

102-
def _handle_ssh_connection(cmd_req_response, t, client, addr, fail_auth = False):
104+
def _handle_ssh_connection(cmd_req_response, t, fail_auth = False):
103105
try:
104106
t.load_server_moduli()
105107
except:
@@ -129,12 +131,12 @@ def _accept_ssh_data(t, server):
129131
time.sleep(.5)
130132
chan.close()
131133

132-
def handle_ssh_connection(cmd_req_response, sock, fail_auth = False):
133-
client, addr = sock.accept()
134+
def handle_ssh_connection(cmd_req_response, client, addr, fail_auth = False):
135+
# client, addr = sock.accept()
134136
logger.info('Got connection..')
135137
try:
136138
t = paramiko.Transport(client)
137-
_handle_ssh_connection(cmd_req_response, t, client, addr, fail_auth=fail_auth)
139+
_handle_ssh_connection(cmd_req_response, t, fail_auth=fail_auth)
138140
except Exception, e:
139141
logger.error('*** Caught exception: %s: %s' % (str(e.__class__), str(e),))
140142
traceback.print_exc()
@@ -144,11 +146,14 @@ def handle_ssh_connection(cmd_req_response, sock, fail_auth = False):
144146
pass
145147
return
146148

149+
def start_server(cmd_req_response, sock, fail_auth=False):
150+
return gevent.spawn(listen, cmd_req_response, sock, fail_auth=fail_auth)
151+
147152
if __name__ == "__main__":
148153
logging.basicConfig()
149154
logger.setLevel(logging.DEBUG)
150155
sock = make_socket('127.0.0.1')
151-
server = listen({'fake' : 'fake response' + os.linesep}, sock)
156+
server = start_server({'fake' : 'fake response' + os.linesep}, sock)
152157
try:
153158
server.get()
154159
except KeyboardInterrupt:

tests/test_pssh_client.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import unittest
66
from pssh import ParallelSSHClient, UnknownHostException, \
77
AuthenticationException, ConnectionErrorException, _setup_logger
8-
from fake_server.fake_server import listen, make_socket, logger as server_logger
8+
from fake_server.fake_server import start_server, make_socket, logger as server_logger
99
import random
1010
import logging
1111
import gevent
@@ -25,7 +25,7 @@ def cleanUp(self):
2525
del self.listener
2626

2727
def test_pssh_client_exec_command(self):
28-
server = listen({ self.fake_cmd : self.fake_resp }, self.listener)
28+
server = start_server({ self.fake_cmd : self.fake_resp }, self.listener)
2929
gevent.sleep(5)
3030
client = ParallelSSHClient(['localhost'], port=self.listen_port)
3131
cmd = client.exec_command(self.fake_cmd)[0]
@@ -37,8 +37,8 @@ def test_pssh_client_exec_command(self):
3737
server.join()
3838

3939
def test_pssh_client_auth_failure(self):
40-
server = listen({ self.fake_cmd : self.fake_resp },
41-
self.listener, fail_auth=True)
40+
server = start_server({ self.fake_cmd : self.fake_resp },
41+
self.listener, fail_auth=True)
4242
gevent.sleep(5)
4343
client = ParallelSSHClient(['localhost'], port=self.listen_port)
4444
cmd = client.exec_command(self.fake_cmd)[0]

0 commit comments

Comments
 (0)