tests: fix memif tests

remote_test.py - Remove 'ret' arg from _remote_exec(), so that the function
                 always reads the reply from the pipe. (fix unmatched request/reply)

memif_test.py - Don't register VppIpRoute to VppObjectRegistry.

Type: fix

Change-Id: I8a51e7ffd68df5f379534f5ddd5ec9367a89be32
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
This commit is contained in:
Jakub Grajciar
2019-06-25 10:22:11 +02:00
committed by Paul Vinciguerra
parent b1edf37bd5
commit 7db35de508
2 changed files with 12 additions and 12 deletions

View File

@ -59,12 +59,11 @@ class RemoteClassAttr(object):
return return
self._path.append(attr) self._path.append(attr)
self._remote._remote_exec(RemoteClass.SETATTR, self.path_to_str(), self._remote._remote_exec(RemoteClass.SETATTR, self.path_to_str(),
True, value=val) value=val)
def __call__(self, *args, **kwargs): def __call__(self, *args, **kwargs):
ret = True if 'vapi' in self.path_to_str() else False
return self._remote._remote_exec(RemoteClass.CALL, self.path_to_str(), return self._remote._remote_exec(RemoteClass.CALL, self.path_to_str(),
ret, *args, **kwargs) *args, **kwargs)
class RemoteClass(Process): class RemoteClass(Process):
@ -134,7 +133,7 @@ class RemoteClass(Process):
return return
setattr(RemoteClassAttr(self, None), attr, val) setattr(RemoteClassAttr(self, None), attr, val)
def _remote_exec(self, op, path=None, ret=True, *args, **kwargs): def _remote_exec(self, op, path=None, *args, **kwargs):
""" """
Execute given operation on a given, possibly nested, member remotely. Execute given operation on a given, possibly nested, member remotely.
""" """
@ -153,12 +152,9 @@ class RemoteClass(Process):
args = self._make_serializable(args) args = self._make_serializable(args)
kwargs = self._make_serializable(kwargs) kwargs = self._make_serializable(kwargs)
self._pipe[RemoteClass.PIPE_PARENT].send((op, path, args, kwargs)) self._pipe[RemoteClass.PIPE_PARENT].send((op, path, args, kwargs))
if not ret:
# no return value expected
return None
timeout = self._timeout timeout = self._timeout
# adjust timeout specifically for the .sleep method # adjust timeout specifically for the .sleep method
if path.split('.')[-1] == 'sleep': if path is not None and path.split('.')[-1] == 'sleep':
if args and isinstance(args[0], (long, int)): if args and isinstance(args[0], (long, int)):
timeout += args[0] timeout += args[0]
elif 'timeout' in kwargs: elif 'timeout' in kwargs:
@ -305,7 +301,7 @@ class RemoteClass(Process):
def quit_remote(self): def quit_remote(self):
""" Quit remote execution """ """ Quit remote execution """
self._remote_exec(RemoteClass.QUIT, None, False) self._remote_exec(RemoteClass.QUIT, None)
def get_remote_value(self): def get_remote_value(self):
""" Get value of a remotely held object """ """ Get value of a remotely held object """

View File

@ -12,7 +12,6 @@ from vpp_memif import MEMIF_MODE, MEMIF_ROLE, remove_all_memif_vpp_config, \
from vpp_ip_route import VppIpRoute, VppRoutePath from vpp_ip_route import VppIpRoute, VppRoutePath
@unittest.skipIf(True, "doesn't work with VppEnums")
class TestMemif(VppTestCase): class TestMemif(VppTestCase):
""" Memif Test Case """ """ Memif Test Case """
@ -250,8 +249,11 @@ class TestMemif(VppTestCase):
self.assertTrue(remote_memif.wait_for_link_up(5)) self.assertTrue(remote_memif.wait_for_link_up(5))
# add routing to remote vpp # add routing to remote vpp
VppIpRoute(self.remote_test, self.pg0._local_ip4_subnet, 24, route = VppIpRoute(self.remote_test, self.pg0._local_ip4_subnet, 24,
[VppRoutePath(memif.ip4_addr, 0xffffffff)]).add_vpp_config() [VppRoutePath(memif.ip4_addr, 0xffffffff)],
register=False)
route.add_vpp_config()
# create ICMP echo-request from local pg to remote memif # create ICMP echo-request from local pg to remote memif
packet_num = 10 packet_num = 10
@ -266,6 +268,8 @@ class TestMemif(VppTestCase):
self._verify_icmp(self.pg0, remote_memif, c, seq) self._verify_icmp(self.pg0, remote_memif, c, seq)
seq += 1 seq += 1
route.remove_vpp_config()
if __name__ == '__main__': if __name__ == '__main__':
unittest.main(testRunner=VppTestRunner) unittest.main(testRunner=VppTestRunner)