Skip to content

Commit 9d01191

Browse files
author
TAKANO Mitsuhiro
committed
rewrite test as an example w/ simplify
see also msgpack-rpc/msgpack-rpc#45 test from msgpack-rpc msgpack-rpc/msgpack-rpc@9b0fe02
1 parent 81a0e91 commit 9d01191

2 files changed

Lines changed: 42 additions & 40 deletions

File tree

example/echoserver.py

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,26 @@
22
# coding: utf-8
33

44
"""Echo service.
5-
This server doesn't use msgpackrpc.server.
5+
This server using msgpackrpc.Server.
66
"""
77

8-
import SocketServer
9-
from msgpack import packs, Unpacker
8+
import msgpackrpc
109

11-
class EchoHandler(SocketServer.BaseRequestHandler):
10+
class EchoHandler(object):
1211

13-
def handle(self):
14-
unpacker = Unpacker()
15-
16-
while 1:
17-
data = self.request.recv(4096)
18-
if len(data) == 0:
19-
break
20-
unpacker.feed(data)
21-
for msg in unpacker:
22-
print msg
23-
assert len(msg) == 4
24-
assert msg[0] == 0
25-
assert msg[2] == "echo"
26-
sdata = packs((1, msg[1], None, msg[-1]))
27-
self.request.sendall(sdata)
12+
def echo(self, msg):
13+
return msg
2814

2915
def serve_background(server, daemon=False):
16+
def _start_server(server):
17+
server.start()
18+
server.close()
19+
3020
import threading
31-
t = threading.Thread(target=server.serve_forever)
21+
t = threading.Thread(target=_start_server, args = (server,))
3222
t.setDaemon(daemon)
3323
t.start()
24+
return t
3425

3526
def serve(daemon=False):
3627
"""Serve echo server in background on localhost.
@@ -40,12 +31,17 @@ def serve(daemon=False):
4031
"""
4132
for port in xrange(9000, 10000):
4233
try:
43-
server = SocketServer.TCPServer(('localhost', port), EchoHandler)
44-
serve_background(server, daemon)
45-
return server, port
46-
except Exception:
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
4742
pass
4843

4944
if __name__ == '__main__':
5045
port = serve(False)
5146
print "Serving on localhost:%d\n" % port[1]
47+

example/test_client.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,40 @@
11
#!/usr/bin/env python
22
# coding: utf-8
33

4-
from msgpackrpc.client import *
5-
from msgpackrpc.transport import tcp
6-
4+
import msgpackrpc
75
import echoserver
86

9-
SERVER = PORT = None
7+
ADDR = SERVER = THREAD = None
8+
109

1110
def setup():
12-
global SERVER, PORT
13-
SERVER, PORT = echoserver.serve()
11+
global ADDR, SERVER, THREAD
12+
(ADDR, SERVER, THREAD) = echoserver.serve()
13+
1414

1515
def teardown():
16-
global SERVER, PORT
17-
SERVER.shutdown()
18-
SERVER = PORT = None
16+
global SERVER, THREAD
17+
SERVER.stop()
18+
THREAD.join()
19+
1920

2021
def test_client():
21-
client = Client(tcp.TCPTransport, ('localhost', PORT), {})
22+
global ADDR
23+
client = msgpackrpc.Client(ADDR, unpack_encoding = 'utf-8')
2224

23-
f1 = client.send_request('echo', 'foo')
24-
f2 = client.send_request('echo', 'bar')
25-
f3 = client.send_request('echo', 'baz')
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"
2634

27-
assert f2.result() == 'bar'
28-
assert f1.result() == 'foo'
29-
assert f3.result() == 'baz'
3035

3136
if __name__ == '__main__':
3237
setup()
3338
test_client()
3439
teardown()
40+

0 commit comments

Comments
 (0)