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:

committed by
Paul Vinciguerra

parent
b1edf37bd5
commit
7db35de508
@ -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 """
|
||||||
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user