Simplify server interface
This commit is contained in:
@@ -12,16 +12,22 @@ class Server:
|
||||
def __init__(self, val=1):
|
||||
self.val = val
|
||||
|
||||
def foo(self, context):
|
||||
context.results.x = str(context.params.i * 5 + self.val)
|
||||
def foo(self, i, j, **kwargs):
|
||||
extra = 0
|
||||
if j:
|
||||
extra = 1
|
||||
return str(i * 5 + extra + self.val)
|
||||
|
||||
def buz(self, i, **kwargs):
|
||||
return i.host + '_test'
|
||||
|
||||
class PipelineServer:
|
||||
def getCap(self, context):
|
||||
def getCap(self, n, inCap, _results, **kwargs):
|
||||
def _then(response):
|
||||
context.results.s = response.x + '_foo'
|
||||
context.results.outBox.cap = capability().TestInterface.new_server(Server(100))
|
||||
_results.s = response.x + '_foo'
|
||||
_results.outBox.cap = capability().TestInterface.new_server(Server(100))
|
||||
|
||||
return context.params.inCap.foo(i=context.params.n).then(_then)
|
||||
return inCap.foo(i=n).then(_then)
|
||||
|
||||
def test_client(capability):
|
||||
loop = capnp.EventLoop()
|
||||
@@ -72,12 +78,38 @@ def test_simple_client(capability):
|
||||
response = loop.wait(remote)
|
||||
|
||||
assert response.x == '26'
|
||||
|
||||
remote = client.foo(i=5, j=True)
|
||||
response = loop.wait(remote)
|
||||
|
||||
assert response.x == '27'
|
||||
|
||||
remote = client.foo(5)
|
||||
response = loop.wait(remote)
|
||||
|
||||
assert response.x == '26'
|
||||
|
||||
remote = client.foo(5, True)
|
||||
response = loop.wait(remote)
|
||||
|
||||
assert response.x == '27'
|
||||
|
||||
remote = client.foo(5, j=True)
|
||||
response = loop.wait(remote)
|
||||
|
||||
assert response.x == '27'
|
||||
|
||||
remote = client.buz(capability.TestSturdyRefHostId.new_message(host='localhost'))
|
||||
response = loop.wait(remote)
|
||||
|
||||
assert response.x == 'localhost_test'
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
remote = client.foo(5, 10)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
remote = client.foo(5, True, 100)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
remote = client.foo(i='foo')
|
||||
|
||||
@@ -108,9 +140,11 @@ class BadServer:
|
||||
def __init__(self, val=1):
|
||||
self.val = val
|
||||
|
||||
def foo(self, context):
|
||||
context.results.x = str(context.params.i * 5 + self.val)
|
||||
context.results.x2 = 5 # raises exception
|
||||
def foo(self, i, j, **kwargs):
|
||||
extra = 0
|
||||
if j:
|
||||
extra = 1
|
||||
return str(i * 5 + extra + self.val), 10 # returning too many args
|
||||
|
||||
def test_exception_client(capability):
|
||||
loop = capnp.EventLoop()
|
||||
@@ -122,14 +156,14 @@ def test_exception_client(capability):
|
||||
loop.wait(remote)
|
||||
|
||||
class BadPipelineServer:
|
||||
def getCap(self, context):
|
||||
def getCap(self, n, inCap, _results, **kwargs):
|
||||
def _then(response):
|
||||
context.results.s = response.x + '_foo'
|
||||
context.results.outBox.cap = capability().TestInterface.new_server(Server(100))
|
||||
_results.s = response.x + '_foo'
|
||||
_results.outBox.cap = capability().TestInterface.new_server(Server(100))
|
||||
def _error(error):
|
||||
raise Exception('test was a success')
|
||||
|
||||
return context.params.inCap.foo(i=context.params.n).then(_then, _error)
|
||||
return inCap.foo(i=n).then(_then, _error)
|
||||
|
||||
def test_exception_chain(capability):
|
||||
loop = capnp.EventLoop()
|
||||
|
||||
Reference in New Issue
Block a user