Migrate Get Requests invocations(libraries)
[integration/test.git] / csit / suites / bgpcep / bgpuser / basic.robot
index 49fdc9e69d542bffd9f810b482583114b1fc6936..301c0c7601faaf9d8209dbf8870ffda67fa81634 100644 (file)
@@ -1,74 +1,76 @@
 *** Settings ***
-Documentation     Basic tests for odl-bgpcep-bgp-all feature.
-...           
-...               Copyright (c) 2015 Cisco Systems, Inc. and others. 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
-...           
-...               Test suite performs basic BGP functional test cases:
-...               BGP peer initiated connection
-...               - introduce and check 3 prefixes in one update message
-...               ODL controller initiated connection:
-...               - introduce and check 3 prefixes in one update message
-...               - introduce 2 prefixes in first update message and then additional 2 prefixes
-...               in another update while the very first prefix is withdrawn
-...               - introduce 3 prefixes and try to withdraw the first one
-...               (to be ignored by controller) in a single update message
-...           
-...               For versions Oxygen and above, there are TC_R (test case reset) which
-...               test session-reset functionality.
-...               Resets the session, and than verifies that example-ipv4-topology is empty again.
-...           
-...               For versions Fluorine and above, there are test cases:
-...               TC_LA (test case local address)
-...               test configuration of internal peer with local-address configured
-...               - configure peer with local-address and connect bgp-speaker to it
-...               with tools_system_ip
-...               - check filled topology
-...           
-...               TC_PG (test case peer group) which
-...               tests configuration and reconfiguration of peer-groups and neighbors configured by them.
-...               - configure peer-group, and assign neighbor to this peer-group
-...               - check filled topology
-...               - reconfigure peer-group without ipv4 unicast afi-safi
-...               - check empty topology
-...               - reconfigre neighbor without peer-group, delete peer-group
-...           
-...               Brief description how to perform BGP functional test:
-...               https://wiki.opendaylight.org/view/BGP_LS_PCEP:Lithium_Feature_Tests#How_to_test_2
-Suite Setup       Setup_Everything
-Suite Teardown    Teardown_Everything
-Test Setup        SetupUtils.Setup_Test_With_Logging_And_Fast_Failing
-Test Teardown     FailFast.Start_Failing_Fast_If_This_Failed
-Library           OperatingSystem
-Library           SSHLibrary    timeout=10s
-Library           RequestsLibrary
-Resource          ../../../libraries/BGPcliKeywords.robot
-Resource          ../../../libraries/BGPSpeaker.robot
-Resource          ../../../libraries/CompareStream.robot
-Resource          ../../../libraries/FailFast.robot
-Resource          ../../../libraries/KarafKeywords.robot
-Resource          ../../../libraries/KillPythonTool.robot
-Resource          ../../../libraries/SetupUtils.robot
-Resource          ../../../libraries/SSHKeywords.robot
-Resource          ../../../libraries/TemplatedRequests.robot
-Resource          ../../../variables/Variables.robot
-Resource          ../../../libraries/WaitForFailure.robot
+Documentation       Basic tests for odl-bgpcep-bgp-all feature.
+...
+...                 Copyright (c) 2015 Cisco Systems, Inc. and others. 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
+...
+...                 Test suite performs basic BGP functional test cases:
+...                 BGP peer initiated connection
+...                 - introduce and check 3 prefixes in one update message
+...                 ODL controller initiated connection:
+...                 - introduce and check 3 prefixes in one update message
+...                 - introduce 2 prefixes in first update message and then additional 2 prefixes
+...                 in another update while the very first prefix is withdrawn
+...                 - introduce 3 prefixes and try to withdraw the first one
+...                 (to be ignored by controller) in a single update message
+...
+...                 TC_R (test case reset) tests session-reset functionality.
+...                 Resets the session, and than verifies that example-ipv4-topology is empty again.
+...
+...                 TC_LA (test case local address) tests configuration of internal peer
+...                 with local-address configured
+...                 - configure peer with local-address and connect bgp-speaker to it
+...                 with tools_system_ip
+...                 - check filled topology
+...
+...                 TC_PG (test case peer group) tests configuration and reconfiguration
+...                 of peer-groups and neighbors configured by them.
+...                 - configure peer-group, and assign neighbor to this peer-group
+...                 - check filled topology
+...                 - reconfigure peer-group without ipv4 unicast afi-safi
+...                 - check empty topology
+...                 - reconfigre neighbor without peer-group, delete peer-group
+...
+...                 Brief description how to perform BGP functional test:
+...                 https://wiki.opendaylight.org/view/BGP_LS_PCEP:Lithium_Feature_Tests#How_to_test_2
+
+Library             OperatingSystem
+Library             SSHLibrary    timeout=10s
+Library             RequestsLibrary
+Resource            ../../../libraries/BGPcliKeywords.robot
+Resource            ../../../libraries/BGPSpeaker.robot
+Resource            ../../../libraries/CompareStream.robot
+Resource            ../../../libraries/FailFast.robot
+Resource            ../../../libraries/KarafKeywords.robot
+Resource            ../../../libraries/KillPythonTool.robot
+Resource            ../../../libraries/SetupUtils.robot
+Resource            ../../../libraries/SSHKeywords.robot
+Resource            ../../../libraries/TemplatedRequests.robot
+Resource            ../../../variables/Variables.robot
+Resource            ../../../libraries/WaitForFailure.robot
+
+Suite Setup         Setup_Everything
+Suite Teardown      Teardown_Everything
+Test Setup          SetupUtils.Setup_Test_With_Logging_And_Fast_Failing
+Test Teardown       FailFast.Start_Failing_Fast_If_This_Failed
+
 
 *** Variables ***
-${BGP_PEER_NAME}    example-bgp-peer
-${BGP_TOOL_LOG_LEVEL}    info
-${BGP_VARIABLES_FOLDER}    ${CURDIR}/../../../variables/bgpuser/
-${CONFIG_SESSION}    session
-${DEVICE_NAME}    controller-config
-${HOLDTIME}       180
-${ODL_BGP_LOG_LEVEL}    DEFAULT
-${ODL_LOG_LEVEL}    INFO
-${PEER_GROUP}     internal-neighbors
-${RIB_NAME}       example-bgp-rib
-${TOOLS_SYSTEM_PROMPT}    ${DEFAULT_LINUX_PROMPT}
+${BGP_PEER_NAME}            example-bgp-peer
+${BGP_TOOL_LOG_LEVEL}       info
+${BGP_VARIABLES_FOLDER}     ${CURDIR}/../../../variables/bgpuser/
+${CONFIG_SESSION}           session
+${DEVICE_NAME}              controller-config
+${HOLDTIME}                 180
+${ODL_BGP_LOG_LEVEL}        DEFAULT
+${ODL_LOG_LEVEL}            INFO
+${PEER_GROUP}               internal-neighbors
+${RIB_NAME}                 example-bgp-rib
+${TOOLS_SYSTEM_PROMPT}      ${DEFAULT_LINUX_PROMPT}
+
 
 *** Test Cases ***
 Check_For_Empty_Topology_Before_Talking
@@ -78,25 +80,34 @@ Check_For_Empty_Topology_Before_Talking
 
 TC_LA_Reconfigure_Odl_To_Initiate_Connection
     [Documentation]    Configure ibgp peer with local-address.
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
-    &{mapping}    Create Dictionary    IP=${TOOLS_SYSTEM_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    PASSIVE_MODE=false    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    &{mapping}    Create Dictionary
+    ...    IP=${TOOLS_SYSTEM_IP}
+    ...    HOLDTIME=${HOLDTIME}
+    ...    PEER_PORT=${BGP_TOOL_PORT}
+    ...    PASSIVE_MODE=false
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
     ...    LOCAL=${ODL_SYSTEM_IP}
-    TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}ibgp_local_address    mapping=${mapping}    session=${CONFIG_SESSION}
+    TemplatedRequests.Put_As_Xml_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}ibgp_local_address
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
     [Teardown]    SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
 
 TC_LA_Start_Bgp_Speaker_And_Verify_Connected
     [Documentation]    Verify that peer is present in odl's rib under local-address ip.
     [Tags]    critical
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
-    ${speaker_args}    BuiltIn.Set_Variable    --amount 3 --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --debug
-    ${output}    BGPSpeaker.Start_BGP_Speaker_And_Verify_Connected    ${speaker_args}    session=${CONFIG_SESSION}    speaker_ip=${TOOLS_SYSTEM_IP}
+    ${speaker_args}    BuiltIn.Set_Variable
+    ...    --amount 3 --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --debug
+    ${output}    BGPSpeaker.Start_BGP_Speaker_And_Verify_Connected
+    ...    ${speaker_args}
+    ...    session=${CONFIG_SESSION}
+    ...    speaker_ip=${TOOLS_SYSTEM_IP}
     BuiltIn.Log    ${output}
 
 TC_LA_Kill_Bgp_Speaker
     [Documentation]    Abort the Python speaker. Also, attempt to stop failing fast.
     [Tags]    critical
     [Setup]    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
     BGPSpeaker.Kill_BGP_Speaker
     FailFast.Do_Not_Fail_Fast_From_Now_On
     # NOTE: It is still possible to remain failing fast, if both previous and this test have failed.
@@ -104,21 +115,35 @@ TC_LA_Kill_Bgp_Speaker
 
 TC_LA_Delete_Bgp_Peer_Configuration
     [Documentation]    Delete peer configuration.
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
     &{mapping}    Create Dictionary    IP=${TOOLS_SYSTEM_IP}    BGP_RIB_OPENCONFIG=${RIB_NAME}
-    TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}ibgp_local_address    mapping=${mapping}    session=${CONFIG_SESSION}
+    TemplatedRequests.Delete_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}ibgp_local_address
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
 
 Reconfigure_ODL_To_Accept_Connection
     [Documentation]    Configure BGP peer module with initiate-connection set to false.
-    &{mapping}    Create Dictionary    DEVICE_NAME=${DEVICE_NAME}    BGP_NAME=${BGP_PEER_NAME}    IP=${TOOLS_SYSTEM_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}
-    ...    INITIATE=false    BGP_RIB=${RIB_NAME}    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_NAME}
-    TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
+    &{mapping}    Create Dictionary
+    ...    DEVICE_NAME=${DEVICE_NAME}
+    ...    BGP_NAME=${BGP_PEER_NAME}
+    ...    IP=${TOOLS_SYSTEM_IP}
+    ...    HOLDTIME=${HOLDTIME}
+    ...    PEER_PORT=${BGP_TOOL_PORT}
+    ...    INITIATE=false
+    ...    BGP_RIB=${RIB_NAME}
+    ...    PASSIVE_MODE=true
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    TemplatedRequests.Put_As_Xml_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}bgp_peer
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
     [Teardown]    SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
 
 Start_Talking_BGP_speaker
     [Documentation]    Start Python speaker to connect to ODL, verify that the tool does not promptly exit.
     # Myport value is needed for checking whether connection at precise port was established.
-    BGPSpeaker.Start_BGP_Speaker    --amount 3 --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --${BGP_TOOL_LOG_LEVEL}
+    BGPSpeaker.Start_BGP_Speaker
+    ...    --amount 3 --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --${BGP_TOOL_LOG_LEVEL}
     Read_And_Fail_If_Prompt_Is_Seen
 
 Check_Talking_Connection_Is_Established
@@ -133,61 +158,90 @@ Check_Talking_Topology_Is_Filled
 
 TC_R_Reset_Bgp_Peer_Session
     [Documentation]    Reset Peer Session
-    [Tags]    Critical
-    CompareStream.Run_Keyword_If_Less_Than_Oxygen    BuiltIn.Pass_Execution    Test case valid only for versions oxygen and above.
+    [Tags]    critical
     &{mapping}    Create Dictionary    IP=${TOOLS_SYSTEM_IP}    RIB_INSTANCE_NAME=${RIB_NAME}
-    TemplatedRequests.Post_As_Xml_Templated    folder=${BGP_VARIABLES_FOLDER}${/}peer_session/restart    mapping=${mapping}    session=${CONFIG_SESSION}
+    TemplatedRequests.Post_As_Xml_Templated
+    ...    folder=${BGP_VARIABLES_FOLDER}${/}peer_session/restart
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
 
 TC_R_Check_For_Empty_Topology_After_Resetting
     [Documentation]    See example-ipv4-topology empty after resetting session
     [Tags]    critical
-    CompareStream.Run_Keyword_If_Less_Than_Oxygen    BuiltIn.Pass_Execution    Test case valid only for versions oxygen and above.
     Wait_For_Topology_To_Change_To    empty_topology
 
 TC_PG_Reconfigure_ODL_With_Peer_Group_To_Accept_Connection
     [Documentation]    Configure BGP peer module with initiate-connection set to false.
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
-    &{mapping}    BuiltIn.Create_Dictionary    DEVICE_NAME=${DEVICE_NAME}    BGP_NAME=${BGP_PEER_NAME}    IP=${TOOLS_SYSTEM_IP}    BGP_RIB_OPENCONFIG=${RIB_NAME}
-    TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
+    &{mapping}    BuiltIn.Create_Dictionary
+    ...    DEVICE_NAME=${DEVICE_NAME}
+    ...    BGP_NAME=${BGP_PEER_NAME}
+    ...    IP=${TOOLS_SYSTEM_IP}
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    TemplatedRequests.Delete_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}bgp_peer
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
     Configure_Peer_Group
-    &{mapping}    Create Dictionary    DEVICE_NAME=${DEVICE_NAME}    BGP_NAME=${BGP_PEER_NAME}    IP=${TOOLS_SYSTEM_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}
-    ...    PEER_GROUP_NAME=${PEER_GROUP}    INITIATE=false    BGP_RIB=${RIB_NAME}    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_NAME}
-    TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer_group    mapping=${mapping}    session=${CONFIG_SESSION}
+    &{mapping}    Create Dictionary
+    ...    DEVICE_NAME=${DEVICE_NAME}
+    ...    BGP_NAME=${BGP_PEER_NAME}
+    ...    IP=${TOOLS_SYSTEM_IP}
+    ...    HOLDTIME=${HOLDTIME}
+    ...    PEER_PORT=${BGP_TOOL_PORT}
+    ...    PEER_GROUP_NAME=${PEER_GROUP}
+    ...    INITIATE=false
+    ...    BGP_RIB=${RIB_NAME}
+    ...    PASSIVE_MODE=true
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    TemplatedRequests.Put_As_Xml_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}bgp_peer_group
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
     [Teardown]    SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
 
 TC_PG_Restart_Talking_BGP_Speaker
     [Documentation]    Abort the Python speaker. Also, attempt to stop failing fast.
     [Tags]    critical
     [Setup]    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
     Restart_Talking_BGP_Speaker
     [Teardown]    FailFast.Do_Not_Start_Failing_If_This_Failed
 
 TC_PG_Check_Talking_Topology_Is_Filled
     [Documentation]    See new routes in example-ipv4-topology as a proof that synchronization was correct.
     [Tags]    critical
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
     Wait_For_Topology_To_Change_To    filled_topology
 
 TC_PG_Reconfigure_ODL_With_Peer_Group_Without_Ipv4_Unicast
-    [Documentation]    Configure BGP peer module with initiate-connection set to false. (Fluorine only)
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
+    [Documentation]    Configure BGP peer module with initiate-connection set to false.
     Configure_Peer_Group    peer_group_folder=peer_group_without_ipv4
     [Teardown]    SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
 
 TC_PG_Check_For_Empty_Topology_After_Deconfiguration
-    [Documentation]    See example-ipv4-topology empty after resetting session (Fluorine only)
+    [Documentation]    See example-ipv4-topology empty after resetting session.
     [Tags]    critical
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
     Wait_For_Topology_To_Change_To    empty_topology
 
 TC_PG_Reconfigure_ODL_To_Accept_Connection
-    [Documentation]    Configure BGP peer module with initiate-connection set to false. (Fluorine only)
-    CompareStream.Run_Keyword_If_Less_Than_Fluorine    BuiltIn.Pass_Execution    Test case valid only for versions fluorine and above.
-    &{mapping}    Create Dictionary    DEVICE_NAME=${DEVICE_NAME}    BGP_NAME=${BGP_PEER_NAME}    IP=${TOOLS_SYSTEM_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}
-    ...    PEER_GROUP_NAME=${PEER_GROUP}    INITIATE=false    BGP_RIB=${RIB_NAME}    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_NAME}
-    TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer_group    mapping=${mapping}    session=${CONFIG_SESSION}
-    TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
+    [Documentation]    Configure BGP peer module with initiate-connection set to false.
+    &{mapping}    Create Dictionary
+    ...    DEVICE_NAME=${DEVICE_NAME}
+    ...    BGP_NAME=${BGP_PEER_NAME}
+    ...    IP=${TOOLS_SYSTEM_IP}
+    ...    HOLDTIME=${HOLDTIME}
+    ...    PEER_PORT=${BGP_TOOL_PORT}
+    ...    PEER_GROUP_NAME=${PEER_GROUP}
+    ...    INITIATE=false
+    ...    BGP_RIB=${RIB_NAME}
+    ...    PASSIVE_MODE=true
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    TemplatedRequests.Delete_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}bgp_peer_group
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
+    TemplatedRequests.Put_As_Xml_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}bgp_peer
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
     Deconfigure_Peer_Group
     [Teardown]    SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
 
@@ -207,7 +261,8 @@ Check_For_Empty_Topology_After_Talking
 
 Start_Listening_BGP_Speaker
     [Documentation]    Start Python speaker in listening mode, verify that the tool does not exit quickly.
-    BGPSpeaker.Start_BGP_Speaker    --amount 3 --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --${BGP_TOOL_LOG_LEVEL}
+    BGPSpeaker.Start_BGP_Speaker
+    ...    --amount 3 --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --${BGP_TOOL_LOG_LEVEL}
     Read_And_Fail_If_Prompt_Is_Seen
 
 Check_Listening_Connection_Is_Not_Established_Yet
@@ -221,9 +276,20 @@ Check_For_Empty_Topology_Before_Listening
 
 Reconfigure_ODL_To_Initiate_Connection
     [Documentation]    Replace BGP peer config module, now with initiate-connection set to true.
-    &{mapping}    Create Dictionary    DEVICE_NAME=${DEVICE_NAME}    BGP_NAME=${BGP_PEER_NAME}    IP=${TOOLS_SYSTEM_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}
-    ...    INITIATE=true    BGP_RIB=${RIB_NAME}    PASSIVE_MODE=false    BGP_RIB_OPENCONFIG=${RIB_NAME}
-    TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
+    &{mapping}    Create Dictionary
+    ...    DEVICE_NAME=${DEVICE_NAME}
+    ...    BGP_NAME=${BGP_PEER_NAME}
+    ...    IP=${TOOLS_SYSTEM_IP}
+    ...    HOLDTIME=${HOLDTIME}
+    ...    PEER_PORT=${BGP_TOOL_PORT}
+    ...    INITIATE=true
+    ...    BGP_RIB=${RIB_NAME}
+    ...    PASSIVE_MODE=false
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    TemplatedRequests.Put_As_Xml_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}bgp_peer
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
 
 Check_Listening_Connection_Is_Established
     [Documentation]    See TCP (BGP) connection in established state.
@@ -250,7 +316,8 @@ Check_For_Empty_Topology_After_Listening
 
 Start_Listening_BGP_Speaker_Case_2
     [Documentation]    BGP Speaker introduces 2 prefixes in the first update & another 2 prefixes while the very first is withdrawn in 2nd update
-    BGPSpeaker.Start_BGP_Speaker    --amount 3 --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --prefill=2 --insert=2 --withdraw=1 --updates=single --firstprefix=8.0.0.240 --${BGP_TOOL_LOG_LEVEL}
+    BGPSpeaker.Start_BGP_Speaker
+    ...    --amount 3 --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --prefill=2 --insert=2 --withdraw=1 --updates=single --firstprefix=8.0.0.240 --${BGP_TOOL_LOG_LEVEL}
     Read_And_Fail_If_Prompt_Is_Seen
 
 Check_Listening_Connection_Is_Established_Case_2
@@ -278,7 +345,8 @@ Check_For_Empty_Topology_After_Listening_Case_2
 
 Start_Listening_BGP_Speaker_Case_3
     [Documentation]    BGP Speaker introduces 3 prefixes while the first one occures again in the withdrawn list (to be ignored by controller)
-    BGPSpeaker.Start_BGP_Speaker    --amount 2 --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --prefill=0 --insert=3 --withdraw=1 --updates=single --${BGP_TOOL_LOG_LEVEL}
+    BGPSpeaker.Start_BGP_Speaker
+    ...    --amount 2 --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --prefill=0 --insert=3 --withdraw=1 --updates=single --${BGP_TOOL_LOG_LEVEL}
     Read_And_Fail_If_Prompt_Is_Seen
 
 Check_Listening_Connection_Is_Established_Case_3
@@ -306,8 +374,16 @@ Check_For_Empty_Topology_After_Listening_Case_3
 
 Delete_Bgp_Peer_Configuration
     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
-    &{mapping}    BuiltIn.Create_Dictionary    DEVICE_NAME=${DEVICE_NAME}    BGP_NAME=${BGP_PEER_NAME}    IP=${TOOLS_SYSTEM_IP}    BGP_RIB_OPENCONFIG=${RIB_NAME}
-    TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
+    &{mapping}    BuiltIn.Create_Dictionary
+    ...    DEVICE_NAME=${DEVICE_NAME}
+    ...    BGP_NAME=${BGP_PEER_NAME}
+    ...    IP=${TOOLS_SYSTEM_IP}
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    TemplatedRequests.Delete_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}bgp_peer
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
+
 
 *** Keywords ***
 Setup_Everything
@@ -322,8 +398,10 @@ Setup_Everything
     SSHLibrary.Put_File    ${CURDIR}/../../../../tools/fastbgp/play.py
     RequestsLibrary.Create_Session    ${CONFIG_SESSION}    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}
     KarafKeywords.Execute_Controller_Karaf_Command_On_Background    log:set ${ODL_LOG_LEVEL}
-    KarafKeywords.Execute_Controller_Karaf_Command_On_Background    log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.bgpcep
-    KarafKeywords.Execute_Controller_Karaf_Command_On_Background    log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.protocol
+    KarafKeywords.Execute_Controller_Karaf_Command_On_Background
+    ...    log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.bgpcep
+    KarafKeywords.Execute_Controller_Karaf_Command_On_Background
+    ...    log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.protocol
 
 Teardown_Everything
     [Documentation]    Make sure Python tool was killed, delete all sessions, tear down imported Resources.
@@ -332,19 +410,26 @@ Teardown_Everything
     SSHLibrary.Close_All_Connections
 
 Wait_For_Topology_To_Change_To
-    [Arguments]    ${folder_name}    ${timeout}=10s    ${refresh}=1s
     [Documentation]    Wait until Compare_Topology matches expected result.
+    [Arguments]    ${folder_name}    ${timeout}=10s    ${refresh}=1s
     BuiltIn.Wait_Until_Keyword_Succeeds    ${timeout}    ${refresh}    Compare_Topology    ${folder_name}
 
 Verify_That_Topology_Does_Not_Change_From
-    [Arguments]    ${folder_name}    ${timeout}=10s    ${refresh}=1s
     [Documentation]    Verify that Compare_Topology keeps passing, it will hold its last result.
-    WaitForFailure.Verify_Keyword_Does_Not_Fail_Within_Timeout    ${timeout}    ${refresh}    Compare_Topology    ${folder_name}
+    [Arguments]    ${folder_name}    ${timeout}=10s    ${refresh}=1s
+    WaitForFailure.Verify_Keyword_Does_Not_Fail_Within_Timeout
+    ...    ${timeout}
+    ...    ${refresh}
+    ...    Compare_Topology
+    ...    ${folder_name}
 
 Compare_Topology
-    [Arguments]    ${folder_name}
     [Documentation]    Get current example-ipv4-topology as json, and compare it to expected result.
-    TemplatedRequests.Get_As_Json_Templated    ${BGP_VARIABLES_FOLDER}${/}${folder_name}    session=${CONFIG_SESSION}    verify=True
+    [Arguments]    ${folder_name}
+    TemplatedRequests.Get_As_Json_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}${folder_name}
+    ...    session=${CONFIG_SESSION}
+    ...    verify=True
 
 Check_Speaker_Is_Not_Connected
     [Documentation]    Give it a few tries to see zero established connections.
@@ -355,32 +440,65 @@ Check_Speaker_Is_Connected
     BuiltIn.Wait_Until_Keyword_Succeeds    5s    1s    Check_Number_Of_Speaker_Connections    1
 
 Check_Number_Of_Speaker_Connections
-    [Arguments]    ${howmany}
     [Documentation]    Run netstat in mininet machine and parse it for number of established connections. Check it is ${howmany}.
-    ${output}=    SSHKeywords.Count_Port_Occurences    17900    ESTABLISHED    python
+    [Arguments]    ${howmany}
+    ${output}    SSHKeywords.Count_Port_Occurences    17900    ESTABLISHED    python
     BuiltIn.Should_Be_Equal_As_Strings    ${output}    ${howmany}
 
 Configure_Peer_Group
-    [Arguments]    ${peer_group_folder}=peer_group
     [Documentation]    Configures peer group which is template for all the neighbors which are going
     ...    to be configured. Also after PUT, this case verifies presence of peer group within
-    ...    peer-groups. This case is specific to versions Fluorine and above.
-    &{mapping}    Create Dictionary    DEVICE_NAME=${DEVICE_NAME}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_NAME}
-    ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_NAME}    PEER_GROUP_NAME=${PEER_GROUP}    RR_CLIENT=false
-    TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}${peer_group_folder}    mapping=${mapping}    session=${CONFIG_SESSION}
-    TemplatedRequests.Get_As_Json_Templated    ${BGP_VARIABLES_FOLDER}${/}verify_${peer_group_folder}    mapping=${mapping}    session=${CONFIG_SESSION}    verify=True
+    ...    peer-groups.
+    [Arguments]    ${peer_group_folder}=peer_group
+    &{mapping}    Create Dictionary
+    ...    DEVICE_NAME=${DEVICE_NAME}
+    ...    HOLDTIME=${HOLDTIME}
+    ...    PEER_PORT=${BGP_TOOL_PORT}
+    ...    INITIATE=false
+    ...    BGP_RIB=${RIB_NAME}
+    ...    PASSIVE_MODE=true
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    ...    PEER_GROUP_NAME=${PEER_GROUP}
+    ...    RR_CLIENT=false
+    ${verify_peer_group_folder}    CompareStream.Run_Keyword_If_At_Least_Else
+    ...    sulfur
+    ...    BuiltIn.Set Variable
+    ...    verify_${peer_group_folder}.sulfur
+    ...    ELSE
+    ...    BuiltIn.Set Variable
+    ...    verify_${peer_group_folder}
+    TemplatedRequests.Put_As_Xml_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}${peer_group_folder}
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
+    TemplatedRequests.Get_As_Json_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}${verify_peer_group_folder}
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
+    ...    verify=True
 
 Deconfigure_Peer_Group
     [Documentation]    Deconfigures peer group which is template for all the neighbors
-    ...    This test case is specific to versions Fluorine and above.
-    &{mapping}    Create Dictionary    DEVICE_NAME=${DEVICE_NAME}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}    INITIATE=false    BGP_RIB=${RIB_NAME}
-    ...    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${RIB_NAME}    PEER_GROUP_NAME=${PEER_GROUP}    RR_CLIENT=false
-    TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}peer_group    mapping=${mapping}    session=${CONFIG_SESSION}
+    &{mapping}    Create Dictionary
+    ...    DEVICE_NAME=${DEVICE_NAME}
+    ...    HOLDTIME=${HOLDTIME}
+    ...    PEER_PORT=${BGP_TOOL_PORT}
+    ...    INITIATE=false
+    ...    BGP_RIB=${RIB_NAME}
+    ...    PASSIVE_MODE=true
+    ...    BGP_RIB_OPENCONFIG=${RIB_NAME}
+    ...    PEER_GROUP_NAME=${PEER_GROUP}
+    ...    RR_CLIENT=false
+    TemplatedRequests.Delete_Templated
+    ...    ${BGP_VARIABLES_FOLDER}${/}peer_group
+    ...    mapping=${mapping}
+    ...    session=${CONFIG_SESSION}
 
 Restart_Talking_BGP_Speaker
     [Documentation]    Abort the Python speaker. Also, attempt to stop failing fast. And Start it again.
     ...    We have to restart it this way because we reset session before
     BGPSpeaker.Kill_BGP_Speaker
     FailFast.Do_Not_Fail_Fast_From_Now_On
-    BGPSpeaker.Start_BGP_Speaker    --amount 3 --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --${BGP_TOOL_LOG_LEVEL}
+    BGPSpeaker.Start_BGP_Speaker
+    ...    --amount 3 --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --${BGP_TOOL_LOG_LEVEL}
     Read_And_Fail_If_Prompt_Is_Seen