support batch option in MultiCallSession

This commit is contained in:
Mike McLean 2019-05-03 21:11:48 -04:00
parent 78e3f48d8b
commit 37e8afcf8c
2 changed files with 40 additions and 8 deletions

View file

@ -31,3 +31,25 @@ class TestNewMultiCall(unittest.TestCase):
for i in range(10):
self.assertEqual(calls[i]['methodName'], "echo")
self.assertEqual(calls[i]['params'], (i,))
def test_batch_multicall(self):
with self.session.multicall(batch=10) as m:
ret = {}
for i in range(42):
ret[i] = m.echo(i)
# should be 5 batches
self.assertEqual(self._callMethod.call_count, 5)
i = 0
for args, kwargs in self._callMethod.call_args_list:
self.assertEqual(kwargs, {})
self.assertEqual(args[0], 'multiCall')
self.assertEqual(args[2], {})
_calls = args[1]
if not isinstance(_calls, tuple) or len(_calls) != 1:
raise Exception('multiCall args not wrapped in singleton')
calls = _calls[0]
for call in calls:
self.assertEqual(call['methodName'], "echo")
self.assertEqual(call['params'], (i,))
i += 1