From 0f087977e39bee0a24f06c16e1b69b7400eb2f0f Mon Sep 17 00:00:00 2001 From: Serhiy Pshyk Date: Fri, 5 Oct 2018 17:50:38 +0100 Subject: Add vBNG PPPoE test cases functionality Added vBNG PPPoE test cases functionality which allows to: - create and configure access network connections (PPPoE subscribers); - create and configure core network connections; - configure and run traffic between access and core network topologies. JIRA: YARDSTICK-1508 Change-Id: I90975505fe7318227a837d97e8db4a06712de7eb Signed-off-by: Serhiy Pshyk Signed-off-by: Oleksandr Naumets --- .../libs/ixia_libs/ixnet/ixnet_api.py | 54 +++++++++++++++------- 1 file changed, 37 insertions(+), 17 deletions(-) (limited to 'yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py') diff --git a/yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py b/yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py index 1f465bde5..b5e4172a9 100644 --- a/yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py +++ b/yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py @@ -49,6 +49,19 @@ PROTOCOL_STATUS_DOWN = ['down', 'notStarted'] SUPPORTED_PROTO = [PROTO_UDP] +SUPPORTED_DSCP_CLASSES = [ + 'defaultPHB', + 'classSelectorPHB', + 'assuredForwardingPHB', + 'expeditedForwardingPHB'] + +SUPPORTED_TOS_FIELDS = [ + 'precedence', + 'delay', + 'throughput', + 'reliability' +] + class Vlan(object): def __init__(self, @@ -198,9 +211,10 @@ class IxNextgen(object): # pragma: no cover :param proto: IxNet protocol str representation, e.g.: '::ixNet::OBJ-/topology:2/deviceGroup:1/ethernet:1/ipv4:L14' - :return: (str) protocol status: 'up', 'down' or 'notStarted' + :return: (list) protocol status: list of sessions protocol + statuses which include states 'up', 'down' and 'notStarted' """ - return self.ixnet.getAttribute(proto, '-sessionStatus')[0] + return self.ixnet.getAttribute(proto, '-sessionStatus') def is_traffic_running(self): """Returns true if traffic state == TRAFFIC_STATUS_STARTED""" @@ -218,8 +232,8 @@ class IxNextgen(object): # pragma: no cover :return: (bool) True if all protocols status is 'up', False if any protocol status is 'down' or 'notStarted' """ - return all(self._get_protocol_status(proto) == PROTOCOL_STATUS_UP - for proto in protocols) + return all(session_status is PROTOCOL_STATUS_UP for proto in protocols + for session_status in self._get_protocol_status(proto)) def is_protocols_stopped(self, protocols): """Returns true if all protocols statuses are in PROTOCOL_STATUS_DOWN @@ -229,8 +243,8 @@ class IxNextgen(object): # pragma: no cover :return: (bool) True if all protocols status is 'down' or 'notStarted', False if any protocol status is 'up' """ - return all(self._get_protocol_status(proto) in PROTOCOL_STATUS_DOWN - for proto in protocols) + return all(session_status in PROTOCOL_STATUS_DOWN for proto in protocols + for session_status in self._get_protocol_status(proto)) @staticmethod def _parse_framesize(framesize): @@ -597,23 +611,25 @@ class IxNextgen(object): # pragma: no cover 'precedence': [1, 4, 7] } """ - if 'raw' in priority: + if priority.get('raw'): priority_field = self._get_field_in_stack_item(ip_descriptor, 'priority.raw') self._set_priority_field(priority_field, priority['raw']) - elif 'dscp' in priority: + elif priority.get('dscp'): for field, value in priority['dscp'].items(): - priority_field = self._get_field_in_stack_item( - ip_descriptor, - 'priority.ds.phb.{field}.{field}'.format(field=field)) - self._set_priority_field(priority_field, value) + if field in SUPPORTED_DSCP_CLASSES: + priority_field = self._get_field_in_stack_item( + ip_descriptor, + 'priority.ds.phb.{field}.{field}'.format(field=field)) + self._set_priority_field(priority_field, value) - elif 'tos' in priority: + elif priority.get('tos'): for field, value in priority['tos'].items(): - priority_field = self._get_field_in_stack_item( - ip_descriptor, 'priority.tos.' + field) - self._set_priority_field(priority_field, value) + if field in SUPPORTED_TOS_FIELDS: + priority_field = self._get_field_in_stack_item( + ip_descriptor, 'priority.tos.' + field) + self._set_priority_field(priority_field, value) def _set_priority_field(self, field_descriptor, value): """Set the priority field described by field_descriptor @@ -938,7 +954,7 @@ class IxNextgen(object): # pragma: no cover self.ixnet.commit() return obj - def add_pppox_client(self, xproto, auth, user, pwd): + def add_pppox_client(self, xproto, auth, user, pwd, enable_redial=True): log.debug( "add_pppox_client: xproto='%s', auth='%s', user='%s', pwd='%s'", xproto, auth, user, pwd) @@ -958,6 +974,10 @@ class IxNextgen(object): # pragma: no cover else: raise NotImplementedError() + if enable_redial: + redial = self.ixnet.getAttribute(obj, '-enableRedial') + self.ixnet.setAttribute(redial + '/singleValue', '-value', 'true') + self.ixnet.commit() return obj -- cgit 1.2.3-korg