From a95c54b7821596402e0aa7136cd7d1de71a5b187 Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Mon, 4 Dec 2017 16:41:57 +0100 Subject: CSIT-866: wrk onboarding in CSIT - CSIT-867: Low Level Description - CSIT-868: wrk traffic profile - parsing - CSIT-869: wrk implementation into CSIT Change-Id: I65e1037f5ae05b3a5b2020e4a6c54462766ae1b4 Signed-off-by: Tibor Frank --- .../robot/performance/performance_setup.robot | 54 ++++++++++++++- resources/libraries/robot/tcp/tcp_setup.robot | 43 ++++++++++++ resources/libraries/robot/wrk/wrk_utils.robot | 78 ++++++++++++++++++++++ 3 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 resources/libraries/robot/tcp/tcp_setup.robot create mode 100644 resources/libraries/robot/wrk/wrk_utils.robot (limited to 'resources/libraries/robot') diff --git a/resources/libraries/robot/performance/performance_setup.robot b/resources/libraries/robot/performance/performance_setup.robot index 0453fad275..0e909aa455 100644 --- a/resources/libraries/robot/performance/performance_setup.robot +++ b/resources/libraries/robot/performance/performance_setup.robot @@ -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: @@ -13,6 +13,7 @@ *** Settings *** | Library | resources.libraries.python.DUTSetup +| Library | resources.tools.wrk.wrk | Resource | resources/libraries/robot/performance/performance_configuration.robot | Resource | resources/libraries/robot/performance/performance_utils.robot | Documentation | Performance suite keywords - Suite and test setups and @@ -385,6 +386,45 @@ | | Configure VPP in all 'VNF' containers | | Install VPP in all 'VNF' containers +| Set up 3-node performance topology with wrk and DUT's NIC model +| | [Documentation] +| | ... | Suite preparation phase that setup default startup configuration of +| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global +| | ... | variables used in test cases based on interface model provided as an +| | ... | argument. Installs the traffic generator. +| | ... +| | ... | *Arguments:* +| | ... | - iface_model - Interface model. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set up 3-node performance topology with wrk and DUT's NIC model\ +| | ... | \| Intel-X520-DA2 \| +| | ... +| | [Arguments] | ${iface_model} +| | ... +| | Set variables in 3-node circular topology with DUT interface model +| | ... | ${iface_model} +| | Iface update numa node | ${tg} +# Make sure TRex is stopped +| | ${running}= | Is TRex running | ${tg} +| | Run keyword if | ${running}==${True} | Teardown traffic generator | ${tg} +| | ${curr_driver}= | Get PCI dev driver | ${tg} +| | ... | ${tg['interfaces']['${tg_if1}']['pci_address']} +| | Run keyword if | '${curr_driver}'!='${None}' +| | ... | PCI Driver Unbind | ${tg} | +| | ... | ${tg['interfaces']['${tg_if1}']['pci_address']} +# Bind tg_if1 to driver specified in the topology +| | ${driver}= | Get Variable Value | ${tg['interfaces']['${tg_if1}']['driver']} +| | PCI Driver Bind | ${tg} +| | ... | ${tg['interfaces']['${tg_if1}']['pci_address']} | ${driver} +# Set IP on tg_if1 +| | ${intf_name}= | Get Linux interface name | ${tg} +| | ... | ${tg['interfaces']['${tg_if1}']['pci_address']} +| | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.10.1 | 24 +| | Set Linux interface up | ${tg} | ${intf_name} +| | Install wrk | ${tg} + # Suite teardowns | Tear down 3-node performance topology @@ -480,6 +520,18 @@ | | Show VAT History On All DUTs | ${nodes} | | Show statistics on all DUTs | ${nodes} +| Tear down performance test with wrk +| | [Documentation] | Common test teardown for ndrdisc and pdrdisc performance \ +| | ... | tests. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down performance test with wrk \| +| | ... +| | Remove All Added Ports On All DUTs From Topology | ${nodes} +| | Show VAT History On All DUTs | ${nodes} +| | Show statistics on all DUTs | ${nodes} + | Tear down performance test with vhost and VM with dpdk-testpmd | | [Documentation] | Common test teardown for performance tests which use | | ... | vhost(s) and VM(s) with dpdk-testpmd. diff --git a/resources/libraries/robot/tcp/tcp_setup.robot b/resources/libraries/robot/tcp/tcp_setup.robot new file mode 100644 index 0000000000..09f6afd592 --- /dev/null +++ b/resources/libraries/robot/tcp/tcp_setup.robot @@ -0,0 +1,43 @@ +# 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: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.IPv4Util.IPv4Util +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.tcp.TCPUtils +| Resource | resources/libraries/robot/ip/ip4.robot +| ... +| Documentation | L2 keywords to set up VPP to test tcp. + +*** Keywords *** +| Set up HTTP server on the VPP node +| | [Documentation] +| | ... | Configure IP address on the port, set it up and start HTTP server on +| | ... | the VPP. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut1_if1_ip4} - IP address to be set on the dut1_if1 interface. +| | ... | Type: string +| | ... | - ${ip4_len} - Length of the netmask. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set up HTTP server on the VPP node \| 192.168.10.2 \| 24 \| +| | ... +| | [Arguments] | ${dut1_if1_ip4} | ${ip4_len} +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface Address | ${dut1} | ${dut1_if1} | ${dut1_if1_ip4} | ${ip4_len} +| | Vpp Node Interfaces Ready Wait | ${dut1} +| | Start HTTP server | ${dut1} +| | Sleep | 30 diff --git a/resources/libraries/robot/wrk/wrk_utils.robot b/resources/libraries/robot/wrk/wrk_utils.robot new file mode 100644 index 0000000000..fd18a5d686 --- /dev/null +++ b/resources/libraries/robot/wrk/wrk_utils.robot @@ -0,0 +1,78 @@ +# 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: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.tools.wrk.wrk +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.DUTSetup +| Library | resources.libraries.python.TrafficGenerator +| Library | resources.libraries.python.topology.Topology +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Documentation | L2 keywords to set up wrk and to measure performance +| ... | parameters using wrk. + +*** Keywords *** +| Measure throughput +| | [Documentation] +| | ... | Measure throughput using wrk. +| | ... +| | ... | *Arguments:* +| | ... | - ${profile} - The name of the wrk traffic profile defining the +| | ... | traffic. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Measure throughput \| wrk-bw-1url-1core-50con \| +| | ... +| | [Arguments] | ${profile} +| | ... +| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${tg_if1} | ${tg_if2} +| | ${output}= | Run wrk | ${tg} | ${profile} | ${tg_numa} | bw +| | Set test message | ${output} + +| Measure requests per second +| | [Documentation] +| | ... | Measure number of requests per second using wrk. +| | ... +| | ... | *Arguments:* +| | ... | - ${profile} - The name of the wrk traffic profile defining the +| | ... | traffic. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Measure requests per second \| wrk-bw-1url-1core-50con \| +| | ... +| | [Arguments] | ${profile} +| | ... +| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${tg_if1} | ${tg_if2} +| | ${output}= | Run wrk | ${tg} | ${profile} | ${tg_numa} | rps +| | Set test message | ${output} + +| Measure connections per second +| | [Documentation] +| | ... | Measure number of connections per second using wrk. +| | ... +| | ... | *Arguments:* +| | ... | - ${profile} - The name of the wrk traffic profile defining the +| | ... | traffic. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Measure connections per second \| wrk-bw-1url-1core-50con \| +| | ... +| | [Arguments] | ${profile} +| | ... +| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${tg_if1} | ${tg_if2} +| | ${output}= | Run wrk | ${tg} | ${profile} | ${tg_numa} | cps +| | Set test message | ${output} -- cgit 1.2.3-korg