Add python-eventlet 0.16.1
[packages/trusty/python-eventlet.git] / eventlet / tests / backdoor_test.py
1 import eventlet
2 from eventlet import backdoor
3 from eventlet.green import socket
4
5 from tests import LimitedTestCase, main
6
7
8 class BackdoorTest(LimitedTestCase):
9     def test_server(self):
10         listener = socket.socket()
11         listener.bind(('localhost', 0))
12         listener.listen(50)
13         serv = eventlet.spawn(backdoor.backdoor_server, listener)
14         client = socket.socket()
15         client.connect(('localhost', listener.getsockname()[1]))
16         f = client.makefile('rw')
17         assert 'Python' in f.readline()
18         f.readline()  # build info
19         f.readline()  # help info
20         assert 'InteractiveConsole' in f.readline()
21         self.assertEqual('>>> ', f.read(4))
22         f.write('print("hi")\n')
23         f.flush()
24         self.assertEqual('hi\n', f.readline())
25         self.assertEqual('>>> ', f.read(4))
26         f.close()
27         client.close()
28         serv.kill()
29         # wait for the console to discover that it's dead
30         eventlet.sleep(0.1)
31
32
33 if __name__ == '__main__':
34     main()