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=aab5e569c12374fcce1fb835e5bb2070aebe550e;hpb=b1ed24ed1530a8d7d63ba85b3826d726da1d0d0e;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 aab5e569c1..f9f70f466f 100644 --- a/csit/suites/bgpcep/bgpfunct/bgp_ipv6_basic.robot +++ b/csit/suites/bgpcep/bgpfunct/bgp_ipv6_basic.robot @@ -1,59 +1,79 @@ *** Settings *** -Documentation Functional test for ipv6 connection with bgp. -... -... 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 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 +Documentation Functional test for ipv6 connection with bgp. +... +... 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 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 -${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 @@ -68,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 @@ -79,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. @@ -90,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 @@ -101,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. @@ -112,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 @@ -129,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 @@ -148,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. @@ -178,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 @@ -226,11 +415,111 @@ Stop_All_Exabgps_2 ${Log_Content} OperatingSystem.Get File ${EXABGP2_LOG} Log ${Log_Content} +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} + +Start_Exabgp_3 + [Documentation] Start exabgp with + [Tags] critical + ${cmd} BuiltIn.Set_Variable ${EXABGP3_CFG} > ${EXABGP3_LOG} + ExaBgpLib.Start_ExaBgp_And_Verify_Connected ${cmd} ${CONFIG_SESSION} ${EXABGP_ID} + +Stop_All_Exabgps_3 + [Documentation] Save exabgp logs as exabgp_graceful_restart.log, and stop exabgp with ctrl-c bash signal + BGPcliKeywords.Store_File_To_Workspace ${EXABGP3_LOG} ${EXABGP3_LOG} + ExaBgpLib.Stop_ExaBgp + Sleep 40s + KarafKeywords.Fail If Exceptions Found During Test ${SUITE_NAME}.${TEST_NAME} fail=${True} + +Start_Exabgp_4 + [Documentation] Start exabgp with + [Tags] critical + ${cmd} BuiltIn.Set_Variable ${EXABGP3_CFG} > ${EXABGP3_LOG} + ExaBgpLib.Start_ExaBgp_And_Verify_Connected ${cmd} ${CONFIG_SESSION} ${EXABGP_ID} + +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} + +Stop_All_Exabgps_4 + [Documentation] Save exabgp logs as exabgp_graceful_restart.log, and stop exabgp with ctrl-c bash signal + BGPcliKeywords.Store_File_To_Workspace ${EXABGP3_LOG} ${EXABGP3_LOG} + ExaBgpLib.Stop_ExaBgp + +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} + +Start_Exabgp_5 + [Documentation] Start exabgp with + [Tags] exclude + ${cmd} BuiltIn.Set_Variable ${EXABGP4_CFG} > ${EXABGP4_LOG} + ExaBgpLib.Start_ExaBgp_And_Verify_Connected ${cmd} ${CONFIG_SESSION} ${EXABGP_ID} + +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} + TemplatedRequests.Delete_Templated ${BGP_VAR_FOLDER}/bgp_peer mapping=${mapping} session=${CONFIG_SESSION} + +Stop_All_Exabgps_5 + [Documentation] Save exabgp logs as exabgp_graceful_restart.log, and stop exabgp with ctrl-c bash signal + [Tags] exclude + 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 @@ -240,6 +529,8 @@ Start_Suite RequestsLibrary.Create_Session ${CONFIG_SESSION} http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} Upload_Config_Files Upload_Config_Files_exabgp_ipv4 + Upload_Config_Files_exabgp_graceful_restart + Upload_Config_Files_Exabgp_AS_Value_Reconfigured Stop_Suite [Documentation] Suite teardown keyword @@ -250,44 +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 + 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} + 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 + 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} Log ${stdout} END