CSIT-664: Refactor setups and teardowns 55/7055/18
authorTibor Frank <tifrank@cisco.com>
Thu, 8 Jun 2017 12:45:26 +0000 (14:45 +0200)
committerTibor Frank <tifrank@cisco.com>
Tue, 13 Jun 2017 07:00:09 +0000 (09:00 +0200)
 - Add suite setup for performance IPSec tests
 - Add test teardown for performance SNAT tests
 - Add setups and teardowns for functional tests
 - Clean up the code

Change-Id: Ia456e9f3ff0f0f2bb9a03f692f27c7f9a2817621
Signed-off-by: Tibor Frank <tifrank@cisco.com>
128 files changed:
nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot
nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot
nsh_sfc_tests/func/sff/eth2p-ethip4-sfc-sff-func.robot
resources/libraries/robot/default.robot
resources/libraries/robot/fds/default.robot [new file with mode: 0644]
resources/libraries/robot/honeycomb/persistence.robot
resources/libraries/robot/honeycomb/provider_backbone_bridge.robot
resources/libraries/robot/ipsec.robot
resources/libraries/robot/performance.robot
tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot
tests/func/fds/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot
tests/func/fds/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot
tests/func/honeycomb/__init__.robot
tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot
tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot
tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot
tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot
tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot
tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot
tests/func/honeycomb/mgmt-notif-apihcnc-func.robot
tests/func/honeycomb/mgmt-statepersist-apihc-func.robot
tests/func/ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot
tests/func/ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot
tests/func/ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot
tests/func/ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot
tests/func/ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot
tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot
tests/func/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot
tests/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot
tests/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot
tests/func/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot
tests/func/l2xc/eth2p-eth-l2xcbase-func.robot
tests/func/lisp/api-crud-lisp-func.robot
tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot
tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot
tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot
tests/func/lisp/eth2p-ethip4lisp-ip4base-func.robot
tests/func/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot
tests/func/lisp/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip4lispgpe-ip4base-func.robot
tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot
tests/func/lisp/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip4lispgpe-ip6base-func.robot
tests/func/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot
tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot
tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot
tests/func/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot
tests/func/lisp/eth2p-ethip6lispgpe-ip4base-func.robot
tests/func/lisp/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip6lispgpe-ip6base-func.robot
tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot
tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot
tests/func/tap/api-crud-tap-func.robot
tests/func/tap/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot
tests/func/tap/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot
tests/func/tap/eth2p-ethip4-ip4base-eth-1tap-func.robot
tests/func/vhost/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot
tests/perf/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot
tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot
tests/perf/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
tests/perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot
tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot
tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
tests/perf/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot
tests/perf/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot

index 5eef6c0..519145e 100644 (file)
@@ -20,7 +20,7 @@
 | Resource | resources/libraries/robot/ipv4.robot
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST
 | Suite Setup | Run Keywords
-| ... | Setup all DUTs before test | AND
+| ... | Configure all DUTs before test | AND
 | ... | Setup all TGs before traffic script | AND
 | ... | Update All Interface Data On All Nodes | ${nodes} | AND
 | ... | Setup DUT nodes for 'Proxy Inbound' functional testing
index 7fc4631..fc51526 100644 (file)
@@ -20,7 +20,7 @@
 | Resource | resources/libraries/robot/ipv4.robot
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST
 | Suite Setup | Run Keywords
-| ... | Setup all DUTs before test | AND
+| ... | Configure all DUTs before test | AND
 | ... | Setup all TGs before traffic script | AND
 | ... | Update All Interface Data On All Nodes | ${nodes} | AND
 | ... | Setup DUT nodes for 'Proxy Outbound' functional testing
index c70a92a..122733a 100644 (file)
@@ -20,7 +20,7 @@
 | Resource | resources/libraries/robot/ipv4.robot
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST
 | Suite Setup | Run Keywords
-| ... | Setup all DUTs before test | AND
+| ... | Configure all DUTs before test | AND
 | ... | Setup all TGs before traffic script | AND
 | ... | Update All Interface Data On All Nodes | ${nodes} | AND
 | ... | Setup DUT nodes for 'SFF' functional testing
index 932fcae..68d3997 100644 (file)
@@ -12,6 +12,7 @@
 # limitations under the License.
 
 *** Settings ***
+| Resource | resources/libraries/robot/qemu.robot
 | Variables | resources/libraries/python/topology.py
 | Variables | resources/libraries/python/VatHistory.py
 | Library | resources.libraries.python.topology.Topology
@@ -21,6 +22,7 @@
 | Library | resources.libraries.python.SchedUtils
 | Library | resources.libraries.python.TGSetup
 | Library | resources.libraries.python.L2Util
+| Library | resources.libraries.python.Tap
 | Library | resources/libraries/python/VppConfigGenerator.py
 | Library | resources/libraries/python/VppCounters.py
 | Library | Collections
 | | Show VAT History On All DUTs | ${nodes}
 | | Vpp Show Errors On All DUTs | ${nodes}
 | | Verify VPP PID in Teardown
+
+| Tear down LISP functional test
+| | [Documentation] | Common test teardown for functional tests with LISP.
+| | ...
+| | Show Packet Trace on All DUTs | ${nodes}
+| | Show VAT History On All DUTs | ${nodes}
+| | Show Vpp Settings | ${nodes['DUT1']}
+| | Show Vpp Settings | ${nodes['DUT2']}
+| | Vpp Show Errors On All DUTs | ${nodes}
+| | Verify VPP PID in Teardown
+
+| Tear down LISP functional test with QEMU
+| | [Documentation] | Common test teardown for functional tests with LISP and\
+| | ... | QEMU.
+| | ...
+| | ... | *Arguments:*
+| | ... | - vm_node - VM to stop. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Tear down LISP functional test with QEMU \| ${vm_node} \|
+| | ...
+| | [Arguments] | ${vm_node}
+| | ...
+| | Show Packet Trace on All DUTs | ${nodes}
+| | Show VAT History On All DUTs | ${nodes}
+| | Show Vpp Settings | ${nodes['DUT1']}
+| | Show Vpp Settings | ${nodes['DUT2']}
+| | Vpp Show Errors On All DUTs | ${nodes}
+| | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
+| | Verify VPP PID in Teardown
+
+| Set up TAP functional test
+| | [Documentation] | Common test setup for functional tests with TAP.
+| | ...
+| | Set up functional test
+| | Clean Up Namespaces | ${nodes['DUT1']}
+
+| Tear down TAP functional test
+| | [Documentation] | Common test teardown for functional tests with TAP.
+| | ...
+| | Tear down functional test
+| | Clean Up Namespaces | ${nodes['DUT1']}
+
+| Tear down TAP functional test with Linux bridge
+| | [Documentation] | Common test teardown for functional tests with TAP and
+| | ... | a Linux bridge.
+| | ...
+| | ... | *Arguments:*
+| | ... | - bid_TAP - Bridge name. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Tear down TAP functional test with Linux bridge \| ${bid_TAP} \|
+| | ...
+| | [Arguments] | ${bid_TAP}
+| | ...
+| | Tear down functional test
+| | Linux Del Bridge | ${nodes['DUT1']} | ${bid_TAP}
+| | Clean Up Namespaces | ${nodes['DUT1']}
diff --git a/resources/libraries/robot/fds/default.robot b/resources/libraries/robot/fds/default.robot
new file mode 100644 (file)
index 0000000..83657e9
--- /dev/null
@@ -0,0 +1,64 @@
+# Copyright (c) 2017 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 ***
+| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Library | resources.libraries.python.VatHistory
+| Library | resources.libraries.python.Trace
+| ...
+| Documentation | Test setup and test teardown of FDS functional tests.
+
+*** Keywords ***
+| Set up FDS functional test
+| | [Documentation]
+| | ... |
+| | ...
+| | ... | *Arguments:*
+| | ... | - nodes - Nodes to reset VAT command history for. Type: dictionary
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Set up FDS functional test \| ${nodes} \|
+| | ...
+| | [Arguments] | ${nodes}
+| | ...
+| | Configure all DUTs before test
+| | Save VPP PIDs
+| | Configure all TGs for traffic script
+| | Reset VAT History On All DUTs | ${nodes}
+
+| Tear down FDS functional test
+| | [Documentation]
+| | ... |
+| | ...
+| | ... | *Arguments:*
+| | ... | - nodes - Nodes to reset VAT command history for. Type: dictionary
+| | ... | - dut1_node - Node nr 1 where to clean qemu. Type: dictionary
+| | ... | - qemu_node1 - VM nr 1 node info dictionary. Type: string
+| | ... | - dut2_node - Node nr 2 where to clean qemu. Type: dictionary
+| | ... | - qemu_node2 - VM nr 2 node info dictionary. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Tear down FDS functional test \| ${nodes}\
+| | ... | \| ${dut1_node} \| ${qemu_node1} \| ${dut2_node} \| ${qemu_node2} \|
+| | ...
+| | [Arguments] | ${nodes} | ${dut1_node} | ${qemu_node1} | ${dut2_node}
+| | ... | ${qemu_node2}
+| | ...
+| | Show Packet Trace on All DUTs | ${nodes}
+| | Show VAT History On All DUTs | ${nodes}
+| | Tear down QEMU | ${dut1_node} | ${qemu_node1} | qemu_node1
+| | Tear down QEMU | ${dut2_node} | ${qemu_node2} | qemu_node2
+| | Verify VPP PID in Teardown
index 69f5f92..6fe439a 100644 (file)
@@ -70,7 +70,7 @@
 | | Wait until keyword succeeds | 2min | 20sec
 | | ... | Check Honeycomb startup state | ${node}
 
-| Restart Honeycomb and VPP
+| Restart Honeycomb and VPP in pesistence test
 | | [Documentation] | Stops Honeycomb, restarts VPP and then starts Honeycomb\
 | | ... | again.
 | | ...
index bb8aa78..92145f8 100644 (file)
@@ -28,7 +28,7 @@
 | | ... | Type - dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Honeycomb creates PBB sub interface \| ${node} \| ${super_if}\
+| | ... | \| Honeycomb creates PBB sub-interface \| ${node} \| ${super_if}\
 | | ... | \| ${cfg_pbb_sub_if_1} \|
 | | ...
 | | [Arguments] | ${node} | ${super_if} | ${params}
@@ -47,7 +47,7 @@
 | | ... | - sub_if_id - Sub-interface ID. Type: string
 | | ...
 | | ... | *Example:*
-| | ... | \| Honeycomb Removes PBB sub interface\
+| | ... | \| Honeycomb removes PBB sub-interface\
 | | ... | \| ${node} \| ${super_if} \|
 | | ...
 | | [Arguments] | ${node} | ${super_if}
@@ -66,7 +66,7 @@
 | | ... | Type - dictionary
 | | ...
 | | ... | *Example:*
-| | ... | \| Honeycomb fails to create PBB sub interface\
+| | ... | \| Honeycomb fails to create PBB sub-interface\
 | | ... | \| ${node} \| ${super_if} \| ${cfg_pbb_sub_if_no_vlan_tag} \|
 | | ...
 | | [Arguments] | ${node} | ${super_if} | ${params}
index 7b8fab5..73f7179 100644 (file)
 | | ... | \| Configure topology for IPv4 IPsec testing \|
 | | Configure path for IPSec test
 | | Set Interface Address | ${dut_node} | ${dut_if} | ${dut_if_ip4}
-| | ...                   | ${ip4_plen}
+| | ... | ${ip4_plen}
 | | Set Interface Address | ${dut_node} | ${dut_lo} | ${dut_lo_ip4}
-| | ...                   | ${ip4_plen}
+| | ... | ${ip4_plen}
 | | dut1_v4.Set Arp | ${dut_if} | ${tg_if_ip4} | ${tg_if_mac}
 | | Vpp Route Add | ${dut_node} | ${tg_lo_ip4} | ${ip4_plen} | ${tg_if_ip4}
-| | ...           | ${dut_if}
+| | ... | ${dut_if}
 | | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip4}
 | | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip4}
 | | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip4}
 | | Add IP Neighbor | ${dut_node} | ${dut_if} | ${tg_if_ip6} | ${tg_if_mac}
 | | Vpp All RA Suppress Link Layer | ${nodes}
 | | Vpp Route Add | ${dut_node} | ${tg_lo_ip6} | ${ip6_plen_rt} | ${tg_if_ip6}
-| | ...           | ${dut_if}
+| | ... | ${dut_if}
 | | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip6}
 | | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip6}
 | | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip6}
 | | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1000} \| ${1001} \
 | | ... | \| 192.168.4.4 \| 192.168.3.3 \| 192.168.100.3 \| 192.168.100.2 \|
 | | [Arguments] | ${node} | ${interface} | ${crypto_alg} | ${crypto_key}
-| | ...         | ${integ_alg} | ${integ_key} | ${l_spi} | ${r_spi} | ${l_ip}
-| | ...         | ${r_ip} | ${l_tunnel}=${None} | ${r_tunnel}=${None}
+| | ... | ${integ_alg} | ${integ_key} | ${l_spi} | ${r_spi} | ${l_ip}
+| | ... | ${r_ip} | ${l_tunnel}=${None} | ${r_tunnel}=${None}
 | | Set Test Variable | ${l_sa_id} | ${10}
 | | Set Test Variable | ${r_sa_id} | ${20}
 | | ${spd_id}= | Set Variable | ${1}
 | | ${p_hi}= | Set Variable | ${100}
 | | ${p_lo}= | Set Variable | ${10}
 | | VPP IPsec Add SAD Entry | ${node} | ${l_sa_id} | ${l_spi} | ${crypto_alg}
-| | ...                     | ${crypto_key} | ${integ_alg} | ${integ_key}
-| | ...                     | ${l_tunnel} | ${r_tunnel}
+| | ... | ${crypto_key} | ${integ_alg} | ${integ_key}
+| | ... | ${l_tunnel} | ${r_tunnel}
 | | VPP IPsec Add SAD Entry | ${node} | ${r_sa_id} | ${r_spi} | ${crypto_alg}
-| | ...                     | ${crypto_key} | ${integ_alg} | ${integ_key}
-| | ...                     | ${r_tunnel} | ${l_tunnel}
+| | ... | ${crypto_key} | ${integ_alg} | ${integ_key}
+| | ... | ${r_tunnel} | ${l_tunnel}
 | | VPP IPsec Add SPD | ${node} | ${spd_id}
 | | VPP IPsec SPD Add If | ${node} | ${spd_id} | ${interface}
 | | ${action}= | Policy Action Bypass
 | | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_hi} | ${action}
-| | ...                     | inbound=${TRUE} | proto=${ESP_PROTO}
+| | ... | inbound=${TRUE} | proto=${ESP_PROTO}
 | | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_hi} | ${action}
-| | ...                     | inbound=${FALSE} | proto=${ESP_PROTO}
+| | ... | inbound=${FALSE} | proto=${ESP_PROTO}
 | | ${action}= | Policy Action Protect
 | | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_lo} | ${action}
-| | ...                     | sa_id=${r_sa_id} | laddr_range=${l_ip}
-| | ...                     | raddr_range=${r_ip} | inbound=${TRUE}
+| | ... | sa_id=${r_sa_id} | laddr_range=${l_ip}
+| | ... | raddr_range=${r_ip} | inbound=${TRUE}
 | | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_lo} | ${action}
-| | ...                     | sa_id=${l_sa_id} | laddr_range=${l_ip}
-| | ...                     | raddr_range=${r_ip} | inbound=${FALSE}
+| | ... | sa_id=${l_sa_id} | laddr_range=${l_ip}
+| | ... | raddr_range=${r_ip} | inbound=${FALSE}
 
 | Update IPSec SA keys
 | | [Documentation] | Update IPsec SA keys on VPP node.
 | | ... | \| Update IPSec SA keys \| ${nodes['DUT1']} \
 | | ... | \| 10 \| 20 \| sixteenbytes_key \| twentybytessecretkey \|
 | | [Arguments] | ${node} | ${l_sa_id} | ${r_sa_id} | ${crypto_key}
-| | ...         | ${integ_key}
+| | ... | ${integ_key}
 | | VPP IPsec SA Set Key | ${dut_node} | ${l_sa_id} | ${crypto_key}
-| | ...                  | ${integ_key}
+| | ... | ${integ_key}
 | | VPP IPsec SA Set Key | ${dut_node} | ${r_sa_id} | ${crypto_key}
-| | ...                  | ${integ_key}
+| | ... | ${integ_key}
 
 | Send IPsec Packet and verify ESP encapsulation in received packet
 | | [Documentation] | Send IPsec packet from TG to DUT. Receive IPsec packet\
-| | ...             | from DUT on TG and verify ESP encapsulation.
+| | ... | from DUT on TG and verify ESP encapsulation.
 | | ...
 | | ... | *Arguments:*
 | | ... | - node - TG node. Type: dictionary
 | | ... | *Example:*
 | | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \|
 | | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \|
-| | ... | \| Send IPsec Packet and verify ESP encapsulation in received packet \| ${nodes['TG']} \| eth1 \
+| | ... | \| Send IPsec Packet and verify ESP encapsulation in received packet\
+| | ... | \| ${nodes['TG']} \| eth1 \
 | | ... | \| 52:54:00:d4:d8:22 \| ${encr_alg} \| sixteenbytes_key \
 | | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1001} \| ${1000} \
 | | ... | \| 192.168.3.3 \| 192.168.4.4 \| 192.168.100.2 \| 192.168.100.3 \|
 | | [Arguments] | ${node} | ${interface} | ${dst_mac} | ${crypto_alg}
-| | ...         | ${crypto_key} | ${integ_alg} | ${integ_key} | ${l_spi}
-| | ...         | ${r_spi} | ${l_ip} | ${r_ip} | ${l_tunnel}=${None}
-| | ...         | ${r_tunnel}=${None}
+| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} | ${l_spi}
+| | ... | ${r_spi} | ${l_ip} | ${r_ip} | ${l_tunnel}=${None}
+| | ... | ${r_tunnel}=${None}
 | | ${src_mac}= | Get Interface Mac | ${node} | ${interface}
 | | ${if_name}= | Get Interface Name | ${node} | ${interface}
 | | ${args}= | Traffic Script Gen Arg | ${if_name} | ${if_name} | ${src_mac}
-| | ...      | ${dst_mac} | ${l_ip} | ${r_ip}
+| | ... | ${dst_mac} | ${l_ip} | ${r_ip}
 | | ${crypto_alg_str}= | Get Crypto Alg Scapy Name | ${crypto_alg}
 | | ${integ_alg_str}= | Get Integ Alg Scapy Name | ${integ_alg}
 | | ${args}= | Catenate | ${args} | --crypto_alg ${crypto_alg_str}
-| | ...      | --crypto_key ${crypto_key} | --integ_alg ${integ_alg_str}
-| | ...      | --integ_key ${integ_key} | --l_spi ${l_spi} | --r_spi ${r_spi}
+| | ... | --crypto_key ${crypto_key} | --integ_alg ${integ_alg_str}
+| | ... | --integ_key ${integ_key} | --l_spi ${l_spi} | --r_spi ${r_spi}
 | | ${args}= | Set Variable If | "${l_tunnel}" == "${None}" | ${args}
 | | ... | ${args} --src_tun ${l_tunnel}
 | | ${args}= | Set Variable If | "${r_tunnel}" == "${None}" | ${args}
 | | ... | ${args} --dst_tun ${r_tunnel}
 | | Run Traffic Script On Node | ipsec.py | ${node} | ${args}
+
+| Set up IPv4 IPSec functional test
+| | [Documentation]
+| | ... | Set up IPv4 IPSec functional test
+| | ...
+| | Set up functional test
+| | Configure topology for IPv4 IPsec testing
+
+| Set up IPv6 IPSec functional test
+| | [Documentation]
+| | ... | Set up IPv6 IPSec functional test
+| | ...
+| | Set up functional test
+| | Configure topology for IPv6 IPsec testing
+
+| Tear down IPSec functional test
+| | [Documentation]
+| | ... | Tear down IPSec functional test
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Tear down IPSec functional test \| ${dut_node} \|
+| | ...
+| | [Arguments] | ${dut_node}
+| | ...
+| | VPP IPsec Show | ${dut_node}
+| | Tear down functional test
index d0feed2..b934dc1 100644 (file)
 | | ... | Tear down guest VM with dpdk-testpmd | ${dut1} | ${dut1_vm_refs}
 | | Run keyword unless | ${dut2_node}==${None}
 | | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs}
+
+| Set up IPSec performance test suite
+| | [Documentation]
+| | ... | Suite preparation phase that sets default startup configuration of
+| | ... | VPP on all DUTs. Updates interfaces on all nodes and sets global
+| | ... | variables used in test cases based on interface model provided as an
+| | ... | argument. Initializes traffic generator.
+| | ... | Then it configures crypto device and kernel module on all DUTs.
+| | ...
+| | ... | *Arguments:*
+| | ... | - topology_type - Topology type. Type: string
+| | ... | - nic_model - Interface model. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Set up IPSec performance test suite \| L2 \
+| | ... | \| Intel-X520-DA2 \|
+| | ...
+| | [Arguments] | ${topology_type} | ${nic_model}
+| | ...
+| | Set up 3-node performance topology with DUT's NIC model
+| | ... | ${topology_type} | ${nic_model}
+| | Configure crypto device on all DUTs | force_init=${True}
+| | Configure kernel module on all DUTs | igb_uio | force_load=${True}
+
+| Tear down performance discovery test with SNAT
+| | [Documentation] | Common test teardown for ndrdisc and pdrdisc performance \
+| | ... | tests with SNAT feature used.
+| | ...
+| | ... | *Arguments:*
+| | ... | - rate - Rate for sending packets. Type: string
+| | ... | - framesize - L2 Frame Size [B]. Type: integer
+| | ... | - topology_type - Topology type. Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Tear down performance discovery test with SNAT \| 4.0mpps \| 64 \
+| | ... | \| ${traffic_profile} \|
+| | ...
+| | [Arguments] | ${rate} | ${framesize} | ${traffic_profile}
+| | ...
+| | Tear down performance discovery test | ${rate}pps | ${framesize}
+| | ... | ${traffic_profile}
+| | Show SNAT verbose | ${dut1}
+| | Show SNAT verbose | ${dut2}
index de7ae2d..3e89c63 100644 (file)
@@ -63,9 +63,9 @@
 | | ... | ${tg_to_dut_if2_mac}
 | | When DHCP Proxy Config | ${dut_node} | ${dhcp_server_ip}
 | | ... | ${dut_to_tg_if1_ip}
-| | Then Send DHCP messages and check answer | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2}
-| | ... | ${dhcp_server_ip} | ${tg_to_dut_if2_mac} | ${client_ip}
-| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_ip}
+| | Then Send DHCP messages and check answer | ${tg_node} | ${tg_to_dut_if1}
+| | ... | ${tg_to_dut_if2} | ${dhcp_server_ip} | ${tg_to_dut_if2_mac}
+| | ... | ${client_ip} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_ip}
 
 | TC02: VPP proxy ignores invalid DHCPv4 request
 | | [Documentation] |
index 9656a4a..dc1ab41 100644 (file)
 | Resource | resources/libraries/robot/testing_path.robot
 | Resource | resources/libraries/robot/double_qemu_setup.robot
 | Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/fds/default.robot
 | Library  | resources.libraries.python.Trace
+| ...
 | Force Tags | HW_ENV | VM_ENV | SKIP_PATCH
-| Test Setup | Run Keywords | Configure all DUTs before test
-| ...        | AND          | Save VPP PIDs
-| ...        | AND          | Configure all TGs for traffic script
-| ...        | AND          | Reset VAT History On All DUTs | ${nodes}
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ...           | AND          | Show VAT History On All DUTs | ${nodes}
-| ...           | AND          | Tear down QEMU | ${dut1_node} | ${qemu_node1}
-| ...                          | qemu_node1
-| ...           | AND          | Tear down QEMU | ${dut2_node} | ${qemu_node2}
-| ...                          | qemu_node2
-| ...           | AND          | Verify VPP PID in Teardown
+| ...
+| Test Setup | Set up FDS functional test | ${nodes}
+| ...
+| Test Teardown | Tear down FDS functional test | ${nodes}
+| ... | ${dut1_node} | ${qemu_node1} | ${dut2_node} | ${qemu_node2}
+| ...
 | Documentation | *Provider network FDS related.*
 | ...
 | ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG
 *** Test Cases ***
 | Provider network test cases with provider physical networks (VLAN)
 | | [Documentation] | Ping among all ports inside the same network should pass.
-| | ...             | a) test l2 connectivity inside every network
-| | ...             | b) test l2 connectivity between networks
+| | ... | a) test l2 connectivity inside every network
+| | ... | b) test l2 connectivity between networks
 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV
-| | Given Configure path in 3-node circular topology | ${nodes['TG']} | ${nodes['DUT1']}
-| | ... | ${nodes['DUT2']} | ${nodes['TG']}
+| | Given Configure path in 3-node circular topology | ${nodes['TG']}
+| | ... | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
 | | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if_ip}
 | | ... | ${prefix_length}
 | | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if_ip}
 | | ${dut2_vhosts}= | And Create List | ${vhost_if1_DUT2} | ${vhost_if2_DUT2}
 | | ... | ${vhost_if3_DUT2} | ${vhost_if4_DUT2}
 | | When Configure QEMU vhost and run it | ${dut1_node}
-| | ...                   | ${sock1}
-| | ...                   | ${sock2}
-| | ...                   | ${sock3}
-| | ...                   | ${sock4}
-| | ...                   | ${dut1_blue1}
-| | ...                   | ${dut1_blue2}
-| | ...                   | ${dut1_red1}
-| | ...                   | ${dut1_red2}
-| | ...                   | ${prefix_length}
-| | ...                   | qemu_node1
-| | ...                   | 04
+| | ... | ${sock1}
+| | ... | ${sock2}
+| | ... | ${sock3}
+| | ... | ${sock4}
+| | ... | ${dut1_blue1}
+| | ... | ${dut1_blue2}
+| | ... | ${dut1_red1}
+| | ... | ${dut1_red2}
+| | ... | ${prefix_length}
+| | ... | qemu_node1
+| | ... | 04
 | | And Configure QEMU vhost and run it | ${dut2_node}
-| | ...                   | ${sock1}
-| | ...                   | ${sock2}
-| | ...                   | ${sock3}
-| | ...                   | ${sock4}
-| | ...                   | ${dut2_blue1}
-| | ...                   | ${dut2_blue2}
-| | ...                   | ${dut2_red1}
-| | ...                   | ${dut2_red2}
-| | ...                   | ${prefix_length}
-| | ...                   | qemu_node2
-| | ...                   | 06
+| | ... | ${sock1}
+| | ... | ${sock2}
+| | ... | ${sock3}
+| | ... | ${sock4}
+| | ... | ${dut2_blue1}
+| | ... | ${dut2_blue2}
+| | ... | ${dut2_red1}
+| | ... | ${dut2_red2}
+| | ... | ${prefix_length}
+| | ... | qemu_node2
+| | ... | 06
 | | And Setup VLAN and BD on Dut | ${dut1_node} | ${dut1_to_dut2}
 | | ... | @{dut1_vhosts}
 | | And Setup VLAN and BD on Dut | ${dut2_node} | ${dut2_to_dut1}
 *** Keywords ***
 | Setup VLAN and BD on Dut
 | | [Documentation] | Setup VLAN and bridge domain on specific DUT and
-| | ...             | subsequently interconnect them properly. Also set VLAN tag
-| | ...             | rewrite on vhosts.
+| | ... | subsequently interconnect them properly. Also set VLAN tag
+| | ... | rewrite on vhosts.
 | | ...
 | | ... | *Arguments:*
 | | ... | - dut_node - Node where to setup VLAN and BD. Type: dict
 | | ... | - interface - Interface where to create VLAN sub-interface.
-| | ... |               Type: string
+| | ... | Type: string
 | | ... | - vhosts - List containing vhost interfaces.
 | | ...
 | | ... | *Example:*
 
 | Positive Scenario Ping From DUT1 - Intra network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test connectivity.
+| | ... | order to test connectivity.
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | ${namespace2}
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | ${namespace3}
 
 | Positive Scenario Ping From DUT1 - Inter network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test connectivity.
+| | ... | order to test connectivity.
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace2}
 
 | Positive Scenario Ping From DUT2 - Intra network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test connectivity.
+| | ... | order to test connectivity.
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | ${namespace2}
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | ${namespace3}
 
 | Positive Scenario Ping From DUT2 - Inter network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test connectivity.
+| | ... | order to test connectivity.
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace2}
 
 | Negative Scenario Ping From DUT1 - Intra network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test unreachability of namespaces.
+| | ... | order to test unreachability of namespaces.
 | | Run keyword and expect error | Ping Not Successful
 | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1}
 | | ... | ${namespace1}
 
 | Negative Scenario Ping From DUT1 - Inter network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test unreachability of namespaces.
+| | ... | order to test unreachability of namespaces.
 | | Run keyword and expect error | Ping Not Successful
 | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1}
 | | ... | ${namespace1}
 
 | Negative Scenario Ping From DUT2 - Intra network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test unreachability of namespaces.
+| | ... | order to test unreachability of namespaces.
 | | Run keyword and expect error | Ping Not Successful
 | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1}
 | | ... | ${namespace1}
 
 | Negative Scenario Ping From DUT2 - Inter network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test unreachability of namespaces.
+| | ... | order to test unreachability of namespaces.
 | | Run keyword and expect error | Ping Not Successful
 | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1}
 | | ... | ${namespace1}
index 80312fb..0a2cd0b 100644 (file)
 | Resource | resources/libraries/robot/testing_path.robot
 | Resource | resources/libraries/robot/double_qemu_setup.robot
 | Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/fds/default.robot
 | Library  | resources.libraries.python.Trace
+| ...
 | Force Tags | HW_ENV | VM_ENV | SKIP_PATCH
-| Test Setup | Run Keywords | Configure all DUTs before test
-| ...        | AND          | Save VPP PIDs
-| ...        | AND          | Configure all TGs for traffic script
-| ...        | AND          | Reset VAT History On All DUTs | ${nodes}
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ...           | AND          | Show VAT History On All DUTs | ${nodes}
-| ...           | AND          | Tear down QEMU | ${dut1_node} | ${qemu_node1}
-| ...                          | qemu_node1
-| ...           | AND          | Tear down QEMU | ${dut2_node} | ${qemu_node2}
-| ...                          | qemu_node2
-| ...           | AND          | Verify VPP PID in Teardown
+| ...
+| Test Setup | Set up FDS functional test | ${nodes}
+| ...
+| Test Teardown | Tear down FDS functional test | ${nodes}
+| ... | ${dut1_node} | ${qemu_node1} | ${dut2_node} | ${qemu_node2}
+| ...
 | Documentation | *Tenant network FDS related.*
 | ...
 | ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG
@@ -77,8 +74,8 @@
 *** Test Cases ***
 | L2 test cases with tenant networks (VXLAN)
 | | [Documentation] | Ping among all ports inside the same network should pass.
-| | ...             | a) test l2 connectivity inside every network
-| | ...             | b) test l2 connectivity between networks
+| | ... | a) test l2 connectivity inside every network
+| | ... | b) test l2 connectivity between networks
 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV
 | | Given Configure path in 3-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
 | | ${dut2_vhosts}= | And Create List | ${vhost_if1_DUT2} | ${vhost_if2_DUT2}
 | | ... | ${vhost_if3_DUT2} | ${vhost_if4_DUT2}
 | | When Configure QEMU vhost and run it | ${dut1_node}
-| | ...                   | ${sock1}
-| | ...                   | ${sock2}
-| | ...                   | ${sock3}
-| | ...                   | ${sock4}
-| | ...                   | ${dut1_blue1}
-| | ...                   | ${dut1_blue2}
-| | ...                   | ${dut1_red1}
-| | ...                   | ${dut1_red2}
-| | ...                   | ${prefix_length}
-| | ...                   | qemu_node1
-| | ...                   | 04
+| | ... | ${sock1}
+| | ... | ${sock2}
+| | ... | ${sock3}
+| | ... | ${sock4}
+| | ... | ${dut1_blue1}
+| | ... | ${dut1_blue2}
+| | ... | ${dut1_red1}
+| | ... | ${dut1_red2}
+| | ... | ${prefix_length}
+| | ... | qemu_node1
+| | ... | 04
 | | And Configure QEMU vhost and run it | ${dut2_node}
-| | ...                   | ${sock1}
-| | ...                   | ${sock2}
-| | ...                   | ${sock3}
-| | ...                   | ${sock4}
-| | ...                   | ${dut2_blue1}
-| | ...                   | ${dut2_blue2}
-| | ...                   | ${dut2_red1}
-| | ...                   | ${dut2_red2}
-| | ...                   | ${prefix_length}
-| | ...                   | qemu_node2
-| | ...                   | 06
+| | ... | ${sock1}
+| | ... | ${sock2}
+| | ... | ${sock3}
+| | ... | ${sock4}
+| | ... | ${dut2_blue1}
+| | ... | ${dut2_blue2}
+| | ... | ${dut2_red1}
+| | ... | ${dut2_red2}
+| | ... | ${prefix_length}
+| | ... | qemu_node2
+| | ... | 06
 | | And Setup VXLAN and BD on Dut | ${dut1_node} | ${dut1_if_ip} | ${dut2_if_ip}
 | | ... | @{dut1_vhosts}
 | | And Setup VXLAN and BD on Dut | ${dut2_node} | ${dut2_if_ip} | ${dut1_if_ip}
 *** Keywords ***
 | Setup VXLAN and BD on Dut
 | | [Documentation] | Setup VXLAN and bridge domain on specific DUT and
-| | ...             | subsequently interconnect them properly.
+| | ... | subsequently interconnect them properly.
 | | ...
 | | ... | *Arguments:*
 | | ... | - dut_node - Node where to setup vxlan and BD. Type: dict
 | | ... | ${dut_node} | ${bid_b} | learn=${TRUE}
 | | Create bridge domain
 | | ... | ${dut_node} | ${bid_r} | learn=${TRUE}
-| | ${vxlan1_if}= | Create VXLAN interface     | ${dut_node} | ${vni_blue}
-| |                 | ...  | ${src_ip} | ${dst_ip}
-| | ${vxlan2_if}= | Create VXLAN interface     | ${dut_node} | ${vni_red}
-| |                 | ...  | ${src_ip} | ${dst_ip}
+| | ${vxlan1_if}= | Create VXLAN interface | ${dut_node} | ${vni_blue}
+| | ... | ${src_ip} | ${dst_ip}
+| | ${vxlan2_if}= | Create VXLAN interface | ${dut_node} | ${vni_red}
+| | ... | ${src_ip} | ${dst_ip}
 | | Add interface to bridge domain
 | | ... | ${dut_node} | ${vxlan1_if} | ${bid_b} | 0
 | | Add interface to bridge domain
 
 | Positive Scenario Ping From DUT1 - Intra network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test connectivity.
+| | ... | order to test connectivity.
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | ${namespace2}
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | ${namespace3}
 
 | Positive Scenario Ping From DUT1 - Inter network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test connectivity.
+| | ... | order to test connectivity.
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace2}
 
 | Positive Scenario Ping From DUT2 - Intra network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test connectivity.
+| | ... | order to test connectivity.
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | ${namespace2}
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | ${namespace3}
 
 | Positive Scenario Ping From DUT2 - Inter network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test connectivity.
+| | ... | order to test connectivity.
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace1}
 | | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace2}
 
 | Negative Scenario Ping From DUT1 - Intra network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test unreachability of namespaces.
+| | ... | order to test unreachability of namespaces.
 | | Run keyword and expect error | Ping Not Successful
 | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1}
 | | ... | ${namespace1}
 | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2}
 | | ... | ${namespace4}
 
-
 | Negative Scenario Ping From DUT1 - Inter network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test unreachability of namespaces.
+| | ... | order to test unreachability of namespaces.
 | | Run keyword and expect error | Ping Not Successful
 | | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1}
 | | ... | ${namespace1}
 
 | Negative Scenario Ping From DUT2 - Intra network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test unreachability of namespaces.
+| | ... | order to test unreachability of namespaces.
 | | Run keyword and expect error | Ping Not Successful
 | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1}
 | | ... | ${namespace1}
 | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2}
 | | ... | ${namespace4}
 
-
 | Negative Scenario Ping From DUT2 - Inter network
 | | [Documentation] | Send ping packets from specified namespaces to other in
-| | ...             | order to test unreachability of namespaces.
+| | ... | order to test unreachability of namespaces.
 | | Run keyword and expect error | Ping Not Successful
 | | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1}
 | | ... | ${namespace1}
index 128f19f..3f79a6a 100644 (file)
 | Library | resources/libraries/python/honeycomb/HcPersistence.py
 | Resource | resources/libraries/robot/default.robot
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
-| Suite Setup | Run Keywords | Setup All DUTs Before Test | AND
+| ...
+| Suite Setup | Run Keywords | Configure all DUTs before test | AND
 | ... | Configure Honeycomb for testing | ${node} | AND
 | ... | Configure ODL Client for testing | ${node} | AND
 | ... | Set Global Variable | ${node}
-| Suite Teardown
-| ... | Archive Honeycomb log file | ${node}
+| ...
+| Suite Teardown | Archive Honeycomb log file | ${node}
 
 *** Keywords ***
 | Configure Honeycomb for testing
@@ -35,7 +36,7 @@
 | | Configure Persistence | ${node} | disable
 | | Configure jVPP timeout | ${node} | ${14}
 | | Clear Persisted Honeycomb Configuration | ${node}
-| | Setup Honeycomb Service On DUTs | ${node}
+| | Configure Honeycomb service on DUTs | ${node}
 
 | Configure ODL Client for testing
 | | [Arguments] | ${node}
index 9d94d3d..b18b111 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/access_control_lists.robot
 | Variables | resources/test_data/honeycomb/acl.py
+| ...
 | Suite Teardown | Restart Honeycomb and VPP | ${node}
+| ...
 | Documentation | *Honeycomb access control lists test suite.*
+| ...
 | Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Honeycomb can create ACL classify table
 | | [Documentation] | Check if Honeycomb API can create an ACL table.
+| | ...
 | | Given ACL table from Honeycomb should not exist
 | | ... | ${node} | ${hc_acl_table['name']}
 | | And ACL table from VAT should not exist
@@ -39,6 +43,7 @@
 
 | TC02: Honeycomb can remove ACL table
 | | [Documentation] | Check if Honeycomb API can delete an ACL table.
+| | ...
 | | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper}
 | | And ACL table from VAT should be
 | | ... | ${node} | ${table_index} | ${vat_acl_table}
@@ -50,6 +55,7 @@
 
 | TC03: Honeycomb manages more than one ACL table
 | | [Documentation] | Check if Honeycomb API can create another ACL table.
+| | ...
 | | Given ACL table from Honeycomb should not exist
 | | ... | ${node} | ${hc_acl_table['name']}
 | | And ACL table from VAT should not exist
@@ -65,6 +71,7 @@
 
 | TC04: Honeycomb can add ACL session to table
 | | [Documentation] | Check if Honeycomb API can add an ACL session to a table.
+| | ...
 | | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper}
 | | And ACL table from VAT should be
 | | ... | ${node} | ${table_index} | ${vat_acl_table}
@@ -77,6 +84,7 @@
 
 | TC05: Honeycomb can remove ACL session
 | | [Documentation] | Check if Honeycomb API can remove an ACL session.
+| | ...
 | | Given ACL session from Honeycomb should be
 | | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session}
 | | And ACL session from VAT should be
@@ -91,6 +99,7 @@
 | TC06: Honeycomb manages more than one ACL session on one table
 | | [Documentation] | Check if Honeycomb API can add another ACL session\
 | | ... | to a table.
+| | ...
 | | Given ACL session from Honeycomb should not exist
 | | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']}
 | | And ACL session from VAT should not exist
 
 | TC07: Honeycomb enables ACL on interface
 | | [Documentation] | Check if Honeycomb API can enable ACL on an interface.
+| | ...
 | | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper}
 | | And ACL table from VAT should be
 | | ... | ${node} | ${table_index} | ${vat_acl_table}
 
 | TC08: Honeycomb disables ACL on interface
 | | [Documentation] | Check if Honeycomb API can disable ACL on an interface.
+| | ...
 | | Given Interface ACL configuration from Honeycomb should be
 | | ... | ${node} | ${interface} | ${hc_acl_table['name']}
 | | And Interface ACL configuration from VAT should be
 | TC09: Honeycomb can remove one out of multiple ACL tables
 | | [Documentation] | Check if Honeycomb API can delete an ACL table if more\
 | | ... | than one table exists.
+| | ...
 | | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper}
 | | And ACL table from VAT should be
 | | ... | ${node} | ${table_index} | ${vat_acl_table}
index 5b66569..fba37e6 100644 (file)
 | Library | resources.libraries.python.IPv6Util
 | Library | resources.libraries.python.Routing
 | Variables | resources/test_data/honeycomb/dhcp_relay.py
+| ...
+| ...
 | Documentation | *Honeycomb DHCP relay test suite.*
+| ...
 | Test Setup | Clear Packet Trace on All DUTs | ${nodes}
+| ...
 | Suite Teardown | Restart Honeycomb and VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
 
 *** Test Cases ***
 | | ... | neighbors and configure DHCP relay.
 | | ... | [Ver] Send DHCP packets from TG interface to DUT. Receive all packets\
 | | ... | on the second TG interface and verify required fields.
+| | ...
 | | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
 | | ... | AND | Log DHCP relay configuration from VAT | ${node} | ipv4
+| | ...
 | | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures DHCP relay | ${node} | ${relay1} | ipv4 | ${0}
 | | Then DHCP relay configuration from Honeycomb should contain
 | | ... | ${node} | ${relay1_oper}
 | | When DHCP relay test setup
-| | Then Send DHCP messages and check answer | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2}
-| | ... | ${dhcp_server1_ip} | ${tg_to_dut_if2_mac} | ${client_ip}
-| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_ip}
+| | Then Send DHCP messages and check answer | ${tg_node} | ${tg_to_dut_if1}
+| | ... | ${tg_to_dut_if2} | ${dhcp_server1_ip} | ${tg_to_dut_if2_mac}
+| | ... | ${client_ip} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_ip}
 
 | TC02: Honeycomb can remove DHCP relay entry
 | | [Documentation] | Remove DHCP relay configuration, and verify that\
 | | ... | it was removed.
+| | ...
 | | Given DHCP relay configuration from Honeycomb should contain
 | | ... | ${node} | ${relay1_oper}
 | | When Honeycomb clears DHCP relay configuration | ${node}
@@ -60,7 +68,9 @@
 | TC03: Honeycomb can configure multiple DHCP relay servers.
 | | [Documentation] | Configure multiple DHCP relay servers and verify\
 | | ... | their configuration using operational data.
+| | ...
 | | [Teardown] | Honeycomb clears DHCP relay configuration | ${node}
+| | ...
 | | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node}
 | | And Honeycomb configures DHCP relay | ${node} | ${relay2} | ipv4 | ${0}
 | | Then DHCP relay configuration from Honeycomb should contain
 | | ... | neighbors and configure DHCP relay.
 | | ... | [Ver] Send DHCPv6 packets from TG interface to DUT. Receive all\
 | | ... | packets on the second TG interface and verify required fields.
+| | ...
 | | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
 | | ... | AND | Log DHCP relay configuration from VAT | ${node} | ipv6
 | | ... | AND | Honeycomb clears DHCP relay configuration | ${node}
+| | ...
 | | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures DHCP relay | ${node} | ${relay_v6} | ipv6 | ${0}
 | | Then DHCP relay configuration from Honeycomb should contain
 | | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length}
 | | Honeycomb sets interface IPv4 address with prefix | ${dut_node}
 | | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length}
-| | Add ARP on DUT
-| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server1_ip} | ${tg_to_dut_if2_mac}
-| | Add ARP on DUT
-| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server2_ip} | ${tg_to_dut_if2_mac}
+| | Add ARP on DUT | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server1_ip}
+| | ... | ${tg_to_dut_if2_mac}
+| | Add ARP on DUT | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server2_ip}
+| | ... | ${tg_to_dut_if2_mac}
 | | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local
 | | ... | ${FALSE} | ${NONE}
 
index c6ae380..3e3c64f 100644 (file)
 | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords
 | ...     | WITH NAME | InterfaceAPI
 | Variables | resources/test_data/honeycomb/netconf/triggers.py
+| ...
 | Documentation | *Netconf test suite. Contains test cases that need to bypass\
 | ... | REST API.*
+| ...
 | Force Tags | HC_FUNC | HC_REST_ONLY
-| Suite Teardown
-| ... | Restart Honeycomb and VPP | ${node}
+| ...
+| Suite Teardown | Restart Honeycomb and VPP | ${node}
 
 *** Variables ***
 | ${interface}= | ${node['interfaces']['port1']['name']}
@@ -34,6 +36,7 @@
 | TC01: Honeycomb can create and delete interfaces
 | | [Documentation] | Repeatedly create and delete an interface through Netconf\
 | | ... | and check the reply for any errors.
+| | ...
 | | Given Netconf session should be established | ${node}
 | | And Honeycomb creates first L2 bridge domain
 | | ... | ${node} | bd_netconf | ${bd_settings}
@@ -44,6 +47,7 @@
 | TC02: Transaction revert test case 1
 | | [Documentation] | Configure two conflicting VxLAN tunnels, then verify\
 | | ... | that neither tunnel exists.
+| | ...
 | | Given Netconf session should be established | ${node}
 | | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node}
 | | When Error trigger is sent | ${trigger_revert1}
@@ -53,6 +57,7 @@
 | TC03: Transaction revert test case 2
 | | [Documentation] | Configure two conflicting TAP interfaces, then verify\
 | | ... | that neither interface exists.
+| | ...
 | | Given Netconf session should be established | ${node}
 | | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node}
 | | When Error trigger is sent | ${trigger_revert1}
@@ -61,6 +66,7 @@
 
 | TC04: Vlan subinterface creation
 | | [Documentation] | Configure a Vlan sub-interface under a physical interface.
+| | ...
 | | Given Netconf session should be established | ${node}
 | | When Error Trigger Is Sent
 | | ... | ${trigger_vlan} | interface=${interface}
index 803cfa0..f766eb2 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
 | Resource | resources/libraries/robot/honeycomb/interfaces.robot
 | Variables | resources/test_data/honeycomb/sub_interfaces.py
+| ...
 | Suite Setup | Add Interface local0 To Topology | ${node}
-| Suite Teardown
-| ... | Restart Honeycomb and VPP | ${node}
+| ...
+| Suite Teardown | Restart Honeycomb and VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Documentation | *Honeycomb sub-interface management test suite.*
 
 *** Variables ***
 | TC17: Honeycomb modifies existing sub-interface ipv4 address
 | | [Documentation] | Check if Honeycomb can modify an ipv4 address already\
 | | ... | configured on the sub-interface.
+| | ...
 | | [Teardown] | Honeycomb removes all sub-interface ipv4 addresses
 | | ... | ${node} | ${super_if} | ${sub_if_id}
+| | ...
 | | Given sub-interface ipv4 address from Honeycomb should be empty
 | | ... | ${node} | ${super_if} | ${sub_if_id}
 | | And sub-interface ipv4 address from VAT should be empty
 | TC18: Honeycomb modifies sub-interface exact tag match
 | | [Documentation] | Check if Honeycomb can modify a sub-interface with exact\
 | | ... | tag match.
+| | ...
 | | Given Honeycomb configures interface state | ${node} | ${super_if2} | down
 | | And sub-interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${super_if2} | ${sub_if_id}
 | TC21: Honeycomb modifies existing sub-interface ipv6 address
 | | [Documentation] | Check if Honeycomb can modify an ipv6 address already\
 | | ... | configured on the sub-interface.
+| | ...
 | | [Teardown] | Honeycomb removes all sub-interface ipv6 addresses
 | | ... | ${node} | ${super_if} | ${sub_if_id}
+| | ...
 | | Given sub-interface ipv6 address from Honeycomb should be empty
 | | ... | ${node} | ${super_if} | ${sub_if_id}
 | | And sub-interface ipv6 address from VAT should be empty
 | TC22: Honeycomb can configure unnumbered sub-interface
 | | [Documentation] | Check if Honeycomb can configure an unnumbered interface\
 | | ... | on a sub-interface, borrowing the IP address of 'local0'.
+| | ...
 | | Given sub-interface ipv4 address from Honeycomb should be empty
 | | ... | ${node} | ${super_if} | ${sub_if_id}
 | | And sub-interface ipv4 address from VAT should be empty
 | TC23: Honeycomb removes sub-interface unnumbered configuration
 | | [Documentation] | Check if Honeycomb can remove unnumbered configuration\
 | | ... | from a sub-interface.
+| | ...
 | | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node}
 | | ... | local0
+| | ...
 | | Given IPv4 address from Honeycomb should be
 | | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']}
 | | And IPv4 address from VAT should be
 | TC24: Honeycomb can configure unnumbered interface using a sub-interface
 | | [Documentation] | Check if Honeycomb can configure an unnumbered interface\
 | | ... | on an interface, borrowing the IP address of a sub-interface.
+| | ...
 | | Given IPv4 address from Honeycomb should be empty | ${node} | local0
 | | And ipv4 address from VAT should be empty | ${node} | local0
 | | And sub-interface ipv4 address from Honeycomb should be empty
index dd619ef..03160e0 100644 (file)
 | Resource | resources/libraries/robot/testing_path.robot
 | Resource | resources/libraries/robot/ipv6.robot
 | Variables | resources/test_data/honeycomb/interface_ip.py
+| ...
 | Force Tags | HC_FUNC
-| Suite Teardown
-| | ... | Restart Honeycomb and VPP | ${node}
+| ...
+| Suite Teardown | Restart Honeycomb and VPP | ${node}
+| ...
 | Documentation | *Honeycomb interface management test suite.*
 
 *** Test Cases ***
 | TC01: Honeycomb configures and reads interface state
 | | [Documentation] | Check if Honeycomb API can modify the admin state of\
 | | ... | VPP interfaces.
+| | ...
 | | Given Interface state from Honeycomb should be
 | | ... | ${node} | ${interface} | down
 | | And Interface state from VAT should be | ${node} | ${interface} | down
@@ -46,6 +49,7 @@
 | TC02: Honeycomb modifies interface IPv4 address with netmask
 | | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\
 | | ... | with address and netmask provided.
+| | ...
 | | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface}
 | | And ipv4 address from VAT should be empty | ${node} | ${interface}
 | | When Honeycomb sets interface IPv4 address | ${node} | ${interface}
@@ -59,6 +63,7 @@
 | TC03: Honeycomb removes IPv4 address from interface
 | | [Documentation] | Check if Honeycomb API can remove configured ipv4\
 | | ... | addresses from interface.
+| | ...
 | | Given IPv4 address from Honeycomb should be
 | | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix}
 | | And IPv4 address from VAT should be
 | TC04: Honeycomb modifies interface IPv4 address with prefix
 | | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\
 | | ... | with address and prefix provided.
+| | ...
 | | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node}
 | | ... | ${interface}
+| | ...
 | | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface}
 | | And ipv4 address from VAT should be empty | ${node} | ${interface}
 | | When Honeycomb sets interface IPv4 address with prefix
 
 | TC05: Honeycomb modifies IPv4 neighbor table
 | | [Documentation] | Check if Honeycomb API can add and remove ARP entries.
+| | ...
 | | [Teardown] | Honeycomb clears all interface IPv4 neighbors
 | | ... | ${node} | ${interface}
+| | ...
 | | Given IPv4 neighbor from Honeycomb should be empty
 | | ... | ${node} | ${interface}
 | | When Honeycomb adds interface IPv4 neighbor
 
 | TC06: Honeycomb modifies interface configuration - IPv6
 | | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6.
+| | ...
 | | [Teardown] | Honeycomb removes interface IPv6 addresses | ${node}
 | | ... | ${interface}
+| | ...
 | | Given IPv6 address from Honeycomb should be empty
 | | ... | ${node} | ${interface}
 | | And IPv6 address from VAT should be empty
 
 | TC07: Honeycomb modifies IPv6 neighbor table
 | | [Documentation] | Check if Honeycomb API can add and remove ARP entries.
+| | ...
 | | [Teardown] | Honeycomb clears all interface IPv6 neighbors
 | | ... | ${node} | ${interface}
+| | ...
 | | Given IPv6 neighbor from Honeycomb should be empty
 | | ... | ${node} | ${interface}
 | | When Honeycomb adds interface IPv6 neighbor
 | TC08: Honeycomb modifies interface configuration - MTU
 | | [Documentation] | Check if Honeycomb API can configure interface\
 | | ... | MTU value.
+| | ...
 | | When Honeycomb sets interface ethernet configuration
 | | ... | ${node} | ${interface} | ${ethernet}
 | | Then Interface ethernet Operational Data From Honeycomb Should Be
 | TC09: Honeycomb modifies interface configuration - vrf
 | | [Documentation] | Check if Honeycomb API can configure interface\
 | | ... | vrf ID.
+| | ...
 | | [Teardown] | Honeycomb sets interface VRF ID
 | | ... | ${node} | ${interface} | ${0} | ipv4
+| | ...
 | | When Honeycomb sets interface VRF ID
 | | ... | ${node} | ${interface} | ${1} | ipv4
 | | Then Interface VRF ID from Honeycomb should be
 | TC11: Honeycomb fails to configure two IPv4 addresses from the same subnet
 | | [Documentation] | Check if Honeycomb can configure two IPv4 addresses in\
 | | ... | the same subnet onto a single interface. It should not be possible.
+| | ...
 | | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node}
 | | ... | ${interface}
+| | ...
 | | [Tags] | EXPECTED_FAILING
+| | ...
 # VPP API does not configure the second address, but returns success. VPP-649
 | | When Honeycomb sets interface IPv4 address with prefix
 | | ... | ${node} | ${interface} | 192.168.0.1 | ${9}
 | TC12: Honeycomb fails to configure two IPv6 addresses from the same subnet
 | | [Documentation] | Check if Honeycomb can configure two IPv6 addresses in\
 | | ... | the same subnet onto a single interface. It should not be possible.
+| | ...
 | | [Tags] | EXPECTED_FAILING
+| | ...
 # VPP API does not configure the second address, but returns success. VPP-649
 | | [Teardown] | Honeycomb removes interface IPv6 addresses | ${node}
 | | ... | ${interface}
 | TC13: Honeycomb can configure unnumbered interface
 | | [Documentation] | Check if Honeycomb can configure an unnumbered interface\
 | | ... | on a physical interface, borrowing the IP address of 'local0'.
+| | ...
 | | Given Honeycomb sets interface IPv4 address | ${node}
 | | ... | local0 | ${ipv4_address} | ${ipv4_prefix}
 | | When Honeycomb adds unnumbered configuration to interface
 | TC14: Honeycomb removes interface unnumbered configuration
 | | [Documentation] | Check if Honeycomb can remove unnumbered configuration\
 | | ... | from an interface.
+| | ...
 | | Given IPv4 address from Honeycomb should be
 | | ... | ${node} | local0 | ${ipv4_address} | ${ipv4_prefix}
 | | And IPv4 address from VAT should be
index 2efdaf2..74d99a9 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/interfaces.robot
 | Resource | resources/libraries/robot/honeycomb/tap.robot
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
+| ...
 | Documentation | *Honeycomb TAP management test suite.*
 
 *** Test Cases ***
 | TC01: Honeycomb configures TAP interface
 | | [Documentation] | Check if Honeycomb API can configure a TAP interface.
+| | ...
 | | Given TAP Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${tap_interface}
 | | And TAP Operational Data From VAT Should Be empty
@@ -48,6 +52,7 @@
 | TC02: Honeycomb modifies existing TAP interface configuration
 | | [Documentation] | Check if Honeycomb API can re-configure and existing TAP\
 | | ... | interface with new settings.
+| | ...
 | | Given TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
 | | And TAP Operational Data From VAT Should Be
@@ -61,6 +66,7 @@
 
 | TC03: Honeycomb removes TAP interface
 | | [Documentation] | Check if Honeycomb API can remove TAP interface.
+| | ...
 | | Given TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings2}
 | | And TAP Operational Data From VAT Should Be
index 24e79fa..64136bc 100644 (file)
 | Resource | resources/libraries/robot/default.robot
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/vhost_user.robot
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
+| ...
 | Documentation | *Honeycomb vhost-user interface management test suite.*
 
 *** Test Cases ***
index e8649bd..e6287e7 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/interfaces.robot
 | Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
+| ...
 | Suite Teardown | Run keywords
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 | ... | AND | Honeycomb removes all bridge domains | ${node} | @{interfaces}
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Documentation | *Honeycomb bridge domain management test suite.*
 
 *** Test Cases ***
 | TC01: Honeycomb sets up l2 bridge domain
 | | [Documentation] | Check if Honeycomb can create bridge domains on VPP node.
+| | ...
 | | When Honeycomb creates first l2 bridge domain
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
 | | Then Bridge domain Operational Data From Honeycomb Should Be
@@ -48,6 +52,7 @@
 | TC02: Honeycomb manages multiple bridge domains on node
 | | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\
 | | ... | a single node.
+| | ...
 | | Given Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
 | | When Honeycomb creates l2 bridge domain
@@ -64,6 +69,7 @@
 | TC03: Honeycomb removes bridge domains
 | | [Documentation] | Check if Honeycomb can remove bridge domains from a VPP\
 | | ... | node.
+| | ...
 | | Given Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
 | | When Honeycomb removes all bridge domains | ${node}
@@ -73,6 +79,7 @@
 | TC04: Honeycomb assigns interfaces to bridge domain
 | | [Documentation] | Check if Honeycomb can assign VPP interfaces to an\
 | | ... | existing bridge domain.
+| | ...
 | | Given Honeycomb creates first l2 bridge domain
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
 | | When Honeycomb adds interfaces to bridge domain
@@ -89,6 +96,7 @@
 | TC05: Honeycomb cannot remove bridge domain with an interface assigned
 | | [Documentation] | Check if Honeycomb can remove a bridge domain that has an\
 | | ... | interface assigned to it. Expect to fail with code 500.
+| | ...
 | | Given Bridge domain Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${bd1_name} | ${bd_settings}
 | | And Bridge domain Operational Data From VAT Should Be
index 48527b9..184f361 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/l2_fib.robot
 | Variables | resources/test_data/honeycomb/l2_fib.py | ${node} | ${interface}
 | ... | ${interface2}
+| ...
 | Documentation | *Honeycomb L2 FIB management test suite.*
-| Suite Setup | Run keywords
-| ... | Set test interface down
+| ...
+| Suite Setup | Run keywords | Set test interface down
+| ...
 | Suite Teardown | Run keywords
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 | ... | AND
 | ... | Honeycomb removes all bridge domains
 | ... | ${node} | ${interface} | ${interface2}
+| ...
 | Force tags | HC_FUNC
 
 *** Variables ***
index 9f4a328..42f5a84 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/lisp.robot
 | Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
 | Variables | resources/test_data/honeycomb/lisp.py
+| ...
 | Documentation | *Honeycomb Lisp test suite.*
+| ...
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Honeycomb enables LISP feature
 | | [Documentation] | Check if Honeycomb can enable the Lisp feature.
+| | ...
 | | Given Lisp Should Not Be Configured | ${node}
 | | When Honeycomb enables LISP | ${node}
 | | Then LISP state from Honeycomb should be | ${node} | ${state}
@@ -42,6 +46,7 @@
 
 | TC02: Honeycomb adds locator set and locator
 | | [Documentation] | Check if Honeycomb can configure a locator set.
+| | ...
 | | Given LISP state from Honeycomb should be | ${node} | ${state}
 | | When Honeycomb adds locator set | ${node} | ${interface} | ${locator_set}
 | | Then Locator Set From Honeycomb Should Be
@@ -50,6 +55,7 @@
 | TC03: Honeycomb configures Lisp - remote mapping - Bridge Domain
 | | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\
 | | ... | with a bridge domain.
+| | ...
 | | Given LISP state from Honeycomb should be | ${node} | ${state}
 | | And Honeycomb creates first l2 bridge domain
 | | ... | ${node} | ${bd_name} | ${bd_settings}
@@ -61,6 +67,7 @@
 
 | TC04: Honeycomb can remove Lisp mapping
 | | [Documentation] | Check if Honeycomb can remove a configured Lisp mapping.
+| | ...
 | | Given LISP mapping from Honeycomb should be
 | | ... | ${node} | ${remote_bd_subtable}
 | | And LISP mapping from VAT should be
@@ -74,7 +81,9 @@
 | TC05: Honeycomb configures Lisp - remote mapping - VRF
 | | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\
 | | ... | with VRF.
+| | ...
 | | [Teardown] | Honeycomb removes all lisp mappings | ${node}
+| | ...
 | | Given LISP mappings from Honeycomb should not exist
 | | ... | ${node}
 | | And LISP mappings from VAT should not exist
@@ -87,7 +96,9 @@
 | TC06: Honeycomb configures Lisp - local mapping - Bridge Domain
 | | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\
 | | ... | with a bridge domain.
+| | ...
 | | [Teardown] | Honeycomb removes all lisp mappings | ${node}
+| | ...
 | | Given Locator Set From Honeycomb Should Be
 | | ... | ${node} | ${interface} | ${locator_set}
 | | And LISP mappings from Honeycomb should not exist
 | TC07: Honeycomb configures Lisp - local mapping - VRF
 | | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\
 | | ... | with VRF.
+| | ...
 | | [Teardown] | Honeycomb removes all lisp mappings | ${node}
+| | ...
 | | Given Locator Set From Honeycomb Should Be
 | | ... | ${node} | ${interface} | ${locator_set}
 | | And LISP mappings from Honeycomb should not exist
 | TC08: Honeycomb configures Lisp mapping with adjacency
 | | [Documentation] | Check if Honeycomb can configure local and remote Lisp\
 | | ... | mappings with VRF, and configure adjacency.
+| | ...
 | | [Teardown] | Honeycomb removes all lisp mappings | ${node}
+| | ...
 | | Given Locator Set From Honeycomb Should Be
 | | ... | ${node} | ${interface} | ${locator_set}
 | | And Honeycomb creates first l2 bridge domain
 
 | TC09: Honeycomb configures Lisp Map Resolver
 | | [Documentation] | Check if Honeycomb can configure a Lisp Map Resolver.
+| | ...
 | | Given LISP state from Honeycomb should be | ${node} | ${state}
 | | And LISP state from VAT should be | ${node} | ${state}
 | | When Honeycomb adds Lisp Map Resolver | ${node} | ${ip_address}
 
 | TC10: Honeycomb configures Lisp Map Server
 | | [Documentation] | Check if Honeycomb can configure a Lisp Map Server.
+| | ...
 | | Given LISP state from Honeycomb should be | ${node} | ${state}
 | | And LISP state from VAT should be | ${node} | ${state}
 | | When Honeycomb adds Lisp Map Server | ${node} | @{ip_addresses}
 | TC11: Honeycomb configures Lisp PETR configuration
 | | [Documentation] | Check if Honeycomb can configure Lisp
 | | ... | PETR configuration.
+| | ...
 | | Given LISP state from Honeycomb should be | ${node} | ${state}
 | | And LISP state from VAT should be | ${node} | ${state}
 | | When Honeycomb enables LISP PETR feature | ${node} | ${ip_address}
 
 | TC12: Honeycomb configures Lisp RLOC Probing
 | | [Documentation] | Check if Honeycomb can configure Lisp RLOC Probing.
+| | ...
 | | Given LISP state from Honeycomb should be | ${node} | ${state}
 | | And LISP state from VAT should be | ${node} | ${state}
 | | When Honeycomb enables LISP RLOC feature | ${node}
 
 | TC13: Honeycomb configures Lisp Map Register
 | | [Documentation] | Check if Honeycomb can configure a Lisp Map Register.
+| | ...
 | | Given LISP state from Honeycomb should be | ${node} | ${state}
 | | And LISP state from VAT should be | ${node} | ${state}
 | | When Honeycomb adds Lisp Map Register | ${node} | ${True}
 
 | TC14: Honeycomb enabled Lisp PITR feature
 | | [Documentation] | Check if Honeycomb can configure the Lisp PITR feature.
+| | ...
 | | Given Locator Set From Honeycomb Should Be
 | | ... | ${node} | ${interface} | ${locator_set}
 | | When Honeycomb enables LISP PITR feature | ${node} | ${locator_set}
 
 | TC15: Honeycomb can remove configuration of Lisp features
 | | [Documentation] | Check if Honeycomb can disable all Lisp features.
+| | ...
 | | Given Map resolver from Honeycomb should be | ${node} | ${ip_address}
 | | And PITR config from Honeycomb should be | ${node} | ${locator_set}
 | | When Honeycomb disables all LISP features | ${node}
 | TC16: Honeycomb configures Lisp Map Request Mode
 | | [Documentation] | Check if Honeycomb can configure Lisp Map Request mode.
 | | ... | Note: Map Request Mode cannot be removed once configured.
+| | ...
 | | [Teardown] | Honeycomb disables LISP | ${node}
+| | ...
 | | Given Honeycomb enables LISP | ${node}
 | | When Honeycomb sets Lisp Map Request Mode | ${node} | ${True}
 | | Then Map Request Mode from Honeycomb should be
index 068fbcf..03ccc32 100644 (file)
@@ -21,7 +21,9 @@
 | Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot
 | Variables | resources/test_data/honeycomb/nsh.py
 | Variables | resources/test_data/honeycomb/vxlan_gpe.py
+| ...
 | Documentation | *Honeycomb NSH test suite.*
+| ...
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 # disabled pending NSH version 17.04
@@ -30,6 +32,7 @@
 *** Test Cases ***
 | TC01: Honeycomb can configure NSH entry
 | | [Documentation] | Check if Honeycomb can configure an NSH entry.
+| | ...
 | | Given NSH Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1}
 | | Then NSH entry from Honeycomb should be
@@ -37,6 +40,7 @@
 
 | TC02: Honeycomb can remove NSH entry
 | | [Documentation] | Check if Honeycomb can remove an existing NSH entry.
+| | ...
 | | Given NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
 | | When Honeycomb removes NSH entry | ${node} | entry1
@@ -45,7 +49,9 @@
 | TC03: Honeycomb can configure new NSH entry
 | | [Documentation] | Check if Honeycomb can configure an NSH antry after one\
 | | ... | has been deleted.
+| | ...
 | | [Teardown] | Honeycomb removes NSH entry | ${node} | entry2
+| | ...
 | | Given NSH Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2}
 | | Then NSH entry from Honeycomb should be
@@ -54,7 +60,9 @@
 | TC04: Honeycomb can configure multiple NSH entries at the same time
 | | [Documentation] | Check if Honeycomb can configure an NSH entry when one\
 | | ... | already exists.
+| | ...
 | | [Teardown] | Honeycomb clears NSH configuration | ${node}
+| | ...
 | | Given NSH Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1}
 | | And Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2}
@@ -65,6 +73,7 @@
 
 | TC05: Honeycomb can configure NSH map
 | | [Documentation] | Check if Honeycomb can configure an NSH map.
+| | ...
 | | Given NSH Operational Data From Honeycomb Should Be empty | ${node}
 | | And Honeycomb creates VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if1}
@@ -75,6 +84,7 @@
 
 | TC06: Honeycomb can remove NSH map
 | | [Documentation] | Check if Honeycomb can remove an existing NSH map.
+| | ...
 | | Given NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
 | | And VxLAN GPE Operational Data From Honeycomb Should Be
@@ -89,7 +99,9 @@
 | TC07: Honeycomb can modify existing NSH map
 | | [Documentation] | Check if Honeycomb can configure an NSH map after one\
 | | ... | has been deleted.
+| | ...
 | | [Teardown] | Honeycomb removes NSH map | ${node} | map1_edit
+| | ...
 | | Given NSH map from Honeycomb should not exist | ${node} | map1_edit
 | | And NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
 | TC08: Honeycomb can configure multiple NSH maps at the same time
 | | [Documentation] | Check if Honeycomb can configure and NSH map when one\
 | | ... | already exists.
+| | ...
 | | [Teardown] | Run Keywords
 | | ... | Honeycomb clears NSH configuration | ${node} | AND
 | | ... | Honeycomb removes VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if1} | AND
 | | ... | Honeycomb removes VxLAN GPE interface
 | | ... | ${node} | ${vxlan_gpe_if2}
+| | ...
 | | Given NSH map from Honeycomb should not exist | ${node} | map2
 | | And NSH entry from Honeycomb should be
 | | ... | ${node} | entry1 | ${nsh_entry1_oper}
index 4d7c8a2..a049325 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/provider_backbone_bridge.robot
 | Variables | resources/test_data/honeycomb/pbb/pbb.py
+| ...
 | Documentation | *Honeycomb provider backbone bridge test suite.*
+| ...
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Honeycomb sets PBB sub-interface
 | | [Documentation] | Honeycomb creates a new PBB sub-interface.
 | | ...
-| | Honeycomb creates PBB sub interface | ${node} | ${super_if}
+| | Honeycomb creates PBB sub-interface | ${node} | ${super_if}
 | | ... | ${cfg_pbb_sub_if_1}
 
 | TC02: Honeycomb modifies existing PBB sub-interface
 | | [Documentation] | Honeycomb modifies an existing PBB sub-interface.
 | | ...
-| | Honeycomb creates PBB sub interface | ${node} | ${super_if}
+| | Honeycomb creates PBB sub-interface | ${node} | ${super_if}
 | | ... | ${cfg_pbb_sub_if_1_mod}
 
 | TC03: Honeycomb deletes existing PBB sub-interface
 | | [Documentation] | Honeycomb deletes an existing PBB sub-interface.
 | | ...
-| | Honeycomb Removes PBB sub interface
+| | Honeycomb removes PBB sub-interface
 | | ... | ${node} | ${super_if}
 
 | TC04: Honeycomb fails to set wrong destination-address for new PBB sub-interface
 | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\
 | | ... | wrong value of parameter destination-address, type yang:mac-address.
 | | ...
-| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if}
 | | ... | ${cfg_pbb_sub_if_wrong_dst_addr}
 
 | TC05: Honeycomb fails to set wrong source-address for new PBB sub-interface
 | | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\
 | | ... | wrong value of parameter source-address, type yang:mac-address.
 | | ...
-| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if}
 | | ... | ${cfg_pbb_sub_if_wrong_src_addr}
 
 | TC06: Honeycomb fails to set wrong b-vlan-tag-vlan-id for new PBB sub-interface
@@ -63,7 +66,7 @@
 | | ... | wrong value of parameter b-vlan-tag-vlan-id, type uint16, 12 bit\
 | | ... | range, range 1..4095.
 | | ...
-| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if}
 | | ... | ${cfg_pbb_sub_if_wrong_vlan_tag}
 
 | TC07: Honeycomb fails to set wrong i-tag-isid for new PBB sub-interface
 | | ... | wrong value of parameter i-tag-isid, type uint32, 24 bit range,\
 | | ... | range 1..16777215.
 | | ...
-| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if}
 | | ... | ${cfg_pbb_sub_if_wrong_i_tag}
 
 | TC08: Honeycomb fails to create new PBB sub-interface without vlan tag
 | | [Documentation] | Honeycomb fails to create a new PBB sub-interface without\
 | | ... | parameter b-vlan-tag-vlan-id.
 | | ...
-| | Honeycomb fails to create PBB sub interface | ${node} | ${super_if}
+| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if}
 | | ... | ${cfg_pbb_sub_if_no_vlan_tag}
index 7f96472..f7d92fc 100644 (file)
 | Library | resources.libraries.python.IPv4Util
 | Library | resources.libraries.python.IPv6Util
 | Library | resources.libraries.python.Routing
+| ...
 | Test Setup | Clear Packet Trace on All DUTs | ${nodes}
-| Suite Teardown
-| ... | Restart Honeycomb and VPP | ${node}
+| ...
+| Suite Teardown | Restart Honeycomb and VPP | ${node}
+| ...
 | Documentation | *Honeycomb access control lists test suite for ACL plugin.*
+| ...
 | Force Tags | HC_FUNC
 
 *** Test Cases ***
@@ -58,7 +61,9 @@
 | | ... | [Ver] Send simple TCP packets from one TG interface to the other,\
 | | ... | using different MACs. Receive all packets except those with\
 | | ... | MACs in the filtered ranges.
+| | ...
 | | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup Interfaces And Bridge Domain For plugin-acl Test
 | | ... | macip | ${acl_name_macip}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
@@ -91,7 +96,9 @@
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different IPv4 IPs. Receive all packets except\
 | | ... | those with IPs in the filtered ranges and UDP protocol payload.
+| | ...
 | | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup Interfaces And Bridge Domain For plugin-acl Test
 | | ... | l3_ip4 | ${acl_name_l3_ip4}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different IPv6 IPs. Receive all packets except\
 | | ... | those with IPs in the filtered ranges and UDP protocol payload.
+| | ...
 | | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup interfaces and bridge domain for plugin-acl test
 | | ... | l3_ip6 | ${acl_name_l3_ip6}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different ports. Receive all packets except\
 | | ... | those with ports in the filtered ranges.
+| | ...
 | | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup interfaces and bridge domain for plugin-acl test
 | | ... | L4 | ${acl_name_l4}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send simple TCP packets from one TG interface to the other,\
 | | ... | using IPs and ports. Receive all packets except those with\
 | | ... | both IPs and ports in the filtered ranges.
+| | ...
 | | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup Interfaces And Bridge Domain For plugin-acl Test
 | | ... | mixed | ${acl_name_mixed}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send ICMP packets from one TG interface\
 | | ... | to the other, using different codes and types. Receive all packets\
 | | ... | except those with types and codes in the filtered ranges.
+| | ...
 | | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup interfaces and bridge domain for plugin-acl test
 | | ... | icmp | ${acl_name_icmp}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send ICMPv6 packets from one TG interface\
 | | ... | to the other, using different codes and types. Receive all packets\
 | | ... | except those with the filtered type and code.
+| | ...
 | | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup interfaces and bridge domain for plugin-acl test
 | | ... | icmpv6 | ${acl_name_icmpv6}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | to VPP interface 2 and receive it from interface 1(this should create\
 | | ... | a reflexive "permit" rule) Finally, send the original packet again\
 | | ... | and receive it from interface 2.
+| | ...
 | | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup Interfaces And Bridge Domain For plugin-acl Test
 | | ... | reflex | ${acl_name_reflex}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different IPv4 IPs. Receive all packets except\
 | | ... | those with IPs in the filtered ranges and UDP protocol payload.
+| | ...
 | | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | l3_ip4 | ${acl_name_l3_ip4}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different IPv6 IPs. Receive all packets except\
 | | ... | those with IPs in the filtered ranges and UDP protocol payload.
+| | ...
 | | [Teardown] | Routed ACL test teardown - ipv6
+| | ...
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Import Variables | resources/test_data/honeycomb/plugin_acl.py
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different ports. Receive all packets except\
 | | ... | those with ports in the filtered ranges.
+| | ...
 | | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | L4 | ${acl_name_l4}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send simple TCP packets from one TG interface to the other,\
 | | ... | using IPs and ports. Receive all packets except those with\
 | | ... | both IPs and ports in the filtered ranges.
+| | ...
 | | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | mixed | ${acl_name_mixed}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send ICMP packets from one TG interface\
 | | ... | to the other, using different codes and types. Receive all packets\
 | | ... | except those with the filtered type and code.
+| | ...
 | | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | icmp | ${acl_name_icmp}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | [Ver] Send ICMPv6 packets from one TG interface\
 | | ... | to the other, using different codes and types. Receive all packets\
 | | ... | except those with the filtered type and code.
+| | ...
 | | [Teardown] | Routed ACL test teardown - ipv6
+| | ...
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Import Variables | resources/test_data/honeycomb/plugin_acl.py
 | | ... | to VPP interface 2 and receive it from interface 1(this should create\
 | | ... | a reflexive "permit" rule) Finally, send the original packet again\
 | | ... | and receive it from interface 2.
+| | ...
 | | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | reflex | ${acl_name_reflex}
 | | And Add ARP on DUT
 | Setup interface IPs and routes for IPv4 plugin-acl test
 | | [Documentation] | Import test variables, set interfaces up,
 | | ... | configure IPv4 addresses, add neighbor entry and routes.
+| | ...
 | | [Arguments] | ${test_data_id} | ${acl_name}
+| | ...
 | | Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | Import Variables | resources/test_data/honeycomb/plugin_acl.py
 
 | Setup interfaces and bridge domain for plugin-acl test
 | | [Documentation] | Import test variables, set interfaces up and bridge them.
+| | ...
 | | [Arguments] | ${test_data_id} | ${acl_name}
+| | ...
 | | Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | Import Variables | resources/test_data/honeycomb/plugin_acl.py
 | | ... | ${test_data_id} | ${acl_name}
-| | Honeycomb Sets Interface State | ${dut_node} | ${dut_to_tg_if1} | up
-| | Honeycomb Sets Interface State | ${dut_node} | ${dut_to_tg_if2} | up
+| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
+| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up
 | | Honeycomb Creates first L2 Bridge Domain
 | | ... | ${dut_node} | ${bd_name} | ${bd_settings}
 | | Honeycomb Adds Interfaces To Bridge Domain
 | Bridged ACL test teardown
 | | [Documentation] | Log packet trace and ACL settings,
 | | ... | then clean up bridge domains.
+| | ...
 | | Show Packet Trace on All DUTs | ${nodes}
 | | Read plugin-ACL configuration from VAT | ${node}
-| | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1}
+| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1}
 | | Honeycomb Removes All Bridge Domains
 | | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
 
 | Routed ACL test teardown - ipv4
 | | [Documentation] | Log packet trace and ACL settings,
 | | ... | then clean up IPv4 addresses and neighbors.
+| | ...
 | | Show Packet Trace on All DUTs | ${nodes}
 | | Read plugin-ACL configuration from VAT | ${node}
-| | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1}
+| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1}
 | | Honeycomb removes interface IPv4 addresses | ${node} | ${dut_to_tg_if1}
 | | Honeycomb clears all interface IPv4 neighbors | ${node} | ${dut_to_tg_if1}
 
 | Routed ACL test teardown - ipv6
 | | [Documentation] | Log packet trace and ACL settings,
 | | ... | then clean up IPv6 addresses and neighbors.
+| | ...
 | | Show Packet Trace on All DUTs | ${nodes}
-| | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1}
+| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1}
 | | Read plugin-ACL configuration from VAT | ${node}
 | | Honeycomb removes interface IPv6 addresses | ${node} | ${dut_to_tg_if1}
 | | Honeycomb clears all interface IPv6 neighbors | ${node} | ${dut_to_tg_if1}
index d9b6aaa..1fe4847 100644 (file)
 | Resource | resources/libraries/robot/testing_path.robot
 | Library | resources.libraries.python.Trace
 | Variables | resources/test_data/honeycomb/policer_variables.py
+| ...
 | Suite Teardown
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Documentation | *Honeycomb Policer management test suite.*
 
 *** Test Cases ***
 | TC01: Honeycomb can configure Policer
 | | [Documentation] | Checks if Honeycomb can configure Policer.
+| | ...
 | | Given Policer Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures Policer | ${node} | ${policer_data}
 | | Then Policer Operational Data From Honeycomb Should Be | ${node}
@@ -45,6 +49,7 @@
 
 | TC02: Honeycomb can disable Policer
 | | [Documentation] | Checks if Honeycomb can disable Policer.
+| | ...
 | | Given Policer Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${policer_data_oper}
 | | When Honeycomb removes Policer configuration | ${node}
@@ -53,7 +58,9 @@
 | TC03: Honeycomb can configure Policer with increased values of CIR (900kbps)
 | | [Documentation] | Checks if Honeycomb can configure Policer\
 | | ... | with increased values of CIR.
+| | ...
 | | [Teardown] | Tear down policer test | ${node}
+| | ...
 | | Given Policer Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures Policer | ${node} | ${policer_data_2}
 | | Then Policer Operational Data From Honeycomb Should Be | ${node}
 | TC04: Honeycomb can configure Packets-Per-Second Based Policer
 | | [Documentation] | Checks if Honeycomb can configure Policer\
 | | ... | based on rate-type measured in pps.
+| | ...
 | | [Teardown] | Tear down policer test | ${node}
+| | ...
 | | Given Policer Operational Data From Honeycomb Should Be empty | ${node}
 | | When Honeycomb configures Policer | ${node} | ${policer_data_3}
 | | Then Policer Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${policer_data_oper_3}
 
 | TC05: Configure Policer on Interface
-| | [Documentation] | Honeycomb can configure Policer\
-| | ... | on a given interface.
+| | [Documentation] | Honeycomb can configure Policer on a given interface.
+| | ...
 | | [Teardown] | Run Keywords
 | | ... | Honeycomb disables Policer on interface | ${node} | ${interface} | AND
-| | ... | Honeycomb removes ACL session
-| | ... | ${node} | ${acl_tables['hc_acl_table']['name']}
+| | ... | Honeycomb removes ACL session | ${node}
+| | ... | ${acl_tables['hc_acl_table']['name']}
 | | ... | ${acl_tables['hc_acl_session']['match']} | AND
 | | ... | Honeycomb removes ACL table | ${node}
 | | ... | ${acl_tables['hc_acl_table']['name']} | AND
 | | ... | Tear down policer test | ${node}
+| | ...
 | | Given Honeycomb configures Policer | ${node} | ${policer_data}
 | | And ACL table from Honeycomb should not exist
 | | ... | ${node} | ${acl_tables['hc_acl_table']['name']}
 | | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\
 | | ... | Packet on DUT1 is marked with DSCP tag. Verifies if DUT1 sends\
 | | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG.
+| | ...
 | | [Teardown] | Show Packet Trace on All DUTs | ${nodes}
+| | ...
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Honeycomb configures Policer | ${dut_node} | ${policer_data_3}
 | | ... | ${acl_tables['hc_acl_session']}
 | | And Honeycomb enables policer on interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_tables['hc_acl_table']['name']}
-| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
-| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1}
+| | ... | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2}
+| | ... | up
 | | And Honeycomb sets interface IPv4 address with prefix | ${dut_node}
 | | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length}
 | | And Honeycomb sets interface IPv4 address with prefix | ${dut_node}
index 0567715..26f73b0 100644 (file)
 | Resource | resources/libraries/robot/ipv4.robot
 | Resource | resources/libraries/robot/traffic.robot
 | Library | resources.libraries.python.Trace
+| ...
 | Suite Teardown
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb And VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Documentation | *Honeycomb proxyARP management test suite.*
 
 *** Test Cases ***
 # TODO: Add operational data and VAT dump verification if/when avaliable
 | TC01: Honeycomb can configure ipv4 proxyARP
 | | [Documentation] | Check if Honeycomb can configure the proxyARP feature.
+| | ...
 | | [Teardown] | Honeycomb removes proxyARP configuration | ${node}
+| | ...
 | | Honeycomb configures proxyARP | ${node} | ${proxyarp_settings_ipv4}
 
 | TC02: Honeycomb can enable proxyarp on an interface
 | | [Documentation] | Check if Honeycomb can enable the proxyARP feature\
 | | ... | on an interface.
+| | ...
 | | [Teardown] | Honeycomb disables proxyARP on interface
 | | ... | ${node} | ${interface}
+| | ...
 | | Honeycomb enables proxyARP on interface | ${node} | ${interface}
 
 | TC03: DUT sends ARP reply on behalf of another machine from the IP range
@@ -59,6 +66,7 @@
 | | ... | [Ver] Make TG send ARP request to DUT1 interface,
 | | ... | verify if DUT1 sends correct ARP reply on behalf of machine whose
 | | ... | IP is in the configured range.
+| | ...
 | | [Teardown] | Run Keywords
 | | ... | Show Packet Trace on all DUTs | ${nodes}
 | | ... | AND | Honeycomb removes proxyARP configuration | ${node}
@@ -66,6 +74,7 @@
 | | ... | ${dut_node} | ${dut_to_tg_if1} | down
 | | ... | AND | Honeycomb removes interface IPv4 addresses
 | | ... | ${node} | ${interface}
+| | ...
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | ${dut_to_tg_name}= | Get interface name | ${dut_node} | ${dut_to_tg_if1}
@@ -76,5 +85,5 @@
 | | When Honeycomb configures proxyARP | ${dut_node} | ${proxyarp_settings_ipv4}
 | | And Honeycomb enables proxyARP on interface | ${node} | ${dut_to_tg_name}
 | | Then Send ARP Request | ${tg_node} | ${tg_to_dut_name}
-| | ...                   | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac}
-| | ...                   | ${tg_to_dut_ip} | ${test_ip}
+| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac}
+| | ... | ${tg_to_dut_ip} | ${test_ip}
index abc03c0..6c718e7 100644 (file)
 | Resource | resources/libraries/robot/traffic.robot
 | Resource | resources/libraries/robot/dhcp_proxy.robot
 | Library | resources.libraries.python.Trace
+| ...
 | Test Setup | Clear Packet Trace on All DUTs | ${nodes}
+| ...
 | Suite Teardown | Restart Honeycomb And VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Documentation | *Honeycomb IPv6 neighbor discovery proxy test suite.*
 
 *** Test Cases ***
 | TC01: Honeycomb can configure IPv6 ND proxy on an interface
 | | [Documentation] | Check if Honeycomb can configure the IPv6 ND proxy\
 | | ... | feature on an interface.
+| | ...
 | | Given IPv6 ND proxy from Honeycomb should be empty | ${node} | ${interface}
 | | And Honeycomb configures interface state | ${node} | ${interface} | up
 | | When Honeycomb configures IPv6 ND proxy on interface
@@ -53,6 +58,7 @@
 | TC02: Honeycomb can disable IPv6 ND proxy on an interface
 | | [Documentation] | Check if Honeycomb can remove IPv6 ND proxy feature\
 | | ... | configuration from an interface.
+| | ...
 | | Given IPv6 ND proxy from Honeycomb should be
 | | ... | ${node} | ${interface} | ${test_dst_ip}
 | | When Honeycomb disables IPv6 ND proxy on interface | ${node} | ${interface}
 | TC03: Honeycomb can configure multiple IPv6 ND proxies on an interface
 | | [Documentation] | Check if Honeycomb can configure two ND proxies\
 | | ... | on one interface.
+| | ...
 | | [Teardown] | Honeycomb disables IPv6 ND proxy on interface
 | | ... | ${node} | ${interface}
+| | ...
 | | Given IPv6 ND proxy from Honeycomb should be empty | ${node} | ${interface}
 | | And Honeycomb configures interface state | ${node} | ${interface} | up
 | | When Honeycomb configures IPv6 ND proxy on interface
@@ -85,6 +93,7 @@
 | | ... | Show Packet Trace on All DUTs | ${nodes} | AND
 | | ... | Honeycomb disables IPv6 ND proxy on interface
 | | ... | ${dut_node} | ${dut_to_tg_if2}
+| | ...
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
index e0544f7..be151c3 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Resource | resources/libraries/robot/honeycomb/interfaces.robot
 | Resource | resources/libraries/robot/honeycomb/routing.robot
+| ...
 | Test Setup | Clear Packet Trace on All DUTs | ${nodes}
+| ...
 | Suite Teardown | Restart Honeycomb And VPP | ${node}
-| Test Teardown | Honeycomb routing test teardown
-| ... | ${node} | ${table}
+| ...
+| Test Teardown | Honeycomb routing test teardown | ${node} | ${table}
+| ...
 | Documentation | *Honeycomb routing test suite.*
+| ...
 | Force Tags | HC_FUNC
 
 *** Test Cases ***
@@ -37,6 +41,7 @@
 | | ... | interfaces and configure route with TG-if2 as next-hop.
 | | ... | [Ver] Send ICMP packet from first TG interface to configured route
 | | ... | destination. Receive packet on the second TG interface.
+| | ...
 | | ${table}= | Set Variable | table1
 | | Given Setup interfaces and neighbors for IPv4 routing test
 | | When Honeycomb configures routing table
@@ -58,6 +63,7 @@
 | | ... | route destination. Receive all packets on the second TG interface and\
 | | ... | verify that each destination MAC was used by exactly 50 packets.
 | | ... | Receive packet on the second TG interface.
+| | ...
 | | ${table}= | Set Variable | table2
 | | Given Setup interfaces and neighbors for IPv4 routing test
 | | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if2}
@@ -83,6 +89,7 @@
 | | ... | [Ver] Send ICMP packet from first TG interface to configured route
 | | ... | destination. Make sure no packet is received on the second TG\
 | | ... | interface.
+| | ...
 | | ${table}= | Set Variable | table3
 | | Given Setup interfaces and neighbors for IPv4 routing test
 | | When Honeycomb configures routing table
 | | ... | interfaces and configure route with TG-if2 as next-hop.
 | | ... | [Ver] Send ICMP packet from first TG interface to configured route
 | | ... | destination. Receive packet on the second TG interface.
+| | ...
 | | ${table}= | Set Variable | table4
 | | Given Setup interfaces and neighbors for IPv6 routing test
 | | When Honeycomb configures routing table
 | | ... | route destination. Receive all packets on the second TG interface and\
 | | ... | verify that each destination MAC was used by exactly 50 packets.
 | | ... | Receive packet on the second TG interface.
+| | ...
 | | ${table}= | Set Variable | table5
 | | Given Setup interfaces and neighbors for IPv6 routing test
 | | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2}
 | | ... | [Ver] Send ICMP packet from first TG interface to configured route
 | | ... | destination. Make sure no packet is received on the second TG\
 | | ... | interface.
+| | ...
 | | ${table}= | Set Variable | table6
 | | Given Setup interfaces and neighbors for IPv6 routing test
 | | When Honeycomb configures routing table
 | | Vpp all ra suppress link layer | ${nodes}
 
 | Honeycomb routing test teardown
+| | ...
 | | [arguments] | ${node} | ${routing_table}
+| | ...
 | | Show Packet Trace on All DUTs | ${nodes}
 | | Log routing configuration from VAT | ${node}
 | | Honeycomb removes routing configuration | ${node} | ${routing_table}
 
 | Setup vrf IDs
+| | ...
 | | [Arguments] | ${node} | ${interface} | ${vrf}
+| | ...
 | | Honeycomb sets interface VRF ID
 | | ... | ${node} | ${interface} | ${vrf} | ipv4
 | | Honeycomb sets interface VRF ID
index abcd86e..c5533c2 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/slaac.robot
 | Resource | resources/libraries/robot/testing_path.robot
 | Resource | resources/libraries/robot/traffic.robot
+| ...
 | Suite Teardown
 | ... | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Documentation | *Honeycomb SLAAC management test suite.*
+| ...
 | Variables | resources/test_data/honeycomb/slaac_variables.py
 
 *** Test Cases ***
 | TC01: Honeycomb can configure SLAAC
 | | [Documentation] | Checks if Honeycomb can congigure SLAAC.
+| | ...
 | | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
@@ -43,6 +48,7 @@
 
 | TC02: Honeycomb can disable SLAAC
 | | [Documentation] | Checks if Honeycomb can disable SLAAC.
+| | ...
 | | Given SLAAC Operational Data From Honeycomb Should Be | ${node}
 | | ... | ${interface} | ${slaac_data}
 | | When Honeycomb removes SLAAC configuration | ${node} | ${interface}
@@ -51,7 +57,9 @@
 
 | TC03: Honeycomb can configure SLAAC with suppress link layer disabled
 | | [Documentation] | Checks if Honeycomb can congigure SLAAC.
+| | ...
 | | [Teardown] | SLAAC test teardown | ${node} | ${interface}
+| | ...
 | | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | TC04: Honeycomb can configure SLAAC with sending RA packets disabled
 | | [Documentation] | Checks if Honeycomb can configure SLAAC\
 | | ... | with given settings.
+| | ...
 | | [Teardown] | SLAAC test teardown | ${node} | ${interface}
+| | ...
 | | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | | And Honeycomb sets interface IPv6 address | ${node} | ${interface}
 | | ... | ${address} | ${prefix}
 | | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_01}
-| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} | ${interface}
-| | ... | ${slaac_data_01}
+| | Then SLAAC Operational Data From Honeycomb Should Be | ${node}
+| | ... | ${interface} | ${slaac_data_01}
 
 | TC05: Honeycomb can configure SLAAC with min interval values
 | | [Documentation] | Checks if Honeycomb can configure SLAAC\
 | | ... | with given settings.
+| | ...
 | | [Teardown] | SLAAC test teardown | ${node} | ${interface}
+| | ...
 | | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | | And Honeycomb sets interface IPv6 address | ${node} | ${interface}
 | | ... | ${address} | ${prefix}
 | | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_02}
-| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} | ${interface}
-| | ... | ${slaac_data_02}
+| | Then SLAAC Operational Data From Honeycomb Should Be | ${node}
+| | ... | ${interface} | ${slaac_data_02}
 
 | TC06: Honeycomb can configure SLAAC with max interval values
 | | [Documentation] | Checks if Honeycomb can configure SLAAC\
 | | ... | with given settings.
+| | ...
 | | [Teardown] | SLAAC test teardown | ${node} | ${interface}
+| | ...
 | | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node}
 | | ... | ${interface}
 | | And InterfaceAPI.Set Interface State | ${node} | ${interface} | up
 | | And Honeycomb sets interface IPv6 address | ${node} | ${interface}
 | | ... | ${address} | ${prefix}
 | | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_03}
-| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} | ${interface}
-| | ... | ${slaac_data_03}
+| | Then SLAAC Operational Data From Honeycomb Should Be | ${node}
+| | ... | ${interface} | ${slaac_data_03}
 
 | TC07: DUT retransmits RA on IPv6 enabled interface after a set interval
 | | [Documentation]
 | | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG.
 | | ... | [Ver] Make TG wait for two IPv6 Router Advertisement packets\
 | | ... | to be sent by DUT1 and verify the received RA packets are correct.
+| | ...
 | | [Teardown] | SLAAC test teardown | ${dut_node} | ${dut_to_tg_if1}
+| | ...
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Honeycomb sets interface IPv6 address
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${address} | ${prefix}
-| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1}
+| | ... | up
 | | When Honeycomb configures SLAAC | ${dut_node} | ${dut_to_tg_if1}
 | | ... | ${slaac_data}
 | | :FOR | ${n} | IN RANGE | ${2}
index d765f1e..3c6be39 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/nat.robot
 | Resource | resources/libraries/robot/honeycomb/honeycomb.robot
 | Variables | resources/test_data/honeycomb/nat.py | ${node} | ${interface}
+| ...
 | Documentation | *Honeycomb NAT test suite.*
+| ...
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
+| ...
 | Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: Honeycomb configures NAT entry
 | | [Documentation] | Honeycomb configures a static NAT entry.
+| | ...
 | | Given NAT Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${nat_empty}
 | | When Honeycomb Configures NAT Entry | ${node} | ${entry1}
@@ -34,6 +38,7 @@
 
 | TC02: Honeycomb removes NAT entry
 | | [Documentation] | Honeycomb removes a configured static NAT entry.
+| | ...
 | | Given NAT Entries From Honeycomb Should Be | ${node} | ${entry1}
 | | When Honeycomb Configures NAT Entry | ${node} | ${NONE}
 | | Then NAT Operational Data From Honeycomb Should Be empty
@@ -41,7 +46,9 @@
 
 | TC03: Honeycomb configures multiple NAT entries
 | | [Documentation] | Honeycomb configures two static NAT entries.
+| | ...
 | | [Teardown] | Honeycomb Configures NAT Entry | ${node} | ${NONE}
+| | ...
 | | Given NAT Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${nat_empty}
 | | When Honeycomb Configures NAT Entry | ${node} | ${entry1} | ${0} | ${1}
@@ -52,6 +59,7 @@
 | TC04: Honeycomb enables NAT on interface - inbound
 | | [Documentation] | Honeycomb configures NAT on an interface\
 | | ... | in inbound direction.
+| | ...
 | | Given NAT Interface Operational Data From Honeycomb Should Be Empty
 | | ... | ${node} | ${interface} | inbound
 | | And NAT Interface Operational Data From Honeycomb Should Be Empty
@@ -65,6 +73,7 @@
 
 | TC05: Honeycomb removes NAT interface configuration
 | | [Documentation] | Honeycomb removes NAT configuration from an interface.
+| | ...
 | | Given NAT Interface Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${interface} | inbound
 | | And NAT Interface Operational Data From Honeycomb Should Be empty
 | TC06: Honeycomb enables NAT on interface - outbound
 | | [Documentation] | Honeycomb configures NAT on an interface\
 | | ... | in outbound direction.
+| | ...
 | | [Teardown] | Honeycomb removes NAT interface configuration
 | | ... | ${node} | ${interface} | outbound
+| | ...
 | | Given NAT Interface Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface} | inbound
 | | And NAT Interface Operational Data From Honeycomb Should Be empty
index b2adb87..e7fe2eb 100644 (file)
 | ... | ${node['interfaces']['port3']['name']}
 | ... | local0
 | Variables | resources/test_data/honeycomb/sub_interfaces.py
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Suite Setup | Add Interface local0 To Topology | ${node}
+| ...
 | Suite Teardown | Restart Honeycomb and VPP | ${node}
+| ...
 | Documentation | *Honeycomb port mirroring test suite.*
 
 *** Test Cases ***
@@ -86,6 +90,7 @@
 | | ... | ${node} | ${interface1} | AND
 | | ... | Honeycomb removes interface SPAN configuration
 | | ... | ${node} | ${interface2}
+| | ...
 | | When Honeycomb configures SPAN on interface
 | | ... | ${node} | ${interface1} | ${settings_if2}
 | | And Honeycomb configures SPAN on interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | AND
 | | ... | Honeycomb removes interface SPAN configuration
 | | ... | ${node} | ${dut_to_tg_if2}
+| | ...
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
-| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1}
+| | ... | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2}
+| | ... | up
 | | And Honeycomb sets interface IPv4 address with prefix | ${dut_node}
 | | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix}
 | | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1}
 | | ... | ${node} | ${interface1} | ${1} | AND
 | | ... | Honeycomb removes sub-interface SPAN configuration
 | | ... | ${node} | ${interface2} | ${1}
+| | ...
 | | Given Honeycomb creates sub-interface | ${node} | ${interface2}
 | | ... | ${sub_if_2_match} | ${sub_if_2_tags} | ${sub_if_2_settings}
 | | When Honeycomb Configures SPAN on sub-interface
 | | ... | on the sub-interface.
 | | ...
 | | [Teardown] | Show Packet Trace on All DUTs | ${nodes}
+| | ...
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Sub-interface state from Honeycomb should be
 | | ... | ${dut_node} | ${interface1} | ${1} | down | up
-| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
-| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1}
+| | ... | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2}
+| | ... | up
 | | And Honeycomb sets the sub-interface up
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${1}
 | | And Honeycomb sets interface IPv4 address with prefix | ${dut_node}
index 409eb13..7d0f5af 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/vxlan.robot
 # import additional VxLAN settings from resource file
 | Variables | resources/test_data/honeycomb/vxlan.py
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
+| ...
 | Documentation | *Honeycomb VxLAN management test suite.*
 
 *** Test Cases ***
 | TC01: Honeycomb configures VxLAN tunnel
 | | [Documentation] | Check if Honeycomb API can configure VxLAN settings.
+| | ...
 | | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
 | | And VxLAN Operational Data From VAT Should Be empty | ${node}
@@ -55,6 +59,7 @@
 
 | TC02: Honeycomb disables VxLAN tunnel
 | | [Documentation] | Check if Honeycomb API can reset VxLAN configuration.
+| | ...
 | | Given VxLAN Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${vx_interface} | ${vxlan_settings}
 | | And Honeycomb should not show disabled interface in oper data
 | TC03: Honeycomb can configure VXLAN tunnel after one has been disabled
 | | [Documentation] | Check if Honeycomb API can configure VxLAN settings again\
 | | ... | after previous settings have been removed.
+| | ...
 | | [Teardown] | Honeycomb removes VxLAN tunnel settings
 | | ... | ${node} | ${vx_interface}
+| | ...
 | | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
 | | And Honeycomb should show disabled interface in oper data
@@ -90,6 +97,7 @@
 | TC04: Honeycomb does not set VxLAN configuration on another interface type
 | | [Documentation] | Check if Honeycomb API prevents setting VxLAN\
 | | ... | on incorrect interface.
+| | ...
 | | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${interface}
 | | And VxLAN Operational Data From VAT Should Be empty | ${node}
 | TC05: Honeycomb does not set invalid VxLAN configuration
 | | [Documentation] | Check if Honeycomb API prevents setting incorrect VxLAN\
 | | ... | settings.
+| | ...
 | | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
 | | And VxLAN Operational Data From VAT Should Be empty | ${node}
 | TC06: Honeycomb configures VxLAN tunnel with ipv6
 | | [Documentation] | Check if Honeycomb API can configure VxLAN with\
 | | ... | ipv6 settings.
+| | ...
 | | [Teardown] | Honeycomb removes VxLAN tunnel settings
 | | ... | ${node} | ${vx_interface}
+| | ...
 | | Given VxLAN Operational Data From Honeycomb Should Be empty
 | | ... | ${node} | ${vx_interface}
 | | And VxLAN Operational Data From VAT Should Be empty | ${node}
index 253cd6a..8dd884a 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot
 # Import additional VxLAN GPE settings from resource file
 | Variables | resources/test_data/honeycomb/vxlan_gpe.py
+| ...
 | Documentation | *Honeycomb VxLAN-GPE management test suite.*
-| Force Tags | HC_FUNC
-| Suite Setup
-| ... | Restart Honeycomb and VPP | ${node}
+| ...
+#| Force Tags | HC_FUNC
+| ...
+| Suite Setup | Restart Honeycomb and VPP | ${node}
 
 *** Test Cases ***
 | TC01: Honeycomb creates VxLAN GPE tunnel
index 7daa08b..2f834ac 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/interfaces.robot
 | Resource | resources/libraries/robot/honeycomb/tap.robot
 | Resource | resources/libraries/robot/honeycomb/notifications.robot
+| ...
 | Suite Setup | Run keywords
 | ... | Honeycomb configures interface state
 | ... | ${node} | ${interface} | down | AND
 | ... | Honeycomb creates TAP interface
 | ... | ${node} | ${tap_interface} | ${tap_settings}
+| ...
 | Documentation | *Honeycomb notifications test suite.*
+| ...
 | Force Tags | HC_FUNC
+| ...
 | Suite Teardown | Run Keyword If Any Tests Failed
 | ... | Restart Honeycomb and VPP | ${node}
 
@@ -38,6 +42,7 @@
 | TC01: Honeycomb sends notification on interface state change
 | | [Documentation] | Check if Honeycomb sends a state-changed notification\
 | | ... | when the state of an interface is changed.
+| | ...
 | | Given Interface state from Honeycomb should be
 | | ... | ${node} | ${interface} | down
 | | And Interface state from VAT should be | ${node} | ${interface} | down
@@ -50,6 +55,7 @@
 | TC02: Honeycomb sends notification on interface deletion
 | | [Documentation] | Check if Honeycomb sends an interface-deleted notification
 | | ... | when an interface is deleted.
+| | ...
 | | Given TAP Operational Data From Honeycomb Should Be
 | | ... | ${node} | ${tap_interface} | ${tap_settings}
 | | And TAP Operational Data From VAT Should Be
index f5f9673..90ed077 100644 (file)
 | Resource | resources/libraries/robot/honeycomb/interfaces.robot
 | Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
 | Resource | resources/libraries/robot/honeycomb/l2_fib.robot
+| ...
 | Suite Setup | Run Keywords
 | ... | Configure Persistence | ${node} | enable | AND
 | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| ...
 | Suite Teardown | Configure Persistence | ${node} | disable
+| ...
 | Force Tags | HC_PERSIST | HC_REST_ONLY
+| ...
 | Documentation | *Honeycomb configuration persistence test suite.*
 
 *** Test Cases ***
 | TC01: Honeycomb persists configuration through restart of both Honeycomb and VPP
 | | [Documentation] | Checks if Honeycomb maintains configuration after both\
 | | ... | Restart Honeycomb and VPP.
+| | ...
 | | [Tags] | HC_FUNC
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Multi-Feature Persistence test configuration | ${node} | ${interface}
 | | And Multi-Feature persistence Test Verification | ${node} | ${interface}
 | | And Log persisted configuration on node | ${node}
-| | When Restart Honeycomb and VPP | ${node}
+| | When Restart Honeycomb and VPP in pesistence test | ${node}
 | | Then Multi-Feature persistence Test Verification | ${node} | ${interface}
 
 | TC02: Honeycomb reverts to defaults if persistence files are invalid
 | | [Documentation] | Checks if Honeycomb reverts to default configuration when\
 | | ... | persistence files are damaged or invalid.
+| | ...
 | | [Tags] | HC_FUNC
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Multi-Feature Persistence test configuration | ${node} | ${interface}
 | | And Multi-Feature persistence Test Verification | ${node} | ${interface}
 | | When Persistence file is damaged during restart | ${node}
 | TC03: Honeycomb persists configuration through restart of Honeycomb
 | | [Documentation] | Checks if Honeycomb maintains configuration after it\
 | | ... | is restarted.
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Multi-Feature Persistence test configuration | ${node} | ${interface}
 | | And Multi-Feature persistence Test Verification | ${node} | ${interface}
 | | And Log persisted configuration on node | ${node}
 | TC04: Honeycomb persists configuration through restart of VPP
 | | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\
 | | ... | restarted.
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Multi-Feature Persistence test configuration | ${node} | ${interface}
 | | And Multi-Feature persistence Test Verification | ${node} | ${interface}
 | | And Log persisted configuration on node | ${node}
 | TC05: Persist configuration of IP addresses and neighbors - HC and VPP restart
 | | [Documentation] | Verify persistence of interface state, IPv4 address
 | | ... | and neighbor entries through restart of both Honeycomb and VPP.
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Interface Persistence Setup | ${node}
 | | And Interface Persistence Check | ${node}
-| | When Restart Honeycomb and VPP | ${node}
+| | When Restart Honeycomb and VPP in pesistence test | ${node}
 | | Then Interface Persistence Check | ${node}
 
 | TC06: Persist configuration of IP addresses and neighbors - HC restart
 | | [Documentation] | Verify persistence of interface state, IPv4 address
 | | ... | and neighbor entries through restart of Honeycomb.
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Interface Persistence Setup | ${node}
 | | And Interface Persistence Check | ${node}
 | | When Restart Honeycomb | ${node}
 | TC07: Persist configuration of IP addresses and neighbors - VPP restart
 | | [Documentation] | Verify persistence of interface state, IPv4 address
 | | ... | and neighbor entries through restart of VPP.
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Interface Persistence Setup | ${node}
 | | And Interface Persistence Check | ${node}
 | | When Restart VPP | ${node}
 | | [Documentation] | Verify persistence of bridge domain, L2-FIB entry
 | | ... | and Bridge domain Operational Interface Assignment through restart
 | | ... | of both Honeycomb and VPP.
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Bridge Domain Persistence Setup | ${node}
-| | When Restart Honeycomb and VPP | ${node}
+| | When Restart Honeycomb and VPP in pesistence test | ${node}
 | | Then Bridge Domain Persistence Check | ${node}
 
 | TC09: Honeycomb persists configuration of bridge domains - HC restart
 | | [Documentation] | Verify persistence of bridge domain, L2-FIB entry
 | | ... | and Bridge domain Operational Interface Assignment through restart
 | | ... | of Honeycomb.
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Bridge Domain Persistence Setup | ${node}
 | | When Restart Honeycomb | ${node}
 | | Then Bridge Domain Persistence Check | ${node}
 | | [Documentation] | Verify persistence of bridge domain, L2-FIB entry
 | | ... | and Bridge domain Operational Interface Assignment through restart
 | | ... | of VPP.
+| | ...
 | | [Teardown]
 | | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node}
+| | ...
 | | Given Bridge Domain Persistence Setup | ${node}
 | | When Restart VPP | ${node}
 | | Then Bridge Domain Persistence Check | ${node}
index ab0c6f0..c4c0f3c 100644 (file)
 | Library | resources.libraries.python.Trace
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ...        | VM_ENV | HW_ENV | SKIP_VPP_PATCH
-| Test Setup | Run Keywords | Set up functional test
-| ...        | AND          | Configure topology for IPv4 IPsec testing
-| Test Teardown | Run Keywords | VPP IPsec Show | ${dut_node}
-| ...           | AND          | Tear down functional test
+| ...
+| Test Setup | Set up IPv4 IPSec functional test
+| ...
+| Test Teardown | Tear down IPSec functional test | ${dut_node}
+| ...
 | Documentation | *IPv4 IPsec tunnel mode test suite.*
 | ...
 | ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\
@@ -56,7 +57,8 @@
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
@@ -76,7 +78,8 @@
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
@@ -96,7 +99,8 @@
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key}
 | | ... | ${tg_spi} | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto
 | | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | [Arguments] | ${req_alg} | ${req_type}
 | | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg}
 | | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key}
-| | ...                       | '${req_type}' == 'Integ' | ${auth_key}
+| | ... | '${req_type}' == 'Integ' | ${auth_key}
 | | :FOR | ${index} | IN RANGE | 100
 | | | ${req_key}= | Generate Random String | ${req_key_len}
 | | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key}
index 15bf7e2..0375349 100644 (file)
 | Library | resources.libraries.python.Trace
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ...        | VM_ENV | HW_ENV | SKIP_VPP_PATCH
-| Test Setup | Run Keywords | Set up functional test
-| ...        | AND          | Configure topology for IPv4 IPsec testing
-| Test Teardown | Run Keywords | VPP IPsec Show | ${dut_node}
-| ...           | AND          | Tear down functional test
+| Test Setup | Set up IPv4 IPSec functional test
+| ...
+| Test Teardown | Tear down IPSec functional test | ${dut_node}
+| ...
 | Documentation | *IPv4 IPsec transport mode test suite.*
 | ...
 | ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\
@@ -56,7 +56,8 @@
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
@@ -75,7 +76,8 @@
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
@@ -94,7 +96,8 @@
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 | | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto
 | | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key}
 | | ... | ${tg_spi} | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 | | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 | | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto
 | | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 | | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | [Arguments] | ${req_alg} | ${req_type}
 | | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg}
 | | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key}
-| | ...                       | '${req_type}' == 'Integ' | ${auth_key}
+| | ... | '${req_type}' == 'Integ' | ${auth_key}
 | | :FOR | ${index} | IN RANGE | 100
 | | | ${req_key}= | Generate Random String | ${req_key_len}
 | | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key}
index 702d6f5..03ecb34 100644 (file)
 | Library | resources.libraries.python.Trace
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ...        | VM_ENV | HW_ENV | SKIP_VPP_PATCH
-| Test Setup | Run Keywords | Set up functional test
-| ...        | AND          | Configure topology for IPv6 IPsec testing
-| Test Teardown | Run Keywords | VPP IPsec Show | ${dut_node}
-| ...           | AND          | Tear down functional test
+| Test Setup | Set up IPv6 IPSec functional test
+| ...
+| Test Teardown | Tear down IPSec functional test | ${dut_node}
+| ...
 | Documentation | *IPv6 IPsec tunnel mode test suite.*
 | ...
 | ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\
@@ -57,7 +57,8 @@
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
@@ -77,7 +78,8 @@
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
@@ -97,7 +99,8 @@
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key}
 | | ... | ${tg_spi} | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto
 | | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 | | [Arguments] | ${req_alg} | ${req_type}
 | | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg}
 | | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key}
-| | ...                       | '${req_type}' == 'Integ' | ${auth_key}
+| | ... | '${req_type}' == 'Integ' | ${auth_key}
 | | :FOR | ${index} | IN RANGE | 100
 | | | ${req_key}= | Generate Random String | ${req_key_len}
 | | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key}
index 12cc4e4..9c5ab83 100644 (file)
 | Library | resources.libraries.python.Trace
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ...        | VM_ENV | HW_ENV | SKIP_VPP_PATCH
-| Test Setup | Run Keywords | Set up functional test
-| ...        | AND          | Configure topology for IPv6 IPsec testing
-| Test Teardown | Run Keywords | VPP IPsec Show | ${dut_node}
-| ...           | AND          | Tear down functional test
+| Test Setup | Set up IPv6 IPSec functional test
+| ...
+| Test Teardown | Tear down IPSec functional test | ${dut_node}
+| ...
 | Documentation | *IPv6 IPsec transport mode test suite.*
 | ...
 | ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\
@@ -57,7 +57,8 @@
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
@@ -76,7 +77,8 @@
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
@@ -95,7 +97,8 @@
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | When Configure manual keyed connection for IPSec
 | | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 | | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto
 | | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | Then Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key}
 | | ... | ${tg_spi} | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 | | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
 | | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 | | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto
 | | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 | | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto
 | | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id}
 | | ... | ${new_encr_key} | ${new_auth_key}
 | | Then Run Keyword And Expect Error | ESP packet Rx timeout
-| | ... | Send IPsec Packet and verify ESP encapsulation in received packet | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | Send IPsec Packet and verify ESP encapsulation in received packet
+| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
 | | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi}
 | | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
 
 | | [Arguments] | ${req_alg} | ${req_type}
 | | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg}
 | | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key}
-| | ...                       | '${req_type}' == 'Integ' | ${auth_key}
+| | ... | '${req_type}' == 'Integ' | ${auth_key}
 | | :FOR | ${index} | IN RANGE | 100
 | | | ${req_key}= | Generate Random String | ${req_key_len}
 | | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key}
index ea0864e..0eb017b 100644 (file)
@@ -85,7 +85,7 @@
 | | And Vpp Set If Ipv6 Addr | ${dut1_node}
 | | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length}
 | | When VPP RA Suppress Link Layer | ${dut1_node} | ${dut1_to_tg}
-| | Then Send Router Solicitation And Check Response
+| | Then Send router solicitation and verify response
 | | ... | ${tg_node} | ${dut1_node} | ${tg_to_dut1} | ${dut1_to_tg}
 | | ... | ${tg_to_dut1_ip}
 
 | | And Vpp Set If Ipv6 Addr | ${dut1_node}
 | | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length}
 | | When VPP RA Suppress Link Layer | ${dut1_node} | ${dut1_to_tg}
-| | Then Send Router Solicitation And Check Response
+| | Then Send router solicitation and verify response
 | | ... | ${tg_node} | ${dut1_node} | ${tg_to_dut1} | ${dut1_to_tg}
index e15f080..b6a9458 100644 (file)
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | When Configure vhost interfaces for L2BD forwarding | ${dut_node}
-| | ...                                                     | ${sock1}
-| | ...                                                     | ${sock2}
+| | ... | ${sock1}
+| | ... | ${sock2}
 | | And Create bridge domain | ${dut_node} | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${vhost_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Create bridge domain | ${dut_node} | ${bd_id2}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Add interface to bridge domain | ${dut_node} | ${vhost_if2}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1}
-| | ...                                       | ${sock2}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut_if1}
-| | ...                                          | ${tg_to_dut_if2}
+| | ... | ${sock2}
+| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
 
 | TC02: DUT with two L2BDs (MAC learn) switches ICMPv6 between TG and VM links
 | | [Documentation]
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | When Configure vhost interfaces for L2BD forwarding | ${dut_node}
-| | ...                                                     | ${sock1}
-| | ...                                                     | ${sock2}
+| | ... | ${sock1}
+| | ... | ${sock2}
 | | And Create bridge domain | ${dut_node} | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${vhost_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Create bridge domain | ${dut_node} | ${bd_id2}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Add interface to bridge domain | ${dut_node} | ${vhost_if2}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1}
-| | ...                                       | ${sock2}
-| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut_if1}
-| | ...                                          | ${tg_to_dut_if2}
+| | ... | ${sock2}
+| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
index 4d20100..93367d4 100644 (file)
 | | And Set interfaces in 2-node circular topology up
 | | When Create bridge domain | ${dut_node} | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ...                                     | ${bd_id1}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut_if1}
-| | ...                                     | ${tg_to_dut_if2}
+| | ... | ${bd_id1}
+| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
 
 | TC03: DUT1 and DUT2 with L2BD (MAC learning) switch between two TG links
 | | [Documentation]
 | | And Set interfaces in 3-node circular topology up
 | | When Create bridge domain | ${dut1_node} | ${bd_id1}
 | | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Create bridge domain | ${dut2_node} | ${bd_id2}
 | | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1}
-| | ...                                     | ${bd_id2}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut1}
-| | ...                                          | ${tg_to_dut2}
+| | ... | ${bd_id2}
+| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
+| | ... | ${tg_to_dut1} | ${tg_to_dut2}
index 88d3260..951d522 100644 (file)
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | When Configure vhost interfaces for L2BD forwarding | ${dut_node}
-| | ...                                                     | ${sock1}
-| | ...                                                     | ${sock2}
+| | ... | ${sock1} | ${sock2}
 | | And Create bridge domain | ${dut_node} | ${bd_id1}
-| | ...                                      | learn=${FALSE}
+| | ... | learn=${FALSE}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
+| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} | ${bd_id1}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut_if1}
-| | ...                                                | ${dut_node}
-| | ...                                                | ${dut_to_tg_if1}
-| | ...                                                | ${bd_id1}
+| | ... | ${tg_to_dut_if1}
+| | ... | ${dut_node}
+| | ... | ${dut_to_tg_if1}
+| | ... | ${bd_id1}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut_if2}
-| | ...                                                | ${dut_node}
-| | ...                                                | ${vhost_if1}
-| | ...                                                | ${bd_id1}
+| | ... | ${tg_to_dut_if2}
+| | ... | ${dut_node}
+| | ... | ${vhost_if1}
+| | ... | ${bd_id1}
 | | And Create bridge domain | ${dut_node} | ${bd_id2}
-| | ...                                      | learn=${FALSE}
+| | ... | learn=${FALSE}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Add interface to bridge domain | ${dut_node} | ${vhost_if2}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut_if2}
-| | ...                                                | ${dut_node}
-| | ...                                                | ${dut_to_tg_if2}
-| | ...                                                | ${bd_id2}
+| | ... | ${tg_to_dut_if2}
+| | ... | ${dut_node}
+| | ... | ${dut_to_tg_if2}
+| | ... | ${bd_id2}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut_if1}
-| | ...                                                | ${dut_node}
-| | ...                                                | ${vhost_if2}
-| | ...                                                | ${bd_id2}
+| | ... | ${tg_to_dut_if1}
+| | ... | ${dut_node}
+| | ... | ${vhost_if2}
+| | ... | ${bd_id2}
 | | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1}
-| | ...                                       | ${sock2}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut_if1}
-| | ...                                          | ${tg_to_dut_if2}
+| | ... | ${sock2}
+| | Then Send ICMPv4 bidirectionally and verify received packets
+| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2}
 
 | TC02: DUT with two L2BDs (static MACs) switches ICMPv6 between TG and VM links
 | | [Documentation]
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | When Configure vhost interfaces for L2BD forwarding | ${dut_node}
-| | ...                                                     | ${sock1}
-| | ...                                                     | ${sock2}
+| | ... | ${sock1}
+| | ... | ${sock2}
 | | And Create bridge domain | ${dut_node} | ${bd_id1}
-| | ...                                      | learn=${FALSE}
+| | ... | learn=${FALSE}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${vhost_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut_if1}
-| | ...                                                | ${dut_node}
-| | ...                                                | ${dut_to_tg_if1}
-| | ...                                                | ${bd_id1}
+| | ... | ${tg_to_dut_if1}
+| | ... | ${dut_node}
+| | ... | ${dut_to_tg_if1}
+| | ... | ${bd_id1}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut_if2}
-| | ...                                                | ${dut_node}
-| | ...                                                | ${vhost_if1}
-| | ...                                                | ${bd_id1}
+| | ... | ${tg_to_dut_if2}
+| | ... | ${dut_node}
+| | ... | ${vhost_if1}
+| | ... | ${bd_id1}
 | | And Create bridge domain | ${dut_node} | ${bd_id2}
-| | ...                                      | learn=${FALSE}
+| | ... | learn=${FALSE}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ...                                     | ${bd_id2}
-| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
+| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} | ${bd_id2}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut_if2}
-| | ...                                                | ${dut_node}
-| | ...                                                | ${dut_to_tg_if2}
-| | ...                                                | ${bd_id2}
+| | ... | ${tg_to_dut_if2}
+| | ... | ${dut_node}
+| | ... | ${dut_to_tg_if2}
+| | ... | ${bd_id2}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut_if1}
-| | ...                                                | ${dut_node}
-| | ...                                                | ${vhost_if2}
-| | ...                                                | ${bd_id2}
+| | ... | ${tg_to_dut_if1}
+| | ... | ${dut_node}
+| | ... | ${vhost_if2}
+| | ... | ${bd_id2}
 | | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1}
-| | ...                                       | ${sock2}
-| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut_if1}
-| | ...                                          | ${tg_to_dut_if2}
+| | ... | ${sock2}
+| | Then Send ICMPv6 bidirectionally and verify received packets
+| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2}
index 2cfa02a..7ba6b46 100644 (file)
 | | Given Configure path in 3-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
 | | And Set interfaces in 3-node circular topology up
-| | When Create bridge domain | ${dut1_node} | ${bd_id1}
-| | ...                                       | learn=${FALSE}
+| | When Create bridge domain | ${dut1_node} | ${bd_id1} | learn=${FALSE}
 | | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut1}
-| | ...                                                | ${dut1_node}
-| | ...                                                | ${dut1_to_tg}
-| | ...                                                | ${bd_id1}
+| | ... | ${tg_to_dut1}
+| | ... | ${dut1_node}
+| | ... | ${dut1_to_tg}
+| | ... | ${bd_id1}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut2}
-| | ...                                                | ${dut1_node}
-| | ...                                                | ${dut1_to_dut2}
-| | ...                                                | ${bd_id1}
+| | ... | ${tg_to_dut2}
+| | ... | ${dut1_node}
+| | ... | ${dut1_to_dut2}
+| | ... | ${bd_id1}
 | | And Create bridge domain | ${dut2_node} | ${bd_id2}
-| | ...                                      | learn=${FALSE}
+| | ... | learn=${FALSE}
 | | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut1}
-| | ...                                                | ${dut2_node}
-| | ...                                                | ${dut2_to_dut1}
-| | ...                                                | ${bd_id2}
+| | ... | ${tg_to_dut1}
+| | ... | ${dut2_node}
+| | ... | ${dut2_to_dut1}
+| | ... | ${bd_id2}
 | | And Add destination port to L2FIB | ${tg_node}
-| | ...                                                | ${tg_to_dut2}
-| | ...                                                | ${dut2_node}
-| | ...                                                | ${dut2_to_tg}
-| | ...                                                | ${bd_id2}
+| | ... | ${tg_to_dut2}
+| | ... | ${dut2_node}
+| | ... | ${dut2_to_tg}
+| | ... | ${bd_id2}
 | | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut1}
-| | ...                                          | ${tg_to_dut2}
+| | ... | ${tg_to_dut2}
index 2136394..3649f92 100644 (file)
 | | ... | isolated interfaces. [Ref]
 | | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
 | | Given Configure path for 3-node BD-SHG test | ${nodes['TG']}
-| | ...                                         | ${nodes['DUT1']}
-| | ...                                         | ${nodes['DUT2']}
+| | ... | ${nodes['DUT1']} | ${nodes['DUT2']}
 | | And Set interfaces in 3-node BD-SHG test up
 | | When Create bridge domain | ${dut1_node} | ${bd_id1}
 | | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
-| | ...                                     | ${bd_id1} | ${shg1}
+| | ... | ${bd_id1} | ${shg1}
 | | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
-| | ...                                     | ${bd_id1} | ${shg1}
+| | ... | ${bd_id1} | ${shg1}
 | | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Create bridge domain | ${dut2_node} | ${bd_id2}
 | | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
-| | ...                                     | ${bd_id2} | ${shg2}
+| | ... | ${bd_id2} | ${shg2}
 | | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
-| | ...                                     | ${bd_id2} | ${shg2}
+| | ... | ${bd_id2} | ${shg2}
 | | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1}
-| | ...                                     | ${bd_id2}
+| | ... | ${bd_id2}
 | | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
-| | ...                                          | ${tg_to_dut1_if1}
-| | ...                                          | ${tg_to_dut2_if1}
+| | ... | ${tg_to_dut1_if1} | ${tg_to_dut2_if1}
 | | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
-| | ...                                         | ${tg_to_dut1_if1}
-| | ...                                         | ${tg_to_dut2_if2}
+| | ... | ${tg_to_dut1_if1} | ${tg_to_dut2_if2}
 | | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
-| | ...                                         | ${tg_to_dut1_if2}
-| | ...                                         | ${tg_to_dut2_if1}
+| | ... | ${tg_to_dut1_if2} | ${tg_to_dut2_if1}
 | | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
-| | ...                                         | ${tg_to_dut1_if2}
-| | ...                                         | ${tg_to_dut2_if2}
+| | ... | ${tg_to_dut1_if2} | ${tg_to_dut2_if2}
 | | And Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ...                              | Send ICMPv4 bidirectionally and verify received packets
-| | | ...                            | ${tg_node} | ${tg_to_dut1_if1}
-| | | ...                            | ${tg_to_dut1_if2}
+| | ... | Send ICMPv4 bidirectionally and verify received packets
+| | | ... | ${tg_node} | ${tg_to_dut1_if1} | ${tg_to_dut1_if2}
 | | And Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ...                              | Send ICMPv4 bidirectionally and verify received packets
-| | | ...                            | ${tg_node} | ${tg_to_dut2_if1}
-| | | ...                            | ${tg_to_dut2_if2}
+| | ... | Send ICMPv4 bidirectionally and verify received packets
+| | | ... | ${tg_node} | ${tg_to_dut2_if1} | ${tg_to_dut2_if2}
index 0763b88..d593fdf 100644 (file)
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | When Configure vhost interfaces for L2BD forwarding | ${dut_node}
-| | ...                                                     | ${sock1}
-| | ...                                                     | ${sock2}
+| | ... | ${sock1} | ${sock2}
 | | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${vhost_if1}
 | | And Configure L2XC | ${dut_node} | ${dut_to_tg_if2} | ${vhost_if2}
 | | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1}
-| | ...                                       | ${sock2}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut_if1}
-| | ...                                          | ${tg_to_dut_if2}
+| | ... | ${sock2}
+| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
 
 | TC02: DUT with two L2XCs switches ICMPv6 between TG and local VM links
 | | [Documentation]
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | When Configure vhost interfaces for L2BD forwarding | ${dut_node}
-| | ...                                                     | ${sock1}
-| | ...                                                     | ${sock2}
+| | ... | ${sock1} | ${sock2}
 | | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${vhost_if1}
 | | And Configure L2XC | ${dut_node} | ${dut_to_tg_if2} | ${vhost_if2}
 | | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1}
-| | ...                                       | ${sock2}
-| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut_if1}
-| | ...                                          | ${tg_to_dut_if2}
+| | ... | ${sock2}
+| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
 
index 2c4f462..a1b9fc2 100644 (file)
 | | Given Configure path in 3-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
 | | And Set interfaces in 3-node circular topology up
-| | And Configure L2XC
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2}
-| | And Configure L2XC
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg}
+| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2}
+| | And Configure L2XC | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg}
 | | When All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Send ICMPv4 bidirectionally and verify received packets
 | | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
 | | Given Configure path in 3-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
 | | And Set interfaces in 3-node circular topology up
-| | And Configure L2XC
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2}
-| | And Configure L2XC
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg}
+| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2}
+| | And Configure L2XC | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg}
 | | When All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Send ICMPv6 bidirectionally and verify received packets
 | | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
index b627cad..da97272 100644 (file)
 | Resource | resources/libraries/robot/lisp/lisp_api.robot
 # import additional Lisp settings from resource file
 | Variables | resources/test_data/lisp/api/lisp_api_resources.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ... | VM_ENV | HW_ENV
+| ...
 | Test Setup | Set up functional test
+| ...
 | Test Teardown | Tear down functional test
+| ...
 | Documentation | *API test cases*
 | ...
 | ... | *[Top] Network Topologies:* DUT1 1-node topology.
index 32b3b5c..235e581 100644 (file)
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
 | ...
 | Documentation | *IPv4-ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf)*
 | ...
index 80ee675..5f9a37e 100644 (file)
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test
 | ...
 | Documentation | *IPv4-ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf)*
 | ...
index 90b62e1..f09fa31 100644 (file)
 | Resource | resources/libraries/robot/bridge_domain.robot
 # Import configuration and test data:
 | Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
 | ...
 | Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\
 | ... | phy2lisp*
 | | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2}
 | | Set test variable | ${dst_vhost_mac} | ${vhost_mac}
 | | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2}
-
index 86db5f5..ac3620f 100644 (file)
 | Resource | resources/libraries/robot/bridge_domain.robot
 # Import configuration and test data:
 | Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test
 | ...
 | Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\
 | ... | phy2lisp*
index 81d5f75..0c87b3a 100644 (file)
 | Resource | resources/libraries/robot/bridge_domain.robot
 # Import configuration and test data:
 | Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test
 | ...
 | Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\
 | ... | phy2lisp*
index 0a7338c..b506c95 100644 (file)
 | Library  | resources.libraries.python.Trace
 # import additional Lisp settings from resource file
 | Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ... | VM_ENV | HW_ENV
+| ...
 | Test Setup | Set up functional test
+| ...
 | Test Teardown | Tear down functional test
+| ...
 | Documentation | *IP AFI independent functional tests.*
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
 | | ... | [Ref] RFC6830.
 | | Given Configure path in 3-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And   Set interfaces in 3-node circular topology up
-| | And   Configure IP addresses on interfaces
-| |       ... | ${dut1_node} | ${dut1_to_dut2}
-| |       ... | ${dut1_to_dut2_ip4} | ${prefix4}
-| |       ... | ${dut1_node} | ${dut1_to_tg}
-| |       ... | ${dut1_to_tg_ip4} | ${prefix4}
-| |       ... | ${dut2_node} | ${dut2_to_dut1}
-| |       ... | ${dut2_to_dut1_ip4} | ${prefix4}
-| |       ... | ${dut2_node} | ${dut2_to_tg}
-| |       ... | ${dut2_to_tg_ip4} | ${prefix4}
-| | And   VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4}
-| | And   VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4}
-| | And   Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4}
-| |       ... | ${tg_to_dut2_mac}
-| | And   Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4}
-| |       ... | ${tg_to_dut1_mac}
+| | And Set interfaces in 3-node circular topology up
+| | And Configure IP addresses on interfaces
+| | ... | ${dut1_node} | ${dut1_to_dut2}
+| | ... | ${dut1_to_dut2_ip4} | ${prefix4}
+| | ... | ${dut1_node} | ${dut1_to_tg}
+| | ... | ${dut1_to_tg_ip4} | ${prefix4}
+| | ... | ${dut2_node} | ${dut2_to_dut1}
+| | ... | ${dut2_to_dut1_ip4} | ${prefix4}
+| | ... | ${dut2_node} | ${dut2_to_tg}
+| | ... | ${dut2_to_tg_ip4} | ${prefix4}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4}
+| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4}
+| | ... | ${tg_to_dut2_mac}
+| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4}
+| | ... | ${tg_to_dut1_mac}
 | | When Configure LISP topology in 3-node circular topology
-| |      ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
-| |      ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
-| |      ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
-| |      ... | ${dut1_to_dut2_ip4_static_adjacency}
-| |      ... | ${dut2_to_dut1_ip4_static_adjacency}
+| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
+| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
+| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
+| | ... | ${dut1_to_dut2_ip4_static_adjacency}
+| | ... | ${dut2_to_dut1_ip4_static_adjacency}
 | | Then Send packet and verify headers
-| |      ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4}
-| |      ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
-| |      ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
+| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4}
+| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
+| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
 | | And Send packet and verify headers
-| |      ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4}
-| |      ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
-| |      ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
+| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4}
+| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
+| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
 | | When Disable Lisp | ${dut1_node}
 | | Then Packet transmission from port to port should fail
-| |      ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4}
-| |      ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
-| |      ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
+| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4}
+| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
+| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
 | | And Packet transmission from port to port should fail
-| |      ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4}
-| |      ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
-| |      ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
+| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4}
+| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
+| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
 | | When Enable Lisp | ${dut1_node}
 | | And Vpp Add Lisp Adjacency | ${dut1_node}
-| |     ... | ${dut1_to_dut2_ip4_static_adjacency['vni']}
-| |     ... | ${dut1_to_dut2_ip4_static_adjacency['deid']}
-| |     ... | ${dut1_to_dut2_ip4_static_adjacency['prefix']}
-| |     ... | ${dut1_to_dut2_ip4_static_adjacency['seid']}
-| |     ... | ${dut1_to_dut2_ip4_static_adjacency['prefix']}
+| | ... | ${dut1_to_dut2_ip4_static_adjacency['vni']}
+| | ... | ${dut1_to_dut2_ip4_static_adjacency['deid']}
+| | ... | ${dut1_to_dut2_ip4_static_adjacency['prefix']}
+| | ... | ${dut1_to_dut2_ip4_static_adjacency['seid']}
+| | ... | ${dut1_to_dut2_ip4_static_adjacency['prefix']}
 | | And Vpp Add Lisp Adjacency | ${dut2_node}
-| |     ... | ${dut2_to_dut1_ip4_static_adjacency['vni']}
-| |     ... | ${dut2_to_dut1_ip4_static_adjacency['deid']}
-| |     ... | ${dut2_to_dut1_ip4_static_adjacency['prefix']}
-| |     ... | ${dut2_to_dut1_ip4_static_adjacency['seid']}
-| |     ... | ${dut2_to_dut1_ip4_static_adjacency['prefix']}
+| | ... | ${dut2_to_dut1_ip4_static_adjacency['vni']}
+| | ... | ${dut2_to_dut1_ip4_static_adjacency['deid']}
+| | ... | ${dut2_to_dut1_ip4_static_adjacency['prefix']}
+| | ... | ${dut2_to_dut1_ip4_static_adjacency['seid']}
+| | ... | ${dut2_to_dut1_ip4_static_adjacency['prefix']}
 | | Then Wait Until Keyword Succeeds | 2x | 5s | Send packet and verify headers
-| |      ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4}
-| |      ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
-| |      ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
+| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4}
+| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
+| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
 | | And Wait Until Keyword Succeeds | 2x | 5s | Send packet and verify headers
-| |      ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4}
-| |      ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
-| |      ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
\ No newline at end of file
+| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4}
+| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
+| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
index 04c73db..b4c4459 100644 (file)
@@ -30,6 +30,7 @@
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP
 | ...
 | Test Setup | Set up functional test
+| ...
 | Test Teardown | Tear down functional test
 | ...
 | Documentation | *ip4-lispgpe-ip4 encapsulation test cases*
@@ -92,5 +93,3 @@
 | | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4}
 | | ... | ${tg_to_dut2} | ${tg_if2_mac} | ${tg_if1_mac}
 | | ... | ${tg_to_dut1} | ${tg_if2_mac} | ${tg_if1_mac}
-
-
index 512f63e..4b1f281 100644 (file)
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
 | ...
 | Documentation | *ip4-lispgpe-ip4 encapsulation test cases*
 | ...
index adb01ee..9c3b7af 100644 (file)
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test
 | ...
 | Documentation | *ip4-lispgpe-ip4 encapsulation test cases*
 | ...
 | | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4}
 | | ... | ${dut2_to_dut1_mac}
 | | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4}
-| | ... | ${dut1_to_dut2_mac}
\ No newline at end of file
+| | ... | ${dut1_to_dut2_mac}
index d85f009..d547624 100644 (file)
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
 | ...
 | Documentation | *ip4-lispgpe-ip4 encapsulation test cases*
 | ...
 | | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4}
 | | ... | ${dut2_to_dut1_mac}
 | | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4}
-| | ... | ${dut1_to_dut2_mac}
\ No newline at end of file
+| | ... | ${dut1_to_dut2_mac}
index 86d7ee8..b4d5c08 100644 (file)
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test
 | ...
 | Documentation | *ip4-lispgpe-ip4 encapsulation test cases*
 | ...
index f74af96..ee4e408 100644 (file)
 | Library  | resources.libraries.python.VPPUtil
 # import additional Lisp settings from resource file
 | Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ... | VM_ENV | HW_ENV
+| ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
+| ...
 | Documentation | *LISP static adjacency test cases*
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
index 2d1a9c4..7966d1c 100644 (file)
 | Library  | resources.libraries.python.VPPUtil
 # import additional Lisp settings from resource file
 | Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ... | VM_ENV | HW_ENV
+| ...
 | Test Setup | Set up functional test
+| ...
 | Test Teardown | Tear down functional test
+| ...
 | Documentation | *LISP static adjacency test cases*
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
index e5bc484..d1db5a8 100644 (file)
 | Library  | resources.libraries.python.VPPUtil
 # import additional Lisp settings from resource file
 | Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ... | VM_ENV | HW_ENV
+| ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Tear down functional test
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
+| ...
+| Test Teardown | Tear down LISP functional test
+| ...
 | Documentation | *LISP static adjacency test cases*
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
index f125dcb..3db32da 100644 (file)
 | Resource | resources/libraries/robot/bridge_domain.robot
 # Import configuration and test data:
 | Variables | resources/test_data/lisp/ipv4_lispgpe_ipv6/ipv4_lispgpe_ipsec_ipv6.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Set up functional test
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
 | ...
 | Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp, phy2lisp*
 | ...
index d67928c..b1f923d 100644 (file)
 | Resource | resources/libraries/robot/bridge_domain.robot
 # Import configuration and test data:
 | Variables | resources/test_data/lisp/ipv4_lispgpe_ipv6/ipv4_lispgpe_ipsec_ipv6.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Set up functional test
+| ...
 | Test Teardown | Tear down functional test
 | ...
 | Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp, phy2lisp*
index 66c8a58..e03d8ff 100644 (file)
 | Resource | resources/libraries/robot/bridge_domain.robot
 # Import configuration and test data:
 | Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipsec_ipv6.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Run Keywords | Set up functional test
 | ...        | AND          | Vpp All Ra Suppress Link Layer | ${nodes}
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
 | ...
 | Documentation | *IPv6 - ip6-ipsec-lispgpe-ip6 - main fib,
 | ... | vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp*
index e68ecf5..177550f 100644 (file)
 | Resource | resources/libraries/robot/bridge_domain.robot
 # Import configuration and test data:
 | Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipsec_ipv6.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH
 | ...
 | Test Setup | Run Keywords | Set up functional test
 | ...        | AND          | Vpp All Ra Suppress Link Layer | ${nodes}
+| ...
 | Test Teardown | Tear down functional test
 | ...
 | Documentation | *IPv6 - ip6-ipsec-lispgpe-ip6 - main fib,
index af550b3..7db90b6 100644 (file)
@@ -30,6 +30,7 @@
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP
 | ...
 | Test Setup | Set up functional test
+| ...
 | Test Teardown | Tear down functional test
 | ...
 | Documentation | *l2-lispgpe-ip6 encapsulation test cases*
@@ -93,5 +94,3 @@
 | | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6}
 | | ... | ${tg_to_dut2} | ${tg_if2_mac} | ${tg_if1_mac}
 | | ... | ${tg_to_dut1} | ${tg_if2_mac} | ${tg_if1_mac}
-
-
index d44aabc..5ddf50e 100644 (file)
 | Library  | resources.libraries.python.Trace
 # import additional Lisp settings from resource file
 | Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py
+| ...
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
 | ... | VM_ENV | HW_ENV
+| ...
 | Test Setup | Set up functional test
+| ...
 | Test Teardown | Tear down functional test
+| ...
 | Documentation | *LISP static adjacency test cases*
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
 | | ... | [Cfg2] Reconf LISP.
 | | ... | [Ver2] Verify packets are received again via LISP tunnel.
 | | ... | [Ref] RFC6830.
+| | ...
 | | Given Configure path in 3-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And   Set interfaces in 3-node circular topology up
-| | And   Configure IP addresses on interfaces
-| |       ... | ${dut1_node} | ${dut1_to_dut2}
-| |       ... | ${dut1_to_dut2_ip4o6} | ${dut_prefix4o6}
-| |       ... | ${dut1_node} | ${dut1_to_tg}
-| |       ... | ${dut1_to_tg_ip4o6} | ${tg_prefix4o6}
-| |       ... | ${dut2_node} | ${dut2_to_dut1}
-| |       ... | ${dut2_to_dut1_ip4o6} | ${dut_prefix4o6}
-| |       ... | ${dut2_node} | ${dut2_to_tg}
-| |       ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6}
-| | And   VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4o6}
-| | And   VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4o6}
-| | And   Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4o6}
-| |       ... | ${tg_to_dut2_mac}
-| | And   Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4o6}
-| |       ... | ${tg_to_dut1_mac}
+| | And Set interfaces in 3-node circular topology up
+| | And Configure IP addresses on interfaces
+| | ... | ${dut1_node} | ${dut1_to_dut2}
+| | ... | ${dut1_to_dut2_ip4o6} | ${dut_prefix4o6}
+| | ... | ${dut1_node} | ${dut1_to_tg}
+| | ... | ${dut1_to_tg_ip4o6} | ${tg_prefix4o6}
+| | ... | ${dut2_node} | ${dut2_to_dut1}
+| | ... | ${dut2_to_dut1_ip4o6} | ${dut_prefix4o6}
+| | ... | ${dut2_node} | ${dut2_to_tg}
+| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4o6}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4o6}
+| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4o6}
+| | ... | ${tg_to_dut2_mac}
+| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4o6}
+| | ... | ${tg_to_dut1_mac}
 | | And Vpp All RA Suppress Link Layer | ${nodes}
 | | When Configure LISP topology in 3-node circular topology
-| |      ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
-| |      ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
-| |      ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid}
-| |      ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency}
+| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
+| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
+| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid}
+| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency}
 | | Then Send packet and verify headers
-| |      ... | ${tg_node} | ${tg1_ip4o6} | ${tg2_ip4o6}
-| |      ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
-| |      ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
+| | ... | ${tg_node} | ${tg1_ip4o6} | ${tg2_ip4o6}
+| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
+| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
 | | And Send packet and verify headers
-| |      ... | ${tg_node} | ${tg2_ip4o6} | ${tg1_ip4o6}
-| |      ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
-| |      ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
+| | ... | ${tg_node} | ${tg2_ip4o6} | ${tg1_ip4o6}
+| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
+| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
 | | When Change LISP Configuration | ${dut1_node} | ${dut2_node}
-| |      ... | ${dut1_to_dut2} | ${dut2_to_dut1} | ${dut1_to_dut2_mac}
-| |      ... | ${dut2_to_dut1_mac} | ${dut1_to_dut2_ip4o6}
-| |      ... | ${dut2_to_dut1_ip4o6_reconf} | ${dut_prefix4o6}
-| |      ... | ${dut1_ip4o6_static_adjacency}
-| |      ... | ${dut1_ip4o6_static_adjacency_reconf}
+| | ... | ${dut1_to_dut2} | ${dut2_to_dut1} | ${dut1_to_dut2_mac}
+| | ... | ${dut2_to_dut1_mac} | ${dut1_to_dut2_ip4o6}
+| | ... | ${dut2_to_dut1_ip4o6_reconf} | ${dut_prefix4o6}
+| | ... | ${dut1_ip4o6_static_adjacency}
+| | ... | ${dut1_ip4o6_static_adjacency_reconf}
 | | Then Send packet and verify headers
-| |      ... | ${tg_node} | ${tg1_ip4o6} | ${tg2_ip4o6}
-| |      ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
-| |      ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
+| | ... | ${tg_node} | ${tg1_ip4o6} | ${tg2_ip4o6}
+| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
+| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac}
 | | And Send packet and verify headers
-| |      ... | ${tg_node} | ${tg2_ip4o6} | ${tg1_ip4o6}
-| |      ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
-| |      ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
\ No newline at end of file
+| | ... | ${tg_node} | ${tg2_ip4o6} | ${tg1_ip4o6}
+| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac}
+| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac}
index b0c519f..afcbab6 100644 (file)
 | ...
 | Test Setup | Run Keywords | Set up functional test
 | ... | AND | Vpp All Ra Suppress Link Layer | ${nodes}
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
 | ...
 | Documentation | *ip6-lispgpe-ip6 encapsulation test cases*
 | ...
 | | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
 | | ... | ${dut2_to_dut1_mac}
 | | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
-| | ... | ${dut1_to_dut2_mac}
\ No newline at end of file
+| | ... | ${dut1_to_dut2_mac}
index 73e6656..93399bb 100644 (file)
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP
 | ...
 | Test Setup | Run Keywords | Set up functional test
-| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes}
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Verify VPP PID in Teardown
+| ... | AND  | Vpp All Ra Suppress Link Layer | ${nodes}
+| ...
+| Test Teardown | Tear down LISP functional test
 | ...
 | Documentation | *ip6-lispgpe-ip6 encapsulation test cases*
 | ...
 | | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
 | | ... | ${dut2_to_dut1_mac}
 | | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
-| | ... | ${dut1_to_dut2_mac}
\ No newline at end of file
+| | ... | ${dut1_to_dut2_mac}
index 1f409c9..b41cb37 100644 (file)
 | ...
 | Test Setup | Run Keywords | Set up functional test
 | ... | AND | Vpp All Ra Suppress Link Layer | ${nodes}
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node}
-| ... | AND | Verify VPP PID in Teardown
+| ...
+| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node}
 | ...
 | Documentation | *ip6-lispgpe-ip6 encapsulation test cases*
 | ...
 | | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
 | | ... | ${dut2_to_dut1_mac}
 | | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
-| | ... | ${dut1_to_dut2_mac}
\ No newline at end of file
+| | ... | ${dut1_to_dut2_mac}
index 79503d8..281bbd0 100644 (file)
 | Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP
 | ...
 | Test Setup | Run Keywords | Set up functional test
-| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes}
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Show VAT History On All DUTs | ${nodes}
-| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
-| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
-| ... | AND | Verify VPP PID in Teardown
+| ... | AND  | Vpp All Ra Suppress Link Layer | ${nodes}
+| ...
+| Test Teardown | Tear down LISP functional test
 | ...
 | Documentation | *ip6-lispgpe-ip6 encapsulation test cases*
 | ...
 | | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
 | | ... | ${dut2_to_dut1_mac}
 | | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
-| | ... | ${dut1_to_dut2_mac}
\ No newline at end of file
+| | ... | ${dut1_to_dut2_mac}
index 99014a9..c1a8309 100644 (file)
 | Library  | resources.libraries.python.Tap
 | Library  | resources.libraries.python.Namespaces
 | Library  | resources.libraries.python.IPUtil
+| ...
 | Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
-| Test Setup | Run Keywords | Set up functional test
-| ...        | AND          | Clean Up Namespaces | ${nodes['DUT1']}
-| Test Teardown | Run Keywords | Tear down functional test
-| ...           | AND          | Clean Up Namespaces | ${nodes['DUT1']}
+| ...
+| Test Setup | Set up TAP functional test
+| ...
+| Test Teardown | Tear down TAP functional test
+| ...
 | Documentation | *Tap Interface CRUD Tests*
 | ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
 | ... | between nodes.
 | | ... | [Top] TG-DUT1-TG.
 | | ... | [Enc] Eth-IPv4-ICMPv4.
 | | ... | [Cfg] Set two TAP interfaces.
-| | ... | [Ver] Verify that TAP interface can be modified, deleted, and no other
-| | ... | TAP interface is affected.
-| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']}
-| | ... | ${nodes['TG']}
+| | ... | [Ver] Verify that TAP interface can be modified, deleted, and no\
+| | ... | other TAP interface is affected.
+| | ...
+| | Given Configure path in 2-node circular topology | ${nodes['TG']}
+| | ... | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1}
 | | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2}
index f7d267f..984b6e4 100644 (file)
 | Library  | resources.libraries.python.Tap
 | Library  | resources.libraries.python.Namespaces
 | Library  | resources.libraries.python.IPUtil
+| ...
 | Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
-| Test Setup | Run Keywords | Set up functional test
-| ...        | AND          | Clean Up Namespaces | ${nodes['DUT1']}
-| Test Teardown | Run Keywords | Tear down functional test
-| ... | AND | Linux Del Bridge | ${nodes['DUT1']} | ${bid_TAP}
-| ... | AND | Clean Up Namespaces | ${nodes['DUT1']}
+| ...
+| Test Setup | Set up TAP functional test
+| ...
+| Test Teardown | Tear down TAP functional test with Linux bridge | ${bid_TAP}
+| ...
 | Documentation | *Tap Interface Traffic Tests*
 | ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
 | ... | between nodes.
 | | [Documentation]
 | | ... | [Top] TG-DUT1-TG.
 | | ... | [Enc] Eth-IPv4-ICMPv4.
-| | ... | [Cfg] On DUT1 configure two
-| | ... | L2BD with two if's for each L2BD with MAC learning and one L2BD
-| | ... | joining two linux-TAP interfaces created by VPP located in namespace.
-| | ... | [Ver] Packet sent from TG is passed through all L2BD and received
+| | ... | [Cfg] On DUT1 configure two L2BD with two if's for each L2BD with MAC\
+| | ... | learning and one L2BD joining two linux-TAP interfaces created by VPP\
+| | ... | located in namespace.
+| | ... | [Ver] Packet sent from TG is passed through all L2BD and received\
 | | ... | back on TG. Then src_ip, dst_ip and MAC are checked.
 | | ...
-| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']}
-| | ... | ${nodes['TG']}
+| | Given Configure path in 2-node circular topology | ${nodes['TG']}
+| | ... | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1}
 | | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2}
index 8b3d25d..8cfd10a 100644 (file)
 | Library  | resources.libraries.python.Tap
 | Library  | resources.libraries.python.Namespaces
 | Library  | resources.libraries.python.IPUtil
+| ...
 | Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
-| Test Setup | Run Keywords | Set up functional test
-| ...        | AND          | Clean Up Namespaces | ${nodes['DUT1']}
-| Test Teardown | Run Keywords | Tear down functional test
-| ...           | AND          | Clean Up Namespaces | ${nodes['DUT1']}
+| ...
+| Test Setup | Set up TAP functional test
+| ...
+| Test Teardown | Tear down TAP functional test
+| ...
 | Documentation | *Tap Interface Traffic Tests*
 | ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
 | ... | between nodes.
 | | [Documentation]
 | | ... | [Top] TG-DUT1-TG.
 | | ... | [Enc] Eth-IPv4-ICMPv4.
-| | ... | [Cfg] On DUT1
-| | ... | configure one if into L2BD with MAC learning. Add two TAP interfaces
-| | ... | into this L2BD and assign them different SHG. Setup two namespaces
-| | ... | and assign two linux-TAP interfaces to it respectively.
-| | ... | [Ver] Packet is sent from TG to both linux-TAP interfaces and reply
+| | ... | [Cfg] On DUT1 configure one if into L2BD with MAC learning. Add two\
+| | ... | TAP interfaces into this L2BD and assign them different SHG. Setup\
+| | ... | two namespaces and assign two linux-TAP interfaces to it respectively.
+| | ... | [Ver] Packet is sent from TG to both linux-TAP interfaces and reply\
 | | ... | is checked. Ping from First linux-TAP to another should pass.
-| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']}
-| | ... | ${nodes['TG']}
+| | ...
+| | Given Configure path in 2-node circular topology | ${nodes['TG']}
+| | ... | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1}
 | | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2}
 | | And Create bridge domain | ${dut_node}
 | | ... | ${bd_id1} | learn=${TRUE}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${int1}
-| | ...                                     | ${bd_id1} | ${shg1}
+| | ... | ${bd_id1} | ${shg1}
 | | And Add interface to bridge domain | ${dut_node} | ${int2}
-| | ...                                     | ${bd_id1} | ${shg2}
-| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1}
-| | ... | ${tap1_NM_mac} | ${tg_to_dut_if1_mac}
+| | ... | ${bd_id1} | ${shg2}
+| | Then Send ICMP echo request and verify answer | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${tap1_NM_mac} | ${tg_to_dut_if1_mac}
 | | ... | ${tap1_NM_ip} | ${tg_ip_address_SHG}
 | | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1}
 | | ... | ${tap2_NM_mac} | ${tg_to_dut_if1_mac}
 | | ... | ${tap2_NM_SHG} | ${tg_ip_address_SHG}
-| | And Send Ping From Node To Dst | ${dut_node} | ${tap1_NM_ip} | namespace=${namespace2}
-| | And Send Ping From Node To Dst | ${dut_node} | ${tap2_NM_SHG} | namespace=${namespace1}
+| | And Send Ping From Node To Dst | ${dut_node} | ${tap1_NM_ip}
+| | ... | namespace=${namespace2}
+| | And Send Ping From Node To Dst | ${dut_node} | ${tap2_NM_SHG}
+| | ... | namespace=${namespace1}
 
 | TC02: Tap Interface BD - Same Split Horizon
 | | [Documentation]
 | | ... | [Top] TG-DUT1-TG.
 | | ... | [Enc] Eth-IPv4-ICMPv4.
-| | ... | [Cfg] On DUT1
-| | ... | configure one if into L2BD with MAC learning. Add two TAP interfaces
-| | ... | into this L2BD and assign them same SHG. Setup two namespaces
-| | ... | and assign two linux-TAP interfaces to it respectively.
-| | ... | [Ver] Packet is sent from TG to both linux-TAP interfaces and reply
+| | ... | [Cfg] On DUT1 configure one if into L2BD with MAC learning. Add two\
+| | ... | TAP interfaces into this L2BD and assign them same SHG. Setup two\
+| | ... | namespaces and assign two linux-TAP interfaces to it respectively.
+| | ... | [Ver] Packet is sent from TG to both linux-TAP interfaces and reply\
 | | ... | is checked. Ping from First linux-TAP to another should fail.
-| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']}
-| | ... | ${nodes['TG']}
+| | ...
+| | Given Configure path in 2-node circular topology | ${nodes['TG']}
+| | ... | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1}
 | | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2}
 | | And Create bridge domain | ${dut_node}
 | | ... | ${bd_id1} | learn=${TRUE}
 | | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ...                                     | ${bd_id1}
+| | ... | ${bd_id1}
 | | And Add interface to bridge domain | ${dut_node} | ${int1}
-| | ...                                     | ${bd_id1} | ${shg1}
+| | ... | ${bd_id1} | ${shg1}
 | | And Add interface to bridge domain | ${dut_node} | ${int2}
-| | ...                                     | ${bd_id1} | ${shg1}
-| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1}
-| | ... | ${tap1_NM_mac} | ${tg_to_dut_if1_mac}
+| | ... | ${bd_id1} | ${shg1}
+| | Then Send ICMP echo request and verify answer | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${tap1_NM_mac} | ${tg_to_dut_if1_mac}
 | | ... | ${tap1_NM_ip} | ${tg_ip_address_SHG}
 | | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1}
 | | ... | ${tap2_NM_mac} | ${tg_to_dut_if1_mac}
 | | ... | ${tap2_NM_SHG} | ${tg_ip_address_SHG}
-| | And Run Keyword And Expect Error | Ping Not Successful | Send Ping From Node To Dst
-| | ... | ${dut_node} | ${tap2_NM_SHG} | namespace=${namespace1}
-| | And Run Keyword And Expect Error | Ping Not Successful | Send Ping From Node To Dst
-| | ... | ${dut_node} | ${tap1_NM_ip} | namespace=${namespace2}
+| | And Run Keyword And Expect Error | Ping Not Successful
+| | ... | Send Ping From Node To Dst | ${dut_node} | ${tap2_NM_SHG}
+| | ... | namespace=${namespace1}
+| | And Run Keyword And Expect Error | Ping Not Successful
+| | ... | Send Ping From Node To Dst | ${dut_node} | ${tap1_NM_ip}
+| | ... | namespace=${namespace2}
index 7b84a00..9500deb 100644 (file)
 | Library  | resources.libraries.python.Tap
 | Library  | resources.libraries.python.Namespaces
 | Library  | resources.libraries.python.IPUtil
+| ...
 | Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
-| Test Setup | Run Keywords | Set up functional test
-| ...        | AND          | Clean Up Namespaces | ${nodes['DUT1']}
-| Test Teardown | Run Keywords | Tear down functional test
-| ...           | AND          | Clean Up Namespaces | ${nodes['DUT1']}
+| ...
+| Test Setup | Set up TAP functional test
+| ...
+| Test Teardown | Tear down TAP functional test
+| ...
 | Documentation | *Tap Interface Traffic Tests*
 | ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
 | ... | between nodes.
 | | [Documentation]
 | | ... | [Top] TG-DUT1-TG.
 | | ... | [Enc] Eth-IPv4-ICMPv4.
-| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which
-| | ... | one is TAP interface ( dut_to_tg_if and TAP ).
-| | ... | and one is linux-TAP.
-| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is
+| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\
+| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP.
+| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\
 | | ... | received on TG.
-| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']}
-| | ... | ${nodes['TG']}
+| | ...
+| | Given Configure path in 2-node circular topology | ${nodes['TG']}
+| | ... | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} |
 | | And Set Interface Address
 | | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac}
 | |¬†And Add Arp On Dut | ${dut_node} | ${int1}
 | | ... | ${tap1_NM_ip} | ${tap1_NM_mac}
-| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1}
-| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac}
+| | Then Send ICMP echo request and verify answer | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac}
 | | ... | ${tap1_NM_ip} | ${tg_ip_address}
 
 | TC02: Tap Interface IP Ping With Namespace
 | | [Documentation]
 | | ... | [Top] TG-DUT1-TG.
 | | ... | [Enc] Eth-IPv4-ICMPv4.
-| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which
-| | ... | one is TAP interface ( dut_to_tg_if and TAP ).
-| | ... | and one is linux-TAP in namespace.
-| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is
+| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\
+| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP in\
+| | ... | namespace.
+| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\
 | | ... | received on TG.
-| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']}
-| | ... | ${nodes['TG']}
+| | ...
+| | Given Configure path in 2-node circular topology | ${nodes['TG']}
+| | ... | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} |
 | | And Set Interface Address
 | | ... | ${tap1_NM_ip} | ${tap1_NM_mac}
 | | And Add Route | ${dut_node}
 | | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} | ${namespace1}
-| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1}
-| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac}
+| | Then Send ICMP echo request and verify answer | ${tg_node}
+| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac}
 | | ... | ${tap1_NM_ip} | ${tg_ip_address}
index 7ac0ec6..958acc2 100644 (file)
@@ -50,7 +50,7 @@
 | ${sock_vm2_2}= | /tmp/sock4
 
 *** Test Cases ***
-| TC01:  Qemu reconnects to VPPs vhost-user when Qemu is killed and restarted
+| TC01: Qemu reconnects to VPPs vhost-user when Qemu is killed and restarted
 | | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Set interfaces in 2-node circular topology up
 | | ... | ${vhost_if3}
 | | And Vpp Add L2 Bridge Domain | ${dut_node} | ${104} | ${vxlan4}
 | | ... | ${vhost_if4}
-| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm1_1} | ${sock_vm1_2}
-| | ... | ${1}
-| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm2_1} | ${sock_vm2_2}
-| | ... | ${2}
+| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm1_1}
+| | ... | ${sock_vm1_2} | ${1}
+| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm2_1}
+| | ... | ${sock_vm2_2} | ${2}
 | | And Check traffic through VM
 | | When Run keyword | qemu-1.Qemu Kill
 | | ${vm1}= | And Run Keyword | qemu-1.Qemu Start
 | | ... | ${vhost_if3}
 | | And Vpp Add L2 Bridge Domain | ${dut_node} | ${104} | ${vxlan4}
 | | ... | ${vhost_if4}
-| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm1_1} | ${sock_vm1_2}
-| | ... | ${1}
-| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm2_1} | ${sock_vm2_2}
-| | ... | ${2}
+| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm1_1}
+| | ... | ${sock_vm1_2} | ${1}
+| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm2_1}
+| | ... | ${sock_vm2_2} | ${2}
 | | And Check traffic through VM
 | | And Verify VPP PID in Teardown
 | | When Setup All Duts | ${nodes}
index b55f91a..1c36876 100644 (file)
@@ -22,8 +22,9 @@
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
-| Test Teardown | Tear down performance discovery test | ${min_rate}pps | ${framesize}
-| ... | ${traffic_profile}
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
 | ...
 | Documentation | *RFC2544: Pkt throughput L2BD test cases*
 | ...
index a43feb2..a3e5184 100644 (file)
@@ -23,8 +23,9 @@
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
-| Test Teardown | Tear down performance discovery test | ${min_rate}pps | ${framesize}
-| ... | ${traffic_profile}
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
 | ...
 | Documentation | *RFC2544: Pkt throughput L2XC with 802.1ad test cases*
 | ...
index 3977831..d1ff120 100644 (file)
@@ -23,8 +23,9 @@
 | ...
 | ...
 | Test Setup | Set up performance test
-| Test Teardown | Tear down performance discovery test | ${min_rate}pps | ${framesize}
-| ... | ${traffic_profile}
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
 | ...
 | Documentation | *RFC2544: Pkt throughput L2XC with 802.1q test cases*
 | ...
index 695d1c1..4edbcc1 100644 (file)
@@ -23,8 +23,7 @@
 | Test Teardown | Run Keywords
 | ... | Show Bridge Domain Data On All DUTs
 | ... | AND | Tear down performance test with vhost and VM with dpdk-testpmd
-| ... | ${min_rate}pps | ${framesize}
-| ... | ${traffic_profile}
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
 | ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
 | ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs}
 | Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost*
index cf3ea9c..bd75266 100644 (file)
@@ -22,8 +22,9 @@
 | Suite Teardown | Tear down 3-node performance topology
 | ...
 | Test Setup | Set up performance test
-| Test Teardown | Tear down performance discovery test | ${min_rate}pps | ${framesize}
-| ... | ${traffic_profile}
+| ...
+| Test Teardown | Tear down performance discovery test | ${min_rate}pps
+| ... | ${framesize} | ${traffic_profile}
 | ...
 | Documentation | *RFC2544: Pkt throughput L2BD test cases*
 | ...
index a44f8dd..e6c9cca 100644 (file)
@@ -24,8 +24,7 @@
 | ...
 | Test Setup | Set up performance test
 | Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
-| ... | ${min_rate}pps | ${framesize}
-| ... | ${traffic_profile}
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
 | ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
 | ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs}
 | ...