Skip to content

Commit 4dd7fc9

Browse files
committed
Merge pull request #3 from takano32/master
rewrite test as an example
2 parents 440f93e + 9d01191 commit 4dd7fc9

2 files changed

Lines changed: 87 additions & 0 deletions

File tree

example/echoserver.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/usr/bin/env python
2+
# coding: utf-8
3+
4+
"""Echo service.
5+
This server using msgpackrpc.Server.
6+
"""
7+
8+
import msgpackrpc
9+
10+
class EchoHandler(object):
11+
12+
def echo(self, msg):
13+
return msg
14+
15+
def serve_background(server, daemon=False):
16+
def _start_server(server):
17+
server.start()
18+
server.close()
19+
20+
import threading
21+
t = threading.Thread(target=_start_server, args = (server,))
22+
t.setDaemon(daemon)
23+
t.start()
24+
return t
25+
26+
def serve(daemon=False):
27+
"""Serve echo server in background on localhost.
28+
This returns (server, port). port is number in integer.
29+
30+
To stop, use ``server.shutdown()``
31+
"""
32+
for port in xrange(9000, 10000):
33+
try:
34+
addr = msgpackrpc.Address('localhost', port)
35+
server = msgpackrpc.Server(EchoHandler())
36+
print server
37+
server.listen(addr)
38+
thread = serve_background(server, daemon)
39+
return (addr, server, thread)
40+
except Exception as err:
41+
print err
42+
pass
43+
44+
if __name__ == '__main__':
45+
port = serve(False)
46+
print "Serving on localhost:%d\n" % port[1]
47+

example/test_client.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env python
2+
# coding: utf-8
3+
4+
import msgpackrpc
5+
import echoserver
6+
7+
ADDR = SERVER = THREAD = None
8+
9+
10+
def setup():
11+
global ADDR, SERVER, THREAD
12+
(ADDR, SERVER, THREAD) = echoserver.serve()
13+
14+
15+
def teardown():
16+
global SERVER, THREAD
17+
SERVER.stop()
18+
THREAD.join()
19+
20+
21+
def test_client():
22+
global ADDR
23+
client = msgpackrpc.Client(ADDR, unpack_encoding = 'utf-8')
24+
25+
f1 = client.call('echo', 'foo')
26+
f2 = client.call('echo', 'bar')
27+
f3 = client.call('echo', 'baz')
28+
29+
assert f2 == 'bar'
30+
assert f1 == 'foo'
31+
assert f3 == 'baz'
32+
33+
print "EchoHandler#echo via msgpackrpc"
34+
35+
36+
if __name__ == '__main__':
37+
setup()
38+
test_client()
39+
teardown()
40+

0 commit comments

Comments
 (0)