1
0
mirror of https://github.com/haiwen/libsearpc.git synced 2025-06-22 11:47:04 +00:00
libsearpc/pysearpc/test_pysearpc.py

70 lines
1.6 KiB
Python
Raw Normal View History

2018-08-04 06:12:50 +00:00
#!/usr/bin/env python
#coding: UTF-8
2011-04-08 12:58:15 +00:00
2018-08-04 06:12:50 +00:00
import json
2018-08-04 06:37:07 +00:00
import os
2011-04-08 12:58:15 +00:00
import sys
2018-08-04 06:12:50 +00:00
import unittest
2018-08-04 06:37:07 +00:00
from operator import add, mul
2018-08-04 06:12:50 +00:00
2018-08-04 06:37:07 +00:00
os.chdir(os.path.dirname(os.path.abspath(__file__)))
2018-08-04 06:12:50 +00:00
sys.path.insert(0, '..')
from pysearpc import (
2018-08-04 06:37:07 +00:00
SearpcClient, SearpcError, SearpcTransport, searpc_func, searpc_server, NamedPipeTransport
2018-08-04 06:12:50 +00:00
)
SVCNAME = 'test-service'
def init_server():
searpc_server.create_service(SVCNAME)
searpc_server.register_function(SVCNAME, add, 'add')
2018-08-04 06:37:07 +00:00
searpc_server.register_function(SVCNAME, mul, 'multi')
2018-08-04 06:12:50 +00:00
class DummyTransport(SearpcTransport):
def send(self, fcall_str):
return searpc_server.call_function(SVCNAME, fcall_str)
2011-04-08 12:58:15 +00:00
class SampleRpcClient(SearpcClient):
2018-08-04 06:12:50 +00:00
def __init__(self):
self.transport = DummyTransport()
2011-04-08 12:58:15 +00:00
def call_remote_func_sync(self, fcall_str):
2018-08-04 06:12:50 +00:00
return self.transport.send(fcall_str)
2011-04-08 12:58:15 +00:00
2018-08-04 06:12:50 +00:00
@searpc_func("int", ["int", "int"])
def add(self, x, y):
2011-04-08 12:58:15 +00:00
pass
2018-08-04 06:37:07 +00:00
@searpc_func("string", ["string", "int"])
def multi(self, x, y):
pass
2018-08-04 06:12:50 +00:00
class SearpcTest(unittest.TestCase):
def setUp(self):
init_server()
self.client = SampleRpcClient()
2018-08-04 06:37:07 +00:00
def test_normal_transport(self):
self.run_common()
@unittest.skip('not implemented yet')
def test_pipe_transport(self):
self.client.transport = NamedPipeTransport('/tmp/libsearpc-test.sock')
self.run_common()
def run_common(self):
2018-08-04 06:12:50 +00:00
v = self.client.add(1, 2)
self.assertEqual(v, 3)
2018-08-04 06:37:07 +00:00
v = self.client.multi(1, 2)
self.assertEqual(v, 2)
v = self.client.multi('abc', 2)
self.assertEqual(v, 'abcabc')
2018-08-04 06:12:50 +00:00
if __name__ == '__main__':
unittest.main()