X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fbgpcep%2Fbgpfunct%2Fbgp_ipv6_basic.robot;h=f9f70f466fe5eb896c873769d11429605689079c;hb=bb40dc3a88bc93489e703c24e25469dd6aaaa74b;hp=c165bd897c0d44b9c07ef78066a38e4c486c7b1c;hpb=7e5a8e3140f4ae6ae45e05047650617b3f85253a;p=integration%2Ftest.git diff --git a/csit/suites/bgpcep/bgpfunct/bgp_ipv6_basic.robot b/csit/suites/bgpcep/bgpfunct/bgp_ipv6_basic.robot index c165bd897c..f9f70f466f 100644 --- a/csit/suites/bgpcep/bgpfunct/bgp_ipv6_basic.robot +++ b/csit/suites/bgpcep/bgpfunct/bgp_ipv6_basic.robot @@ -1,64 +1,79 @@ *** Settings *** -Documentation Functional test for ipv6 connection with bgp. +Documentation Functional test for ipv6 connection with bgp. ... -... Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. +... Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. ... -... This program and the accompanying materials are made available under the -... terms of the Eclipse Public License v1.0 which accompanies this distribution, -... and is available at http://www.eclipse.org/legal/epl-v10.html +... This program and the accompanying materials are made available under the +... terms of the Eclipse Public License v1.0 which accompanies this distribution, +... and is available at http://www.eclipse.org/legal/epl-v10.html ... -... This suite tests simple connection between one ibgp peer (exabgp) and Odl. -... Peer is configured with ipv6, and exabgp connectes to odl via ipv6. -... Exabgp sends one ipv6 unicast route, which presence is verified in -... example-ipv6-topology. Tests this connection multiple times, with -... different ipv6 accepted formats, e.g. (::1, 0:0:0:0:0:0:0:1, full text) -... This suite also tests a combination of afi-safis on odl and exabgp. -... ipv6 route injection is carried out from odl to the ibgp peer without -... ipv6 family enabled on the peer device and checked for exceptions -Suite Setup Start_Suite -Suite Teardown Stop_Suite -Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing -Library RequestsLibrary -Library SSHLibrary -Resource ../../../libraries/BGPcliKeywords.robot -Resource ../../../libraries/ExaBgpLib.robot -Resource ../../../libraries/Genius.robot -Resource ../../../libraries/SetupUtils.robot -Resource ../../../libraries/SSHKeywords.robot -Resource ../../../libraries/TemplatedRequests.robot -Resource ../../../libraries/Utils.robot -Resource ../../../variables/Variables.robot -Resource ../../../libraries/KarafKeywords.robot +... This suite tests simple connection between one ibgp peer (exabgp) and Odl. +... Peer is configured with ipv6, and exabgp connectes to odl via ipv6. +... Exabgp sends one ipv6 unicast route, which presence is verified in +... example-ipv6-topology. Tests this connection multiple times, with +... different ipv6 accepted formats, e.g. (::1, 0:0:0:0:0:0:0:1, full text) +... This suite also tests a combination of afi-safis on odl and exabgp. +... ipv6 route injection is carried out from odl to the ibgp peer without +... ipv6 family enabled on the peer device and checked for exceptions + +Library RequestsLibrary +Library SSHLibrary +Resource ../../../libraries/BGPcliKeywords.robot +Resource ../../../libraries/ExaBgpLib.robot +Resource ../../../libraries/Genius.robot +Resource ../../../libraries/SetupUtils.robot +Resource ../../../libraries/SSHKeywords.robot +Resource ../../../libraries/TemplatedRequests.robot +Resource ../../../libraries/Utils.robot +Resource ../../../variables/Variables.robot +Resource ../../../libraries/KarafKeywords.robot + +Suite Setup Start_Suite +Suite Teardown Stop_Suite +Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + *** Variables *** -${BGP_VAR_FOLDER} ${CURDIR}/../../../variables/bgpfunctional/ipv6 -${CONFIG_SESSION} config-session -${CONTROLLER_IPV6} ::1 -${EXABGP_ID} 1.2.3.4 -${EXABGP_ID_2} 127.0.0.1 -${EXABGP_CFG} exaipv6.cfg -${EXABGP_LOG} exaipv6.log -${EXABGP2_CFG} exaipv4.cfg -${EXABGP2_LOG} exaipv4.log -${EXABGP3_CFG} exabgp_graceful_restart.cfg -${EXABGP3_LOG} exabgp_graceful_restart.log -${EXABGP4_CFG} exa4.cfg -${EXABGP4_LOG} exa4.log -${IPV4_IP} 127.0.0.1 -${CONTROLLER_IPV4} ${ODL_SYSTEM_IP} -${IPV6_IP} 2607:f0d0:1002:0011:0000:0000:0000:0002 -${IPV6_IP_2} 2607:f0d0:1002:11:0:0:0:2 -${IPV6_IP_3} 2607:f0d0:1002:11::2 -${IPV6_IP_GW} 2607:f0d0:1002:0011:0000:0000:0000:0001 -${HOLDTIME} 180 -${RIB_INSTANCE} example-bgp-rib +${BGP_VAR_FOLDER} ${CURDIR}/../../../variables/bgpfunctional/ipv6 +${CONFIG_SESSION} config-session +${CONTROLLER_IPV6} ::1 +${EXABGP_ID} 1.2.3.4 +${EXABGP_ID_2} 127.0.0.1 +${EXABGP_CFG} exaipv6.cfg +${EXABGP_LOG} exaipv6.log +${EXABGP2_CFG} exaipv4.cfg +${EXABGP2_LOG} exaipv4.log +${EXABGP3_CFG} exabgp_graceful_restart.cfg +${EXABGP3_LOG} exabgp_graceful_restart.log +${EXABGP4_CFG} exa4.cfg +${EXABGP4_LOG} exa4.log +${IPV4_IP} 127.0.0.1 +${CONTROLLER_IPV4} ${ODL_SYSTEM_IP} +${IPV6_IP} 2607:f0d0:1002:0011:0000:0000:0000:0002 +${IPV6_IP_2} 2607:f0d0:1002:11:0:0:0:2 +${IPV6_IP_3} 2607:f0d0:1002:11::2 +${IPV6_IP_GW} 2607:f0d0:1002:0011:0000:0000:0000:0001 +${IPV6_PREFIX_LENGTH} 64 +${HOLDTIME} 180 +${RIB_INSTANCE} example-bgp-rib + *** Test Cases *** Reconfigure_ODL_To_Accept_Connections [Documentation] Configure BGP peer modules with initiate-connection set to false with short ipv6 address. - &{mapping} Create Dictionary IP=${IPV6_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Put_As_Xml_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=${IPV6_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/bgp_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Start_Exabgp [Documentation] Start exabgp with @@ -73,8 +88,15 @@ Verify_Ipv6_Topology_Filled Delete_Bgp_Peer_Configuration [Documentation] Revert the BGP configuration to the original state: without any configured peers. - &{mapping} Create Dictionary IP=${IPV6_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} + &{mapping} Create Dictionary + ... IP=${IPV6_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} Verify_Ipv6_Topology_Empty @@ -84,9 +106,19 @@ Verify_Ipv6_Topology_Empty Reconfigure_ODL_To_Accept_Connections_2 [Documentation] Configure BGP peer modules with initiate-connection set to false with ipv6 address without "::" shortened version. - &{mapping} Create Dictionary IP=${IPV6_IP_2} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Put_As_Xml_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=${IPV6_IP_2} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/bgp_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Verify_Ipv6_Topology_Filled_2 [Documentation] Verifies that example-ipv6-topology is filled after configuring the peer for the second time. @@ -95,8 +127,15 @@ Verify_Ipv6_Topology_Filled_2 Delete_Bgp_Peer_Configuration_2 [Documentation] Revert the BGP configuration to the original state: without any configured peers. - &{mapping} Create Dictionary IP=${IPV6_IP_2} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} + &{mapping} Create Dictionary + ... IP=${IPV6_IP_2} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} Verify_Ipv6_Topology_Empty_2 @@ -106,9 +145,19 @@ Verify_Ipv6_Topology_Empty_2 Reconfigure_ODL_To_Accept_Connections_3 [Documentation] Configure BGP peer modules with initiate-connection set to false with full text ipv6 address. - &{mapping} Create Dictionary IP=${IPV6_IP_3} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Put_As_Xml_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=${IPV6_IP_3} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/bgp_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Verify_Ipv6_Topology_Filled_3 [Documentation] Verifies that example-ipv6-topology is filled after configuring the peer for the third time. @@ -117,8 +166,15 @@ Verify_Ipv6_Topology_Filled_3 Delete_Bgp_Peer_Configuration_3 [Documentation] Revert the BGP configuration to the original state: without any configured peers. - &{mapping} Create Dictionary IP=${IPV6_IP_3} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} + &{mapping} Create Dictionary + ... IP=${IPV6_IP_3} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} Verify_Ipv6_Topology_Empty_3 @@ -134,16 +190,41 @@ Stop_All_Exabgps Configure_App_Peer [Documentation] Configures bgp application peer. [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing - &{mapping} Create Dictionary IP=127.0.0.12 HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Put_As_Xml_Templated ${BGP_VAR_FOLDER}/application_peer mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=127.0.0.12 + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/application_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Reconfigure_ODL_To_Accept_Connections_4 [Documentation] Configure BGP peer modules with initiate-connection set to false with short ipv6 address. - &{mapping} Create Dictionary IP=${IPV4_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Put_As_Xml_Templated ${BGP_VAR_FOLDER}/bgp_neighbor_rib mapping=${mapping} session=${CONFIG_SESSION} - RequestsLibrary.Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS} timeout=5 + &{mapping} Create Dictionary + ... IP=${IPV4_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/bgp_neighbor_rib + ... mapping=${mapping} + ... session=${CONFIG_SESSION} + RequestsLibrary.Create Session + ... session + ... http://${ODL_SYSTEM_IP}:${RESTCONFPORT} + ... auth=${AUTH} + ... headers=${HEADERS} + ... timeout=5 Start_Exabgp_2 [Documentation] Start exabgp and Verify BGP connection @@ -153,28 +234,71 @@ Start_Exabgp_2 Inject_Ipv6_Route_1 [Documentation] Inject the Ipv6 route from controller - &{mapping} Create Dictionary IP=127.0.0.12 HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Post_As_Xml_Templated ${BGP_VAR_FOLDER}/ipv6_route_injection mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=127.0.0.12 + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Post_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/ipv6_route_injection + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Check_Ipv6_Prefix_In_Bgp_Rib_1 [Documentation] Check for the presence of Ipv6 Prefix in the BGP RIB - &{mapping} Create Dictionary IP=${CONTROLLER_IPV4} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - BuiltIn.Wait_Until_Keyword_Succeeds 5x 2s TemplatedRequests.Get_As_Json_Templated ${BGP_VAR_FOLDER}/bgp_rib session=${CONFIG_SESSION} mapping=${mapping} + &{mapping} Create Dictionary + ... IP=${CONTROLLER_IPV4} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 5x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${BGP_VAR_FOLDER}/bgp_rib + ... session=${CONFIG_SESSION} + ... mapping=${mapping} Delete_Injected_Ipv6_Routes_1 [Documentation] Delete the injected IPV6 routes - &{mapping} Create Dictionary IP=127.0.0.12 HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/ipv6_route_injection mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=127.0.0.12 + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Delete_Templated + ... ${BGP_VAR_FOLDER}/ipv6_route_injection + ... mapping=${mapping} + ... session=${CONFIG_SESSION} KarafKeywords.Fail If Exceptions Found During Test ${SUITE_NAME}.${TEST_NAME} fail=${True} Delete_Bgp_Peer_Configuration_4 [Documentation] Revert the BGP configuration to the original state: without any configured peers. - &{mapping} Create Dictionary IP=${IPV4_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/bgp_neighbor_rib mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=${IPV4_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Delete_Templated + ... ${BGP_VAR_FOLDER}/bgp_neighbor_rib + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Verify_Ipv6_Topology_Empty_4 [Documentation] Verifies that example-ipv6-topology is empty after deconfiguring peer for the first time. @@ -183,40 +307,100 @@ Verify_Ipv6_Topology_Empty_4 Reconfigure_ODL_To_Accept_Connections_5 [Documentation] Configure BGP peer modules with initiate-connection set to false with short ipv6 address. - &{mapping} Create Dictionary IP=${IPV4_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Put_As_Xml_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=${IPV4_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/bgp_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Inject_Ipv6_Route_2 [Documentation] Inject the Ipv6 route from controller - &{mapping} Create Dictionary IP=127.0.0.12 HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Post_As_Xml_Templated ${BGP_VAR_FOLDER}/ipv6_route_injection mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=127.0.0.12 + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Post_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/ipv6_route_injection + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Check_Ipv6_Prefix_In_Bgp_Rib_2 [Documentation] Check for the presence of Ipv6 Prefix in the BGP RIB - &{mapping} Create Dictionary IP=${CONTROLLER_IPV4} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - BuiltIn.Wait_Until_Keyword_Succeeds 5x 2s TemplatedRequests.Get_As_Json_Templated ${BGP_VAR_FOLDER}/bgp_rib session=${CONFIG_SESSION} mapping=${mapping} + &{mapping} Create Dictionary + ... IP=${CONTROLLER_IPV4} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 5x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${BGP_VAR_FOLDER}/bgp_rib + ... session=${CONFIG_SESSION} + ... mapping=${mapping} Delete_Injected_Ipv6_Routes_2 [Documentation] Delete the injected IPV6 routes - &{mapping} Create Dictionary IP=127.0.0.12 HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/ipv6_route_injection mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=127.0.0.12 + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Delete_Templated + ... ${BGP_VAR_FOLDER}/ipv6_route_injection + ... mapping=${mapping} + ... session=${CONFIG_SESSION} KarafKeywords.Fail If Exceptions Found During Test ${SUITE_NAME}.${TEST_NAME} fail=${True} Delete_App_Peer [Documentation] Deletes bgp application peer. [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing - &{mapping} Create Dictionary IP=127.0.0.12 HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/application_peer mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=127.0.0.12 + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Delete_Templated + ... ${BGP_VAR_FOLDER}/application_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Delete_Bgp_Peer_Configuration_5 [Documentation] Revert the BGP configuration to the original state: without any configured peers. - &{mapping} Create Dictionary IP=${IPV4_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} + &{mapping} Create Dictionary + ... IP=${IPV4_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} Verify_Ipv6_Topology_Empty_5 @@ -233,9 +417,19 @@ Stop_All_Exabgps_2 Reconfigure_ODL_To_Accept_Connections_6 [Documentation] Configure BGP peer modules with initiate-connection set to false with short ipv6 address. - &{mapping} Create Dictionary IP=${IPV6_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Put_As_Xml_Templated ${BGP_VAR_FOLDER}/graceful_restart mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=${IPV6_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/graceful_restart + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Start_Exabgp_3 [Documentation] Start exabgp with @@ -258,9 +452,19 @@ Start_Exabgp_4 Delete_Bgp_Peer_Configuration_6 [Documentation] Revert the BGP configuration to the original state: without any configured peers. - &{mapping} Create Dictionary IP=${IPV6_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/graceful_restart mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=${IPV6_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Delete_Templated + ... ${BGP_VAR_FOLDER}/graceful_restart + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Stop_All_Exabgps_4 [Documentation] Save exabgp logs as exabgp_graceful_restart.log, and stop exabgp with ctrl-c bash signal @@ -270,9 +474,19 @@ Stop_All_Exabgps_4 Reconfigure_ODL_To_Accept_Connections_7 [Documentation] Configure BGP peer modules with initiate-connection set to false with short ipv6 address. [Tags] exclude - &{mapping} Create Dictionary IP=${IPV6_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} - TemplatedRequests.Put_As_Xml_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} + &{mapping} Create Dictionary + ... IP=${IPV6_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VAR_FOLDER}/bgp_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} Start_Exabgp_5 [Documentation] Start exabgp with @@ -283,8 +497,15 @@ Start_Exabgp_5 Delete_Bgp_Peer_Configuration_7 [Documentation] Revert the BGP configuration to the original state: without any configured peers. [Tags] exclude - &{mapping} Create Dictionary IP=${IPV6_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} INITIATE=false BGP_RIB=${RIB_INSTANCE} - ... PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${RIB_INSTANCE} RIB_INSTANCE_NAME=${RIB_INSTANCE} + &{mapping} Create Dictionary + ... IP=${IPV6_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB=${RIB_INSTANCE} + ... PASSIVE_MODE=true + ... BGP_RIB_OPENCONFIG=${RIB_INSTANCE} + ... RIB_INSTANCE_NAME=${RIB_INSTANCE} TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} Stop_All_Exabgps_5 @@ -293,11 +514,12 @@ Stop_All_Exabgps_5 BGPcliKeywords.Store_File_To_Workspace ${EXABGP4_LOG} ${EXABGP4_LOG} ExaBgpLib.Stop_ExaBgp + *** Keywords *** Start_Suite [Documentation] Suite setup keyword. SetupUtils.Setup_Utils_For_Setup_And_Teardown - ${conn_id}= SSHLibrary.Open Connection ${ODL_SYSTEM_IP} prompt=${DEFAULT_LINUX_PROMPT} timeout=10s + ${conn_id} SSHLibrary.Open Connection ${ODL_SYSTEM_IP} prompt=${DEFAULT_LINUX_PROMPT} timeout=10s Builtin.Set_Suite_Variable ${conn_id} SSHKeywords.Flexible_Controller_Login Configure_Ipv6_Network @@ -319,72 +541,85 @@ Stop_Suite Configure_Ipv6_Network [Documentation] Reconfigures basic network settings on controller - SSHLibrary.Execute_Command sudo sh -c 'echo "NETWORKING_IPV6=yes" >> /etc/sysconfig/network' - SSHLibrary.Execute_Command sudo sh -c 'echo "IPV6INIT=yes" >> /etc/sysconfig/network-scripts/ifcfg-eth0' - SSHLibrary.Execute_Command sudo sh -c 'echo "IPV6ADDR=${IPV6_IP}" >> /etc/sysconfig/network-scripts/ifcfg-eth0' - SSHLibrary.Execute_Command sudo sh -c 'echo "IPV6_DEFAULTGW=${IPV6_IP_GW}" >> /etc/sysconfig/network-scripts/ifcfg-eth0' - SSHLibrary.Execute_Command sudo /etc/init.d/network restart + SSHLibrary.Execute_Command sudo ip -6 addr add ${IPV6_IP}/${IPV6_PREFIX_LENGTH} dev eth0 + SSHLibrary.Execute_Command sudo ip -6 route add default via ${IPV6_IP_GW} + ${stdout} SSHLibrary.Execute_Command sudo ip -6 addr show + Log ${stdout} + ${stdout} SSHLibrary.Execute_Command sudo ip -6 route show + Log ${stdout} Verify_Rib_Status_Empty [Documentation] Verifies that example-ipv6-topology is empty - BuiltIn.Wait_Until_Keyword_Succeeds 5x 2s TemplatedRequests.Get_As_Json_Templated ${BGP_VAR_FOLDER}/ipv6_topology_empty session=${CONFIG_SESSION} verify=True + BuiltIn.Wait_Until_Keyword_Succeeds + ... 5x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${BGP_VAR_FOLDER}/ipv6_topology_empty + ... session=${CONFIG_SESSION} + ... verify=True Verify_Rib_Status_Filled [Documentation] Verifies that example-ipv6-topology is filled with ipv6 route - BuiltIn.Wait_Until_Keyword_Succeeds 5x 2s TemplatedRequests.Get_As_Json_Templated ${BGP_VAR_FOLDER}/ipv6_topology_filled session=${CONFIG_SESSION} verify=True + BuiltIn.Wait_Until_Keyword_Succeeds + ... 5x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${BGP_VAR_FOLDER}/ipv6_topology_filled + ... session=${CONFIG_SESSION} + ... verify=True Upload_Config_Files [Documentation] Uploads exabgp config files SSHLibrary.Put_File ${BGP_VAR_FOLDER}/${EXABGP_CFG} . - @{cfgfiles}= SSHLibrary.List_Files_In_Directory . *.cfg + @{cfgfiles} SSHLibrary.List_Files_In_Directory . *.cfg FOR ${cfgfile} IN @{cfgfiles} SSHLibrary.Execute_Command sed -i -e 's/EXABGPIP/${IPV6_IP}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ODLIP/${CONTROLLER_IPV6}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ROUTERID/${EXABGP_ID}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ROUTEREFRESH/disable/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ADDPATH/disable/g' ${cfgfile} - ${stdout}= SSHLibrary.Execute_Command cat ${cfgfile} + ${stdout} SSHLibrary.Execute_Command cat ${cfgfile} Log ${stdout} END Upload_Config_Files_exabgp_ipv4 [Documentation] Uploads exabgp config files SSHLibrary.Put_File ${BGP_VAR_FOLDER}/${EXABGP2_CFG} . - @{cfgfiles}= SSHLibrary.List_Files_In_Directory . *ipv4.cfg + @{cfgfiles} SSHLibrary.List_Files_In_Directory . *ipv4.cfg FOR ${cfgfile} IN @{cfgfiles} SSHLibrary.Execute_Command sed -i -e 's/EXABGPIP/127.0.0.1/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ODLIP/${ODL_SYSTEM_IP}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ROUTERID/127.0.0.1/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ROUTEREFRESH/disable/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ADDPATH/disable/g' ${cfgfile} - ${stdout}= SSHLibrary.Execute_Command cat ${cfgfile} + ${stdout} SSHLibrary.Execute_Command cat ${cfgfile} Log ${stdout} END Upload_Config_Files_exabgp_graceful_restart [Documentation] Uploads exabgp config files SSHLibrary.Put_File ${BGP_VAR_FOLDER}/${EXABGP3_CFG} . - @{cfgfiles}= SSHLibrary.List_Files_In_Directory . *restart.cfg + @{cfgfiles} SSHLibrary.List_Files_In_Directory . *restart.cfg FOR ${cfgfile} IN @{cfgfiles} SSHLibrary.Execute_Command sed -i -e 's/EXABGPIP/${IPV6_IP}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ODLIP/${CONTROLLER_IPV6}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ROUTERID/${EXABGP_ID}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ROUTEREFRESH/disable/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ADDPATH/disable/g' ${cfgfile} - ${stdout}= SSHLibrary.Execute_Command cat ${cfgfile} + ${stdout} SSHLibrary.Execute_Command cat ${cfgfile} Log ${stdout} END Upload_Config_Files_Exabgp_AS_Value_Reconfigured [Documentation] Uploads exabgp config files SSHLibrary.Put_File ${BGP_VAR_FOLDER}/${EXABGP4_CFG} . - @{cfgfiles}= SSHLibrary.List_Files_In_Directory . *exa4.cfg + @{cfgfiles} SSHLibrary.List_Files_In_Directory . *exa4.cfg FOR ${cfgfile} IN @{cfgfiles} SSHLibrary.Execute_Command sed -i -e 's/EXABGPIP/${IPV6_IP}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ODLIP/${CONTROLLER_IPV6}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ROUTERID/${EXABGP_ID}/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ROUTEREFRESH/disable/g' ${cfgfile} SSHLibrary.Execute_Command sed -i -e 's/ADDPATH/disable/g' ${cfgfile} - ${stdout}= SSHLibrary.Execute_Command cat ${cfgfile} + ${stdout} SSHLibrary.Execute_Command cat ${cfgfile} Log ${stdout} END