X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FBgpOperations.robot;h=1a9591cb10096c57c2d5301fc008f5625bd2e40d;hb=a4ba85ea8a0caec5b1a14c58e35b3e01d9de1a42;hp=e44c3367383bc4247067a630734582a86319c00f;hpb=d83d1eedefb98620c594d058244069e39d5958aa;p=integration%2Ftest.git diff --git a/csit/libraries/BgpOperations.robot b/csit/libraries/BgpOperations.robot index e44c336738..1a9591cb10 100644 --- a/csit/libraries/BgpOperations.robot +++ b/csit/libraries/BgpOperations.robot @@ -1,35 +1,34 @@ *** Settings *** -Documentation This library contains keywords related to the BGP functionality. -Library SSHLibrary -Library String -Library BgpRpcClient.py ${TOOLS_SYSTEM_IP} -Resource ../variables/Variables.robot -Resource CompareStream.robot -Resource Utils.robot -Resource KillPythonTool.robot -Resource TemplatedRequests.robot +Documentation This library contains keywords related to the BGP functionality. + +Library SSHLibrary +Library String +Library BgpRpcClient.py ${TOOLS_SYSTEM_IP} +Resource ../variables/Variables.robot +Resource CompareStream.robot +Resource Utils.robot +Resource KillPythonTool.robot +Resource TemplatedRequests.robot + *** Variables *** -${BGP_BMP_DIR} ${CURDIR}/../variables/bgpfunctional/bmp_basic/filled_structure -${BGP_BMP_FEAT_DIR} ${CURDIR}/../variables/bgpfunctional/bmp_basic/empty_structure -${BGP_RIB_URI} ${OPERATIONAL_API}/bgp-rib:bgp-rib/rib/example-bgp-rib -${BGP_TOPOLOGY_URI} ${OPERATIONAL_TOPO_API}/topology/example-ipv4-topology -${VAR_BASE_BGP} ${CURDIR}/../variables/bgpfunctional -${RIB_NAME} example-bgp-rib -${OLD_AS_PATH} \n"as-path": {}, -${NEW_AS_PATH} ${EMPTY} -&{APP_PEER} IP=${ODL_SYSTEM_IP} BGP_RIB=${RIB_NAME} -${NEW_IPV4_ROUTES_LINE} ${EMPTY} -${OLD_IPV4_ROUTES_LINE} \n"bgp-inet:ipv4-routes": {}, +${BGP_BMP_DIR} ${CURDIR}/../variables/bgpfunctional/bmp_basic/filled_structure +${BGP_BMP_FEAT_DIR} ${CURDIR}/../variables/bgpfunctional/bmp_basic/empty_structure +${BGP_RIB_URI} bgp-rib:bgp-rib/rib=example-bgp-rib +${BGP_TOPOLOGY_URI} ${TOPOLOGY_URL}=example-ipv4-topology +${VAR_BASE_BGP} ${CURDIR}/../variables/bgpfunctional +${RIB_NAME} example-bgp-rib +&{APP_PEER} IP=${ODL_SYSTEM_IP} BGP_RIB=${RIB_NAME} ${BGP_CONFIG_SERVER_CMD} bgp-connect -h ${ODL_SYSTEM_IP} -p 7644 add -${VPNV4_ADDR_FAMILY} vpnv4 -${DISPLAY_VPN4_ALL} show-bgp --cmd "ip bgp ${VPNV4_ADDR_FAMILY} all" +${VPNV4_ADDR_FAMILY} vpnv4 +${DISPLAY_VPN4_ALL} show-bgp --cmd "ip bgp ${VPNV4_ADDR_FAMILY} all" + *** Keywords *** Start Quagga Processes On ODL - [Arguments] ${odl_ip} [Documentation] To start the zrpcd processes on ODL VM - ${conn_id}= Open_Connection_To_ODL_System ip_address=${odl_ip} + [Arguments] ${odl_ip} + ${conn_id} = Open_Connection_To_ODL_System ip_address=${odl_ip} Switch Connection ${conn_id} Write Commands Until Expected Prompt cd /opt/quagga/etc/ ${DEFAULT_LINUX_PROMPT_STRICT} Write Commands Until Expected Prompt sudo cp zebra.conf.sample zebra.conf ${DEFAULT_LINUX_PROMPT_STRICT} @@ -39,16 +38,16 @@ Start Quagga Processes On ODL Close Connection Restart BGP Processes On ODL - [Arguments] ${odl_ip} [Documentation] To restart the bgpd , qthriftd processes on ODL VM + [Arguments] ${odl_ip} ${conn_id} = Open_Connection_To_ODL_System ip_address=${odl_ip} Switch Connection ${conn_id} Write Commands Until Expected Prompt sudo pkill -f bgpd ${DEFAULT_LINUX_PROMPT_STRICT} Start Quagga Processes On ODL ${odl_ip} Start Quagga Processes On DCGW - [Arguments] ${dcgw_ip} [Documentation] To start the zrpcd, bgpd,and zebra processes on DCGW + [Arguments] ${dcgw_ip} ${dcgw_conn_id} = Open_Connection_To_Tools_System ip_address=${dcgw_ip} Switch Connection ${dcgw_conn_id} Write Commands Until Expected Prompt cd /opt/quagga/etc/ ${DEFAULT_LINUX_PROMPT_STRICT} @@ -67,22 +66,22 @@ Start Quagga Processes On DCGW Write Commands Until Expected Prompt netstat -nap | grep 7644 ${DEFAULT_LINUX_PROMPT_STRICT} Restart BGP Processes On DCGW - [Arguments] ${dcgw_ip} [Documentation] To Restart the zrpcd, bgpd and zebra processes on DCGW + [Arguments] ${dcgw_ip} ${dcgw_conn_id} = Open_Connection_To_Tools_System ip_address=${dcgw_ip} Switch Connection ${dcgw_conn_id} Write Commands Until Expected Prompt sudo pkill -f bgpd ${DEFAULT_LINUX_PROMPT_STRICT} Start Quagga Processes On DCGW ${dcgw_ip} Stop BGP Processes On Node - [Arguments] ${node_ip} [Documentation] To stop the bgpd , qthriftd processes on specific node given by user. + [Arguments] ${node_ip} Utils.Run Command On Remote System ${node_ip} sudo pkill -f bgpd Utils.Run Command On Remote System ${node_ip} sudo pkill -f zrpcd Show Quagga Configuration On ODL - [Arguments] ${odl_ip} ${rd} [Documentation] Show quagga config from ODL + [Arguments] ${odl_ip} ${rd} Create Quagga Telnet Session ${odl_ip} bgpd sdncbgpc Execute Command On Quagga Telnet Session show running-config Execute Command On Quagga Telnet Session show bgp neighbors @@ -91,9 +90,9 @@ Show Quagga Configuration On ODL Close Connection Create Quagga Telnet Session - [Arguments] ${ip} ${user} ${password} [Documentation] Create telnet session for Quagga - ${conn_id}= Open_Connection_To_Tools_System ip_address=${ip} + [Arguments] ${ip} ${user} ${password} + ${conn_id} = Open_Connection_To_Tools_System ip_address=${ip} Switch Connection ${conn_id} ${output} = Write telnet localhost ${user} ${output} = Read Until Password: @@ -103,17 +102,17 @@ Create Quagga Telnet Session ${output} = Read Execute Command On Quagga Telnet Session - [Arguments] ${command} [Documentation] Execute command on Quagga telnet session(session should exist) and returns the output. + [Arguments] ${command} SSHLibrary.Write ${command} ${output} = SSHLibrary.Read Log ${output} - [Return] ${output} + RETURN ${output} Configure BGP And Add Neighbor On DCGW + [Documentation] Configure BGP and add neighbor on the dcgw [Arguments] ${dcgw_ip} ${as_id} ${router_id} ${neighbor_ip} ${vrf_name} ${rd} ... ${loopback_ip} - [Documentation] Configure BGP and add neighbor on the dcgw Create Quagga Telnet Session ${dcgw_ip} bgpd sdncbgpc Execute Command On Quagga Telnet Session configure terminal Execute Command On Quagga Telnet Session router bgp ${as_id} @@ -134,8 +133,8 @@ Configure BGP And Add Neighbor On DCGW Execute Command On Quagga Telnet Session exit Add Loopback Interface On DCGW - [Arguments] ${dcgw_ip} ${loopback_name} ${loopback_ip} ${user}=zebra ${password}=zebra [Documentation] Add loopback interface on DCGW + [Arguments] ${dcgw_ip} ${loopback_name} ${loopback_ip} ${user}=zebra ${password}=zebra Create Quagga Telnet Session ${dcgw_ip} ${user} ${password} Execute Command On Quagga Telnet Session enable Execute Command On Quagga Telnet Session ${password} @@ -148,26 +147,26 @@ Add Loopback Interface On DCGW Execute Command On Quagga Telnet Session exit Execute Show Command On Quagga - [Arguments] ${dcgw_ip} ${cmd} ${user}=bgpd ${password}=sdncbgpc [Documentation] Execute command on quagga and returns the ouput. + [Arguments] ${dcgw_ip} ${cmd} ${user}=bgpd ${password}=sdncbgpc Create Quagga Telnet Session ${dcgw_ip} ${user} ${password} ${output} = Execute Command On Quagga Telnet Session ${cmd} Log ${output} Execute Command On quagga Telnet Session exit - [Return] ${output} + RETURN ${output} Verify BGP Neighbor Status On Quagga - [Arguments] ${dcgw_ip} ${neighbor_ip} [Documentation] Verify bgp neighbor status on quagga + [Arguments] ${dcgw_ip} ${neighbor_ip} ${output} = Execute Show Command On quagga ${dcgw_ip} show bgp neighbors ${neighbor_ip} Log ${output} Should Contain ${output} BGP state = Established Setup BGP Peering On ODL - [Arguments] ${odl_ip} ${as_id} ${nbr_ip} [Documentation] Setup BGP peering between ODL and given neighbor IP. ... Configuring and starting BGP on ODL node with given AS number ... Adding and verifying BGP neighbor + [Arguments] ${odl_ip} ${as_id} ${nbr_ip} KarafKeywords.Issue Command On Karaf Console ${BGP_CONFIG_SERVER_CMD} BgpOperations.Create BGP Configuration On ODL localas=${as_id} routerid=${odl_ip} BgpOperations.AddNeighbor To BGP Configuration On ODL remoteas=${as_id} neighborAddr=${nbr_ip} @@ -175,17 +174,23 @@ Setup BGP Peering On ODL BuiltIn.Should Contain ${output} ${nbr_ip} Setup BGP Peering On DCGW - [Arguments] ${dcgw_ip} ${as_id} ${nbr_ip} ${vrf_name} ${rd} ${loopback_ip} [Documentation] Setup BGP peering between DCGW and given neighbor IP. ... Configuring,adding neighbor on DCGW node and verifying BGP neighbor. - BgpOperations.Configure BGP And Add Neighbor On DCGW ${dcgw_ip} ${as_id} ${dcgw_ip} ${nbr_ip} ${vrf_name} ${rd} + [Arguments] ${dcgw_ip} ${as_id} ${nbr_ip} ${vrf_name} ${rd} ${loopback_ip} + BgpOperations.Configure BGP And Add Neighbor On DCGW + ... ${dcgw_ip} + ... ${as_id} + ... ${dcgw_ip} + ... ${nbr_ip} + ... ${vrf_name} + ... ${rd} ... ${loopback_ip} ${output} = BgpOperations.Execute Show Command On Quagga ${dcgw_ip} ${RUN_CONFIG} BuiltIn.Should Contain ${output} ${nbr_ip} Verify Routes On Quagga - [Arguments] ${dcgw_ip} ${rd} ${ip_list} [Documentation] Verify routes on quagga + [Arguments] ${dcgw_ip} ${rd} ${ip_list} ${output} = Execute Show Command On quagga ${dcgw_ip} show ip bgp vrf ${rd} Log ${output} FOR ${ip} IN @{ip_list} @@ -193,19 +198,19 @@ Verify Routes On Quagga END Delete BGP Config On Quagga - [Arguments] ${dcgw_ip} ${bgp_id} ${user}=bgpd ${password}=sdncbgpc [Documentation] Delete BGP Config on Quagga + [Arguments] ${dcgw_ip} ${bgp_id} ${user}=bgpd ${password}=sdncbgpc Create Quagga Telnet Session ${dcgw_ip} ${user} ${password} Execute Command On Quagga Telnet Session configure terminal Execute Command On Quagga Telnet Session no router bgp ${bgp_id} Execute Command On Quagga Telnet Session end ${output} = Execute Command On Quagga Telnet Session show running-config Execute Command On Quagga Telnet Session exit - [Return] ${output} + RETURN ${output} Create L3VPN on DCGW - [Arguments] ${dcgw_ip} ${as_id} ${vpn_name} ${rd} [Documentation] Creating L3VPN on DCGW + [Arguments] ${dcgw_ip} ${as_id} ${vpn_name} ${rd} BgpOperations.Create Quagga Telnet Session ${dcgw_ip} bgpd sdncbgpc BgpOperations.Execute Command On Quagga Telnet Session configure terminal BgpOperations.Execute Command On Quagga Telnet Session router bgp ${as_id} @@ -216,8 +221,8 @@ Create L3VPN on DCGW BgpOperations.Execute Command On Quagga Telnet Session end Delete L3VPN on DCGW - [Arguments] ${dcgw_ip} ${as_id} @{vpns} [Documentation] Deleting L3VPN on DCGW + [Arguments] ${dcgw_ip} ${as_id} @{vpns} BgpOperations.Create Quagga Telnet Session ${dcgw_ip} bgpd sdncbgpc BgpOperations.Execute Command On Quagga Telnet Session configure terminal BgpOperations.Execute Command On Quagga Telnet Session router bgp ${as_id} @@ -227,15 +232,15 @@ Delete L3VPN on DCGW BgpOperations.Execute Command On Quagga Telnet Session end Verify L3VPN On DCGW - [Arguments] ${dcgw_ip} ${vpn_name} ${rd} [Documentation] Verify L3VPN vrf name and rd value on DCGW + [Arguments] ${dcgw_ip} ${vpn_name} ${rd} ${output} = BgpOperations.Execute Show Command On Quagga ${dcgw_ip} show running-config BuiltIn.Should Contain ${output} vrf ${vpn_name} BuiltIn.Should Contain ${output} rd ${rd} Add Routes On DCGW - [Arguments] ${dcgw_ip} ${rd} ${network_ip} ${label} [Documentation] Add routes on DCGW + [Arguments] ${dcgw_ip} ${rd} ${network_ip} ${label} BgpOperations.Create Quagga Telnet Session ${dcgw_ip} bgpd sdncbgpc BgpOperations.Execute Command On Quagga Telnet Session configure terminal BgpOperations.Execute Command On Quagga Telnet Session router bgp ${AS_ID} @@ -244,47 +249,59 @@ Add Routes On DCGW BgpOperations.Execute Command On Quagga Telnet Session end Create BGP Configuration On ODL - [Arguments] &{Kwargs} [Documentation] Associate the created L3VPN to a network-id received as dictionary argument - TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/create_bgp mapping=${Kwargs} session=session + [Arguments] &{Kwargs} + TemplatedRequests.Post_As_Json_Templated + ... folder=${VAR_BASE_BGP}/create_bgp + ... mapping=${Kwargs} + ... session=session AddNeighbor To BGP Configuration On ODL - [Arguments] &{Kwargs} [Documentation] Associate the created L3VPN to a network-id received as dictionary argument - CompareStream.Run_Keyword_If_Less_Than_Magnesium TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/addNeighbor_bgp mapping=${Kwargs} session=session - CompareStream.Run_Keyword_If_At_Least_Magnesium TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/addNeighborsContainer_bgp mapping=${Kwargs} session=session + [Arguments] &{Kwargs} + CompareStream.Run_Keyword_If_Less_Than_Magnesium + ... TemplatedRequests.Post_As_Json_Templated + ... folder=${VAR_BASE_BGP}/addNeighbor_bgp + ... mapping=${Kwargs} + ... session=session + CompareStream.Run_Keyword_If_At_Least_Magnesium + ... TemplatedRequests.Post_As_Json_Templated + ... folder=${VAR_BASE_BGP}/addNeighborsContainer_bgp + ... mapping=${Kwargs} + ... session=session Get BGP Configuration On ODL - [Arguments] ${odl_session} [Documentation] Get bgp configuration - ${resp} = RequestsLibrary.Get Request ${odl_session} ${CONFIG_API}/ebgp:bgp/ + [Arguments] ${odl_session} + ${resp} = RequestsLibrary.GET On Session alias=${odl_session} url=${CONFIG_API}/ebgp:bgp/ Log ${resp.text} - [Return] ${resp.text} + RETURN ${resp.text} Delete BGP Configuration On ODL - [Arguments] ${odl_session} [Documentation] Delete BGP - ${resp} = RequestsLibrary.Delete Request ${odl_session} ${CONFIG_API}/ebgp:bgp/ + [Arguments] ${odl_session} + ${resp} = RequestsLibrary.DELETE On Session + ... alias=${odl_session} + ... url=${CONFIG_API}/ebgp:bgp/ + ... expected_status=200 Log ${resp.text} - Should Be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.text} + RETURN ${resp.text} Create External Tunnel Endpoint Configuration - [Arguments] &{Kwargs} [Documentation] Create Tunnel End point - TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/create_etep mapping=${Kwargs} session=session + [Arguments] &{Kwargs} + TemplatedRequests.Post_As_Json_Templated + ... folder=${VAR_BASE_BGP}/create_etep + ... mapping=${Kwargs} + ... session=session Delete External Tunnel Endpoint Configuration - [Arguments] &{Kwargs} [Documentation] Delete Tunnel End point - TemplatedRequests.Post_As_Json_Templated folder=${VAR_BASE_BGP}/delete_etep mapping=${Kwargs} session=session - -Get External Tunnel Endpoint Configuration - [Arguments] ${ip} - [Documentation] Get bgp configuration - ${resp} = RequestsLibrary.Get Request session ${CONFIG_API}/itm:dc-gateway-ip-list/dc-gateway-ip/${ip}/ - Log ${resp.text} - [Return] ${resp.text} + [Arguments] &{Kwargs} + TemplatedRequests.Post_As_Json_Templated + ... folder=${VAR_BASE_BGP}/delete_etep + ... mapping=${Kwargs} + ... session=session Teardown_Everything [Documentation] Create and Log the diff between expected and actual responses, make sure Python tool was killed. @@ -294,51 +311,70 @@ Teardown_Everything SSHLibrary.Close_All_Connections Check_Example_Bgp_Rib_Content - [Arguments] ${session} ${substr} ${error_message}=${JSONKEYSTR} not found, but expected. [Documentation] Check the example-bgp-rib content for string - ${response}= RequestsLibrary.Get Request ${session} ${BGP_RIB_URI} + [Arguments] ${session} ${substr} ${error_message}=${JSONKEYSTR} not found, but expected. + ${response} = RequestsLibrary.GET On Session + ... alias=${session} + ... url=${REST_API}/${BGP_RIB_URI}?content=nonconfig BuiltIn.Log ${response.status_code} BuiltIn.Log ${response.text} BuiltIn.Should_Contain ${response.text} ${substr} ${error_message} values=False Check_Example_Bgp_Rib_Does_Not_Contain - [Arguments] ${session} ${substr} ${error_message}=${JSONKEYSTR} found, but not expected. [Documentation] Check the example-bgp-rib does not contain the string - ${response}= RequestsLibrary.Get Request ${session} ${BGP_RIB_URI} + [Arguments] ${session} ${substr} ${error_message}=${JSONKEYSTR} found, but not expected. + ${response} = RequestsLibrary.GET On Session + ... alias=${session} + ... url=${REST_API}/${BGP_RIB_URI}?content=nonconfig BuiltIn.Log ${response.status_code} BuiltIn.Log ${response.text} BuiltIn.Should_Not_Contain ${response.text} ${substr} ${error_message} values=False Check_Example_IPv4_Topology_Content - [Arguments] ${session} ${string_to_check}=${EMPTY} [Documentation] Check the example-ipv4-topology content for string - ${response}= RequestsLibrary.Get Request ${session} ${BGP_TOPOLOGY_URI} + [Arguments] ${session} ${string_to_check}=${EMPTY} + ${response} = RequestsLibrary.GET On Session + ... alias=${session} + ... url=${REST_API}/${BGP_TOPOLOGY_URI}?content=nonconfig BuiltIn.Log ${response.status_code} BuiltIn.Log ${response.text} BuiltIn.Should_Contain ${response.text} ${string_to_check} Check_Example_IPv4_Topology_Does_Not_Contain - [Arguments] ${session} ${string_to_check} [Documentation] Check the example-ipv4-topology does not contain the string - ${response}= RequestsLibrary.Get Request ${session} ${BGP_TOPOLOGY_URI} + [Arguments] ${session} ${string_to_check} + ${response} = RequestsLibrary.GET On Session + ... alias=${session} + ... url=${REST_API}/${BGP_TOPOLOGY_URI}?content=nonconfig BuiltIn.Log ${response.status_code} BuiltIn.Log ${response.text} BuiltIn.Should_Not_Contain ${response.text} ${string_to_check} Bmp_Monitor_Precondition - [Arguments] ${session} [Documentation] Verify example-bmp-monitor presence in bmp-monitors - &{mapping} BuiltIn.Create_Dictionary TOOL_IP=${TOOLS_SYSTEM_IP} - BuiltIn.Wait_Until_Keyword_Succeeds 6x 10s TemplatedRequests.Get_As_Json_Templated folder=${BGP_BMP_FEAT_DIR} mapping=${mapping} verify=True + [Arguments] ${session} + &{mapping} = BuiltIn.Create_Dictionary TOOL_IP=${TOOLS_SYSTEM_IP} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 6x + ... 10s + ... TemplatedRequests.Get_As_Json_Templated + ... folder=${BGP_BMP_FEAT_DIR} + ... mapping=${mapping} + ... verify=True ... session=${session} Bmp_Monitor_Postcondition - [Arguments] ${session} [Documentation] Verifies if example-bmp-monitor data contains one peer. - ${routes_line} = CompareStream.Set_Variable_If_At_Least_Neon ${NEW_IPV4_ROUTES_LINE} ${OLD_IPV4_ROUTES_LINE} - &{mapping} BuiltIn.Create_Dictionary TOOL_IP=${TOOLS_SYSTEM_IP} ROUTES_LINE=${routes_line} - ${output} BuiltIn.Wait_Until_Keyword_Succeeds 10x 5s TemplatedRequests.Get_As_Json_Templated folder=${BGP_BMP_DIR} mapping=${mapping} - ... session=${session} verify=True + [Arguments] ${session} + &{mapping} = BuiltIn.Create_Dictionary TOOL_IP=${TOOLS_SYSTEM_IP} + ${output} = BuiltIn.Wait_Until_Keyword_Succeeds + ... 10x + ... 5s + ... TemplatedRequests.Get_As_Json_Templated + ... folder=${BGP_BMP_DIR} + ... mapping=${mapping} + ... session=${session} + ... verify=True BuiltIn.Log ${output} Odl_To_Play_Template @@ -347,34 +383,61 @@ Odl_To_Play_Template ${announce_hex} = String.Remove_String ${announce_hex} \n ${withdraw_hex} = OperatingSystem.Get_File ${dir}/${totest}/withdraw_${totest}.hex ${withdraw_hex} = String.Remove_String ${withdraw_hex} \n - BuiltIn.Run_Keyword_If '${remove}' == 'True' BgpRpcClient.play_clean + IF '${remove}' == 'True' BgpRpcClient.play_clean TemplatedRequests.Post_As_Xml_Templated ${dir}/${totest}/app mapping=${APP_PEER} session=${CONFIG_SESSION} - ${update} BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s Get_Update_Message + ${update} = BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s Get_Update_Message Verify_Two_Hex_Messages_Are_Equal ${update} ${announce_hex} BgpRpcClient.play_clean Remove_Configured_Routes ${totest} ${dir} - ${update} BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s Get_Update_Message + ${update} = BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s Get_Update_Message Verify_Two_Hex_Messages_Are_Equal ${update} ${withdraw_hex} [Teardown] Remove_Configured_Routes ${totest} ${dir} Play_To_Odl_Template [Arguments] ${totest} ${dir} ${ipv}=ipv4 - ${as_path} = CompareStream.Set_Variable_If_At_Least_Neon ${NEW_AS_PATH} ${OLD_AS_PATH} - &{adj_rib_in} BuiltIn.Create_Dictionary PATH=peer/bgp:%2F%2F${TOOLS_SYSTEM_IP}/adj-rib-in BGP_RIB=${RIB_NAME} AS_PATH=${as_path} - &{effective_rib_in} BuiltIn.Create_Dictionary PATH=peer/bgp:%2F%2F${TOOLS_SYSTEM_IP}/effective-rib-in BGP_RIB=${RIB_NAME} AS_PATH=${as_path} - &{loc_rib} BuiltIn.Create_Dictionary PATH=loc-rib BGP_RIB=${RIB_NAME} AS_PATH=${as_path} + &{adj_rib_in} = BuiltIn.Create_Dictionary + ... PATH=peer\=bgp:%2F%2F${TOOLS_SYSTEM_IP}/adj-rib-in + ... BGP_RIB=${RIB_NAME} + &{effective_rib_in} = BuiltIn.Create_Dictionary + ... PATH=peer\=bgp:%2F%2F${TOOLS_SYSTEM_IP}/effective-rib-in + ... BGP_RIB=${RIB_NAME} + &{loc_rib} = BuiltIn.Create_Dictionary PATH=loc-rib BGP_RIB=${RIB_NAME} ${announce_hex} = OperatingSystem.Get_File ${dir}/${totest}/announce_${totest}.hex ${withdraw_hex} = OperatingSystem.Get_File ${dir}/${totest}/withdraw_${totest}.hex BgpRpcClient.play_clean BgpRpcClient.play_send ${announce_hex} - BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s TemplatedRequests.Get_As_Json_Templated ${dir}/${totest}/rib mapping=${adj_rib_in} session=${CONFIG_SESSION} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 3x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${dir}/${totest}/rib + ... mapping=${adj_rib_in} + ... session=${CONFIG_SESSION} ... verify=True - BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s TemplatedRequests.Get_As_Json_Templated ${dir}/${totest}/rib mapping=${effective_rib_in} session=${CONFIG_SESSION} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 3x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${dir}/${totest}/rib + ... mapping=${effective_rib_in} + ... session=${CONFIG_SESSION} ... verify=True - BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s TemplatedRequests.Get_As_Json_Templated ${dir}/${totest}/rib mapping=${loc_rib} session=${CONFIG_SESSION} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 3x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${dir}/${totest}/rib + ... mapping=${loc_rib} + ... session=${CONFIG_SESSION} ... verify=True BgpRpcClient.play_send ${withdraw_hex} - BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s TemplatedRequests.Get_As_Json_Templated ${dir}/empty_routes/${ipv} mapping=${loc_rib} session=${CONFIG_SESSION} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 3x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${dir}/empty_routes/${ipv} + ... mapping=${loc_rib} + ... session=${CONFIG_SESSION} ... verify=True [Teardown] BgpRpcClient.play_send ${withdraw_hex} @@ -383,26 +446,35 @@ Play_To_Odl_Non_Removal_Template ${announce_hex} = OperatingSystem.Get_File ${dir}/${totest}/announce_${totest}.hex BgpRpcClient.play_clean BgpRpcClient.play_send ${announce_hex} - ${as_path} = CompareStream.Set_Variable_If_At_Least_Neon ${NEW_AS_PATH} ${OLD_AS_PATH} - &{loc_rib} BuiltIn.Create_Dictionary PATH=loc-rib BGP_RIB=${RIB_NAME} AS_PATH=${as_path} - BuiltIn.Wait_Until_Keyword_Succeeds 3x 2s TemplatedRequests.Get_As_Json_Templated ${dir}/${totest}/rib mapping=${loc_rib} session=${CONFIG_SESSION} + &{loc_rib} = BuiltIn.Create_Dictionary PATH=loc-rib BGP_RIB=${RIB_NAME} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 3x + ... 2s + ... TemplatedRequests.Get_As_Json_Templated + ... ${dir}/${totest}/rib + ... mapping=${loc_rib} + ... session=${CONFIG_SESSION} ... verify=True Get_Update_Message [Documentation] Returns hex update message. ${update} = BgpRpcClient.play_get BuiltIn.Should_Not_Be_Equal ${update} ${Empty} - [Return] ${update} + RETURN ${update} Remove_Configured_Routes - [Arguments] ${totest} ${dir} [Documentation] Removes the route if present. - BuiltIn.Run_Keyword_And_Ignore_Error TemplatedRequests.Delete_Templated ${dir}/${totest}/app mapping=${APP_PEER} session=${CONFIG_SESSION} + [Arguments] ${totest} ${dir} + BuiltIn.Run_Keyword_And_Ignore_Error + ... TemplatedRequests.Delete_Templated + ... ${dir}/${totest}/app + ... mapping=${APP_PEER} + ... session=${CONFIG_SESSION} Verify_Two_Hex_Messages_Are_Equal - [Arguments] ${hex_1} ${hex_2} [Documentation] Verifies two hex messages are equal even in case, their arguments are misplaced. ... Compares length of the hex messages and sums hex messages arguments as integers and compares results. + [Arguments] ${hex_1} ${hex_2} ${len_1} = BuiltIn.Get_Length ${hex_1} ${len_2} = BuiltIn.Get_Length ${hex_2} BuiltIn.Should_Be_Equal ${len_1} ${len_2} @@ -411,10 +483,13 @@ Verify_Two_Hex_Messages_Are_Equal BuiltIn.Should_Be_Equal ${sum_1} ${sum_2} Check BGP VPNv4 Nbr On ODL - [Arguments] ${dcgw_count} ${flag}=True ${start}=${START_VALUE} [Documentation] Check all BGP VPNv4 neighbor on ODL + [Arguments] ${dcgw_count} ${flag}=True ${start}=${START_VALUE} ${output} = KarafKeywords.Issue Command On Karaf Console ${DISPLAY_VPN4_ALL} FOR ${index} IN RANGE ${start} ${dcgw_count} - BuiltIn.Run Keyword If ${flag}==True BuiltIn.Should Contain ${output} ${DCGW_IP_LIST[${index}]} - ... ELSE BuiltIn.Should Not Contain ${output} ${DCGW_IP_LIST[${index}]} + IF ${flag}==True + BuiltIn.Should Contain ${output} ${DCGW_IP_LIST[${index}]} + ELSE + BuiltIn.Should Not Contain ${output} ${DCGW_IP_LIST[${index}]} + END END