summaryrefslogtreecommitdiffstats
path: root/test/vpp_papi_provider.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/vpp_papi_provider.py')
-rw-r--r--test/vpp_papi_provider.py111
1 files changed, 36 insertions, 75 deletions
diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py
index f6069e3d049..7b5709ed8ac 100644
--- a/test/vpp_papi_provider.py
+++ b/test/vpp_papi_provider.py
@@ -2,7 +2,7 @@ import os
import time
from collections import deque
-from six import moves
+from six import moves, iteritems
from vpp_papi import VPP, mac_pton
from hook import Hook
from vpp_l2 import L2_PORT_TYPE
@@ -41,6 +41,14 @@ class SYSLOG_SEVERITY:
INFO = 6
DBG = 7
+#
+# Dictionary keyed on message name to override default values for
+# named parameters
+#
+defaultmapping = {'map_add_domain': {'mtu': 1280},
+ 'syslog_set_sender': {'collector_port': 514,
+ 'max_msg_size': 480}}
+
class UnexpectedApiReturnValueError(Exception):
""" exception raised when the API return value is unexpected """
@@ -145,6 +153,33 @@ class VppPapiProvider(object):
self.test_class.logger.debug("New event: %s: %s" % (name, event))
self._events.append(event)
+ def factory(self, name, apifn):
+ def f(*a, **ka):
+ fields = apifn._func.msg.fields
+
+ # add positional and kw arguments
+ d = ka
+ for i, o in enumerate(fields[3:]):
+ try:
+ d[o] = a[i]
+ except:
+ break
+
+ # Default override
+ if name in defaultmapping:
+ for k, v in iteritems(defaultmapping[name]):
+ if k in d:
+ continue
+ d[k] = v
+ return self.api(apifn, d)
+ return f
+
+ def __getattr__(self, name):
+ try:
+ return getattr(self, name)
+ except:
+ return self.factory(name, getattr(self.papi, name))
+
def connect(self):
"""Connect the API to VPP"""
self.vpp.connect(self.name, self.shm_prefix)
@@ -2754,43 +2789,6 @@ class VppPapiProvider(object):
'vni': vni
})
- def map_add_domain(self,
- ip6_prefix,
- ip6_src,
- ip4_prefix,
- ea_bits_len=0,
- psid_offset=0,
- psid_length=0,
- mtu=1280):
-
- return self.api(
- self.papi.map_add_domain,
- {
- 'ip6_prefix': ip6_prefix,
- 'ip4_prefix': ip4_prefix,
- 'ip6_src': ip6_src,
- 'ea_bits_len': ea_bits_len,
- 'psid_offset': psid_offset,
- 'psid_length': psid_length,
- 'mtu': mtu
- })
-
- def map_if_enable_disable(self, is_enable, sw_if_index, is_translation):
- return self.api(
- self.papi.map_if_enable_disable,
- {
- 'is_enable': is_enable,
- 'sw_if_index': sw_if_index,
- 'is_translation': is_translation,
- })
-
- def map_param_set_tcp(self, tcp_mss):
- return self.api(
- self.papi.map_param_set_tcp,
- {
- 'tcp_mss': tcp_mss,
- })
-
def gtpu_add_del_tunnel(
self,
src_addr,
@@ -4163,40 +4161,3 @@ class VppPapiProvider(object):
def svs_dump(self):
return self.api(self.papi.svs_dump, {})
-
- def syslog_set_sender(
- self,
- collector,
- src,
- collector_port=514,
- vrf_id=0,
- max_msg_size=480):
- """Set syslog sender configuration
-
- :param collector: colector IP address
- :param src: source IP address
- :param collector_port: collector UDP port (Default value = 514)
- :param vrf_id: VRF id (Default value = 0)
- :param max_msg_size: maximum message length (Default value = 480)
- """
- return self.api(self.papi.syslog_set_sender,
- {'collector_address': collector,
- 'src_address': src,
- 'collector_port': collector_port,
- 'vrf_id': vrf_id,
- 'max_msg_size': max_msg_size})
-
- def syslog_get_sender(self):
- """Return syslog sender configuration"""
- return self.api(self.papi.syslog_get_sender, {})
-
- def syslog_set_filter(self, severity):
- """Set syslog filter parameters
-
- :param severity: severity filter (specified severity and greater match)
- """
- return self.api(self.papi.syslog_set_filter, {'severity': severity})
-
- def syslog_get_filter(self):
- """Return syslog filter parameters"""
- return self.api(self.papi.syslog_get_filter, {})