X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FMemif.py;h=acde3ecc1797b522838136012307085b0f8debd0;hb=56fe9e512019d90a5647f4a244ffb8b6f6ff9c47;hp=4a3186476f3a93255b4b855b1627e1055ae76cd0;hpb=30c94055dd6ec2fe1cb83455cf6eb4bca8648d45;p=csit.git diff --git a/resources/libraries/python/Memif.py b/resources/libraries/python/Memif.py index 4a3186476f..acde3ecc17 100644 --- a/resources/libraries/python/Memif.py +++ b/resources/libraries/python/Memif.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. +# Copyright (c) 2018 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -15,7 +15,7 @@ from resources.libraries.python.ssh import SSH from resources.libraries.python.VatExecutor import VatExecutor, VatTerminal -from resources.libraries.python.topology import Topology +from resources.libraries.python.topology import NodeType, Topology class Memif(object): @@ -25,18 +25,23 @@ class Memif(object): pass @staticmethod - def create_memif_interface(node, filename, mid, sid, role='master'): + def create_memif_interface(node, filename, mid, sid, rxq=1, txq=1, + role='slave'): """Create Memif interface on the given node. :param node: Given node to create Memif interface on. :param filename: Memif interface socket filename. :param mid: Memif interface ID. :param sid: Socket ID. + :param rxq: Number of RX queues. + :param txq: Number of TX queues. :param role: Memif interface role [master|slave]. Default is master. :type node: dict :type filename: str :type mid: str :type sid: str + :type rxq: int + :type txq: int :type role: str :returns: SW interface index. :rtype: int @@ -48,7 +53,8 @@ class Memif(object): 'memif_socket_filename_add_del.vat', add_del='add', id=sid, filename='/tmp/'+filename) vat.vat_terminal_exec_cmd_from_template( - 'memif_create.vat', id=mid, socket=sid, role=role) + 'memif_create.vat', id=mid, socket=sid, rxq=rxq, txq=txq, + role=role) if 'sw_if_index' in vat.vat_stdout: try: sw_if_idx = int(vat.vat_stdout.split()[4]) @@ -92,6 +98,17 @@ class Memif(object): vat = VatExecutor() vat.execute_script("show_memif.vat", node, json_out=False) + @staticmethod + def show_memif_on_all_duts(nodes): + """Show Memif data on all DUTs. + + :param nodes: Topology nodes. + :type nodes: dict + """ + for node in nodes.values(): + if node['type'] == NodeType.DUT: + Memif.show_memif(node) + @staticmethod def clear_memif_socks(node, *socks): """Clear Memif sockets for the given node. @@ -169,7 +186,7 @@ class Memif(object): for item in memif_data: if memif_data[item]['sw_if_index'] == str(sw_if_idx): return item - return None + return None @staticmethod def vpp_get_memif_interface_mac(node, sw_if_idx):