You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from gevent.socket import create_connection, timeout
|
|
import gevent.testing as greentest
|
|
import gevent
|
|
|
|
from gevent.testing import util
|
|
from gevent.testing import params
|
|
|
|
class Test(util.TestServer):
|
|
example = 'echoserver.py'
|
|
|
|
def _run_all_tests(self):
|
|
def test_client(message):
|
|
if greentest.PY3:
|
|
kwargs = {'buffering': 1}
|
|
else:
|
|
kwargs = {'bufsize': 1}
|
|
kwargs['mode'] = 'rb'
|
|
conn = create_connection((params.DEFAULT_LOCAL_HOST_ADDR, 16000))
|
|
conn.settimeout(greentest.DEFAULT_XPC_SOCKET_TIMEOUT)
|
|
rfile = conn.makefile(**kwargs)
|
|
|
|
welcome = rfile.readline()
|
|
self.assertIn(b'Welcome', welcome)
|
|
|
|
conn.sendall(message)
|
|
received = rfile.read(len(message))
|
|
self.assertEqual(received, message)
|
|
|
|
self.assertRaises(timeout, conn.recv, 1)
|
|
|
|
rfile.close()
|
|
conn.close()
|
|
|
|
client1 = gevent.spawn(test_client, b'hello\r\n')
|
|
client2 = gevent.spawn(test_client, b'world\r\n')
|
|
gevent.joinall([client1, client2], raise_error=True)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
greentest.main()
|