aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2016-05-11 15:07:06 +0200
committerMiroslav Miklus <mmiklus@cisco.com>2016-05-24 10:40:22 +0000
commit058dfaa4ad10b8fd3df7da7793f4633ac2afe64c (patch)
tree958a8857224295fd62357c270c7f6e8362001d4d /resources
parent76798663ee3e71defd75bdf0d1e32d8242e38e33 (diff)
Add test cases with "dpdk no-multi-seg" in vpp startup config
- JIRA: CSIT-73 - Add ability to configure no-multi-seg parameter in VPP startup configuration - Add keywords to selectively configure parameters in startup configuration - Modify testcases Change-Id: I3c5c0a1cc2b1156d5a87ff36628b50793dd9ac5f Signed-off-by: Peter Mikus <pmikus@cisco.com>
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/python/VppConfigGenerator.py42
-rw-r--r--resources/libraries/robot/default.robot90
-rw-r--r--resources/libraries/robot/performance.robot4
3 files changed, 115 insertions, 21 deletions
diff --git a/resources/libraries/python/VppConfigGenerator.py b/resources/libraries/python/VppConfigGenerator.py
index a9c7618c92..9ca9fc401d 100644
--- a/resources/libraries/python/VppConfigGenerator.py
+++ b/resources/libraries/python/VppConfigGenerator.py
@@ -55,6 +55,7 @@ dpdk {{
{txqueuesconfig}
{pciconfig}
{rssconfig}
+{nomultiseg}
}}
"""
# End VPP configuration template.
@@ -204,6 +205,25 @@ class VppConfigGenerator(object):
logger.debug('Setting hostname {} max_tx_queues config to {}'.\
format(hostname, max_tx_queues_config))
+ def add_no_multi_seg_config(self, node):
+ """Add No Multi Seg configuration for node.
+
+ :param node: DUT node.
+ :type node: dict
+ :return: nothing
+ """
+ if node['type'] != NodeType.DUT:
+ raise ValueError('Node type is not a DUT')
+ hostname = Topology.get_node_hostname(node)
+ if not hostname in self._nodeconfig:
+ self._nodeconfig[hostname] = {}
+ if not 'no_multi_seg_config' in self._nodeconfig[hostname]:
+ self._nodeconfig[hostname]['no_multi_seg_config'] = []
+ self._nodeconfig[hostname]['no_multi_seg_config'].append(
+ "no-multi-seg")
+ logger.debug('Setting hostname {} config with {}'.\
+ format(hostname, "no-multi-seg"))
+
def remove_all_pci_devices(self, node):
"""Remove PCI device configuration from node.
@@ -294,6 +314,21 @@ class VppConfigGenerator(object):
logger.debug('Clearing Max TX Queues config for hostname {}.'.\
format(hostname))
+ def remove_no_multi_seg_config(self, node):
+ """Remove No Multi Seg configuration from node.
+
+ :param node: DUT node.
+ :type node: dict
+ :return: nothing
+ """
+ if node['type'] != NodeType.DUT:
+ raise ValueError('Node type is not a DUT')
+ hostname = Topology.get_node_hostname(node)
+ if hostname in self._nodeconfig:
+ self._nodeconfig[hostname]['no_multi_seg_config'] = []
+ logger.debug('Clearing No Multi Seg config for hostname {}.'.\
+ format(hostname))
+
def apply_config(self, node, waittime=5, retries=12):
"""Generate and apply VPP configuration for node.
@@ -318,6 +353,7 @@ class VppConfigGenerator(object):
heapsizeconfig = ""
rssconfig = ""
txqueuesconfig = ""
+ nomultiseg = ""
if hostname in self._nodeconfig:
cfg = self._nodeconfig[hostname]
@@ -341,12 +377,16 @@ class VppConfigGenerator(object):
txqueuesconfig = " " + "\n ".join(
cfg['max_tx_queues_config'])
+ if 'no_multi_seg_config' in cfg:
+ nomultiseg = " " + "\n ".join(cfg['no_multi_seg_config'])
+
vppconfig = VPP_CONFIG_TEMPLATE.format(cpuconfig=cpuconfig,
pciconfig=pciconfig,
socketmemconfig=socketmemconfig,
heapsizeconfig=heapsizeconfig,
rssconfig=rssconfig,
- txqueuesconfig=txqueuesconfig)
+ txqueuesconfig=txqueuesconfig,
+ nomultiseg = nomultiseg)
logger.debug('Writing VPP config to host {}: "{}"'.format(hostname,
vppconfig))
diff --git a/resources/libraries/robot/default.robot b/resources/libraries/robot/default.robot
index 8e03e62983..59c5e137a0 100644
--- a/resources/libraries/robot/default.robot
+++ b/resources/libraries/robot/default.robot
@@ -28,9 +28,9 @@
| | [Documentation] | Prepare all TGs before traffic scripts execution
| | All TGs Set Interface Default Driver | ${nodes}
-| Setup '${m}' worker threads and rss '${n}' without HTT on all DUTs
+| Add '${m}' worker threads and rss '${n}' without HTT to all DUTs
| | [Documentation] | Setup M worker threads without HTT and rss N in startup
-| | ... | configuration of VPP on all DUTs
+| | ... | configuration of VPP to all DUTs
| | ${cpu}= | Catenate | main-core | 0 | corelist-workers
| | ${cpu}= | Run Keyword If | '${m}' == '1' | Catenate | ${cpu} | 1
| | ... | ELSE IF | '${m}' == '2' | Catenate | ${cpu} | 1-2
@@ -38,11 +38,11 @@
| | ... | ELSE IF | '${m}' == '6' | Catenate | ${cpu} | 1-6
| | ... | ELSE | Fail | Not supported combination
| | ${rss}= | Catenate | rss | ${n}
-| | Setup worker threads and rss on all DUTs | ${cpu} | ${rss}
+| | Add worker threads and rss to all DUTs | ${cpu} | ${rss}
-| Setup '${m}' worker threads and rss '${n}' with HTT on all DUTs
+| Add '${m}' worker threads and rss '${n}' with HTT to all DUTs
| | [Documentation] | Setup M worker threads with HTT and rss N in startup
-| | ... | configuration of VPP on all DUTs
+| | ... | configuration of VPP to all DUTs
| | ${cpu}= | Catenate | main-core | 0 | corelist-workers
| | ${cpu}= | Run Keyword If | '${m}' == '2' | Catenate | ${cpu} | 1,10
| | ... | ELSE IF | '${m}' == '4' | Catenate | ${cpu} | 1-2,10-11
@@ -50,24 +50,67 @@
| | ... | ELSE IF | '${m}' == '8' | Catenate | ${cpu} | 1-4,10-13
| | ... | ELSE | Fail | Not supported combination
| | ${rss}= | Catenate | rss | ${n}
-| | Setup worker threads and rss on all DUTs | ${cpu} | ${rss}
+| | Add worker threads and rss to all DUTs | ${cpu} | ${rss}
-| Setup worker threads and rss on all DUTs
-| | [Documentation] | Setup worker threads and rss in startup configuration of
-| | ... | VPP on all DUTs
+| Add worker threads and rss to all DUTs
+| | [Documentation] | Setup worker threads and rss in VPP startup configuration
+| | ... | to all DUTs
+| | ...
+| | ... | *Arguments:*
+| | ... | - ${cpu} - CPU configuration. Type: string
+| | ... | - ${rss} - RSS configuration. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Add worker threads and rss to all DUTs \| main-core 0 \
+| | ... | \| rss 2
| | [Arguments] | ${cpu} | ${rss}
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | Add CPU config | ${nodes['${dut}']}
| | | ... | ${cpu}
-| | | Add PCI device | ${nodes['${dut}']}
| | | Add RSS config | ${nodes['${dut}']}
| | | ... | ${rss}
-| | | Apply config | ${nodes['${dut}']}
-| Reset startup configuration of VPP on all DUTs
-| | [Documentation] | Reset startup configuration of VPP on all DUTs
-| | ${cpu}= | Catenate | main-core | 1
+| Add all PCI devices to all DUTs
+| | [Documentation] | Add all available PCI devices from topology file to VPP
+| | ... | startup configuration to all DUTs
+| | ${duts}= | Get Matches | ${nodes} | DUT*
+| | :FOR | ${dut} | IN | @{duts}
+| | | Add PCI device | ${nodes['${dut}']}
+
+| Add PCI device to DUT
+| | [Documentation] | Add PCI device to VPP startup configuration
+| | ... | to DUT specified as argument
+| | ...
+| | ... | *Arguments:*
+| | ... | - ${node} - DUT node. Type: dictionary
+| | ... | - ${pci_address} - PCI address. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Add PCI device to DUT \| ${nodes['DUT1']} \
+| | ... | \| 0000:00:00.0
+| | [Arguments] | ${node} | ${pci_address}
+| | Add PCI device | ${node} | ${pci_address}
+
+| Add No Multi Seg to all DUTs
+| | [Documentation] | Add No Multi Seg to VPP startup configuration to all
+| | ... | DUTs
+| | ${duts}= | Get Matches | ${nodes} | DUT*
+| | :FOR | ${dut} | IN | @{duts}
+| | | Add No Multi Seg Config | ${nodes['${dut}']}
+
+| Add Max Tx Queues '${m}' to all DUTs
+| | [Documentation] | Add Max Tx Queues M to VPP startup configuration to all
+| | ... | DUTs
+| | ${queues}= | Catenate | max-tx-queues | ${m}
+| | ${duts}= | Get Matches | ${nodes} | DUT*
+| | :FOR | ${dut} | IN | @{duts}
+| | | Add Max Tx Queues Config | ${nodes['${dut}']} | ${queues}
+
+| Remove startup configuration of VPP from all DUTs
+| | [Documentation] | Remove VPP startup configuration from all DUTs
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | Remove All PCI Devices | ${nodes['${dut}']}
@@ -75,8 +118,19 @@
| | | Remove Socketmem Config | ${nodes['${dut}']}
| | | Remove Heapsize Config | ${nodes['${dut}']}
| | | Remove RSS Config | ${nodes['${dut}']}
-| | | Add CPU Config | ${nodes['${dut}']}
-| | | ... | ${cpu}
-| | | Add PCI Device | ${nodes['${dut}']}
-| | | Apply Config | ${nodes['${dut}']}
+| | | Remove Max Tx Queues Config | ${nodes['${dut}']}
+| | | Remove No Multi Seg Config | ${nodes['${dut}']}
+| Setup default startup configuration of VPP on all DUTs
+| | [Documentation] | Setup default startup configuration of VPP to all DUTs
+| | Remove startup configuration of VPP from all DUTs
+| | Add '1' worker threads and rss '1' without HTT to all DUTs
+| | Add all PCI devices to all DUTs
+| | Apply startup configuration on all VPP DUTs
+
+| Apply startup configuration on all VPP DUTs
+| | [Documentation] | Apply startup configuration of VPP and restart VPP on all
+| | ... | DUTs
+| | ${duts}= | Get Matches | ${nodes} | DUT*
+| | :FOR | ${dut} | IN | @{duts}
+| | | Apply Config | ${nodes['${dut}']}
diff --git a/resources/libraries/robot/performance.robot b/resources/libraries/robot/performance.robot
index 6c06288f53..73f5bb726a 100644
--- a/resources/libraries/robot/performance.robot
+++ b/resources/libraries/robot/performance.robot
@@ -146,7 +146,7 @@
| 3-node Performance Suite Setup
| | [Arguments] | ${topology_type}
-| | Reset startup configuration of VPP on all DUTs
+| | Setup default startup configuration of VPP on all DUTs
| | Update All Interface Data On All Nodes | ${nodes}
| | 3-node circular Topology Variables Setup
| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
@@ -156,7 +156,7 @@
3-node Performance Suite Setup with DUT's NIC model
| | [Arguments] | ${topology_type} | ${nic_model}
-| | Reset startup configuration of VPP on all DUTs
+| | Setup default startup configuration of VPP on all DUTs
| | Update All Interface Data On All Nodes | ${nodes}
| | 3-node circular Topology Variables Setup with DUT interface model
| | ... | ${nic_model}