4339e8450e64f8e63db228960b688b343094683f
[integration/test.git] / csit / suites / bgpcep / bgpuser / bgp_app_peer_basic.robot
1 *** Settings ***
2 Documentation     Basic tests for BGP application peer.
3 ...
4 ...               Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
5 ...
6 ...               This program and the accompanying materials are made available under the
7 ...               terms of the Eclipse Public License v1.0 which accompanies this distribution,
8 ...               and is available at http://www.eclipse.org/legal/epl-v10.html
9 ...
10 ...               Test suite performs basic BGP functional test cases for
11 ...               BGP application peer operations and checks for IP4 topology updates
12 ...               and updates towards BGP peer as follows:
13 ...
14 ...               Test case 1: Initial BGP peer connection with pre-filled topology,
15 ...               POST and simple DELETE requests used.
16 ...               BGP_Application_Peer_Post_3_Initial_Routes,
17 ...               Check_Example-IPv4-Topology_Is_Filled_With_3_Routes,
18 ...               Connect_BGP_Peer,
19 ...               BGP_Peer_Check_Incomming_Updates_For_3_Introduced_Prefixes,
20 ...               BGP_Application_Peer_Delete_3_Initial_Routes,
21 ...               Check_Example-IPv4-Topology_Is_Empty,
22 ...               Peer_Check_Incomming_Updates_For_3_Withdrawn_Prefixes,
23 ...               Stop_BGP_Peer.
24 ...
25 ...               Test case 2: PUT and DELETE all routes requests while BGP peer is connected.
26 ...               Reconnect_BGP_Peer,
27 ...               BGP_Application_Peer_Put_3_Routes,
28 ...               Check_Example-IPv4-Topology_Is_Filled_With_3_Routes,
29 ...               BGP_Peer_Check_Incomming_Updates_For_3_Introduced_Prefixes,
30 ...               BGP_Application_Peer_Delete_All_Routes,
31 ...               Check_Example-IPv4-Topology_Is_Empty,
32 ...               BGP_Peer_Check_Incomming_Updates_For_3_Withdrawn_Prefixes,
33 ...               Stop_BGP_Peer.
34 ...
35 ...               Test case 3: Repeated BGP peer re-connection with pre-filled topology.
36 ...               BGP_Application_Peer_Put_3_Routes,
37 ...               Check_Example-IPv4-Topology_Is_Filled_With_3_Routes,
38 ...               Reconnect_BGP_Peer_And_Check_Incomming_Updates_For_3_Introduced_Prefixes,
39 ...               BGP_Application_Peer_Delete_All_Routes,
40 ...               Check_Example-IPv4-Topology_Is_Empty,
41 ...               BGP_Peer_Check_Incomming_Updates_For_3_Withdrawn_Prefixes,
42 ...               Stop_BGP_Peer.
43 ...
44 ...               Brief description how to configure BGP application peer and
45 ...               how to use restconf application peer interface:
46 ...               https://wiki.opendaylight.org/view/BGP_LS_PCEP:User_Guide#BGP_Application_Peer
47 ...               https://wiki.opendaylight.org/view/BGP_LS_PCEP:Programmer_Guide#BGP
48 Suite Setup       Setup_Everything
49 Suite Teardown    Teardown_Everything
50 Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
51 Test Teardown     FailFast.Start_Failing_Fast_If_This_Failed
52 Library           OperatingSystem
53 Library           SSHLibrary    timeout=10s
54 Library           RequestsLibrary
55 Resource          ../../../libraries/BGPcliKeywords.robot
56 Resource          ../../../libraries/FailFast.robot
57 Resource          ../../../libraries/KillPythonTool.robot
58 Resource          ../../../libraries/TemplatedRequests.robot
59 Resource          ../../../libraries/SetupUtils.robot
60 Resource          ../../../libraries/SSHKeywords.robot
61 Resource          ../../../libraries/WaitForFailure.robot
62 Resource          ../../../variables/Variables.robot
63
64 *** Variables ***
65 ${BGP_VARIABLES_FOLDER}    ${CURDIR}/../../../variables/bgpuser/
66 ${TOOLS_SYSTEM_PROMPT}    ${DEFAULT_LINUX_PROMPT}
67 ${HOLDTIME}       180
68 ${BGP_PEER_LOG_LEVEL}    debug
69 ${BGP_APP_PEER_LOG_LEVEL}    debug
70 ${BGP_PEER_COMMAND}    python play.py --amount 0 --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --${BGP_PEER_LOG_LEVEL}
71 ${BGP_PEER_OPTIONS}    ${EMPTY}
72 ${BGP_APP_PEER_ID}    ${ODL_SYSTEM_IP}
73 ${BGP_APP_PEER_POST_COMMAND}    python bgp_app_peer.py --host ${ODL_SYSTEM_IP} --port ${RESTCONFPORT} --command post --count 3 --prefix 8.0.1.0 --prefixlen 28 --${BGP_APP_PEER_LOG_LEVEL} --stream=${ODL_STREAM}
74 ${BGP_APP_PEER_PUT_COMMAND}    python bgp_app_peer.py --host ${ODL_SYSTEM_IP} --port ${RESTCONFPORT} --command put --count 3 --prefix 8.0.1.0 --prefixlen 28 --${BGP_APP_PEER_LOG_LEVEL} --stream=${ODL_STREAM}
75 ${BGP_APP_PEER_DELETE_COMMAND}    python bgp_app_peer.py --host ${ODL_SYSTEM_IP} --port ${RESTCONFPORT} --command delete --count 3 --prefix 8.0.1.0 --prefixlen 28 --${BGP_APP_PEER_LOG_LEVEL} --stream=${ODL_STREAM}
76 ${BGP_APP_PEER_DELETE_ALL_COMMAND}    python bgp_app_peer.py --host ${ODL_SYSTEM_IP} --port ${RESTCONFPORT} --command delete-all --${BGP_APP_PEER_LOG_LEVEL} --stream=${ODL_STREAM}
77 ${BGP_APP_PEER_GET_COMMAND}    python bgp_app_peer.py --host ${ODL_SYSTEM_IP} --port ${RESTCONFPORT} --command get --${BGP_APP_PEER_LOG_LEVEL} --stream=${ODL_STREAM}
78 ${BGP_APP_PEER_OPTIONS}    &>/dev/null
79 ${BGP_APP_PEER_TIMEOUT}    30s
80 ${BGP_PEER_APP_NAME}    example-bgp-peer-app
81 ${CONFIG_SESSION}    session
82 ${RIB_INSTANCE}    example-bgp-rib
83 ${PROTOCOL_OPENCONFIG}    ${RIB_INSTANCE}
84 ${DEVICE_NAME}    controller-config
85 ${BGP_PEER_NAME}    example-bgp-peer
86 ${RIB_INSTANCE}    example-bgp-rib
87 ${SCRIPT_URI_OPT}    --uri config/bgp-rib:application-rib/${ODL_SYSTEM_IP}/tables/bgp-types:ipv4-address-family/bgp-types:unicast-subsequent-address-family/
88
89 *** Test Cases ***
90 Reconfigure_ODL_To_Accept_BGP_Peer_Connection
91     [Documentation]    Configure BGP peer module with initiate-connection set to false.
92     [Tags]    critical
93     &{mapping}    Create Dictionary    DEVICE_NAME=${DEVICE_NAME}    BGP_NAME=${BGP_PEER_NAME}    IP=${TOOLS_SYSTEM_IP}    HOLDTIME=${HOLDTIME}    PEER_PORT=${BGP_TOOL_PORT}
94     ...    INITIATE=false    BGP_RIB=${RIB_INSTANCE}    PASSIVE_MODE=true    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}    RIB_INSTANCE_NAME=${RIB_INSTANCE}
95     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
96
97 Reconfigure_ODL_To_Accept_BGP_Application_Peer
98     [Documentation]    Configure BGP application peer module.
99     [Tags]    critical
100     &{mapping}    Create Dictionary    DEVICE_NAME=${DEVICE_NAME}    NAME=${BGP_PEER_APP_NAME}    RIB_INSTANCE_NAME=${RIB_INSTANCE}    IP=${BGP_APP_PEER_ID}    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
101     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_application_peer    mapping=${mapping}    session=${CONFIG_SESSION}
102
103 Check_For_Empty_Example-IPv4-Topology
104     [Documentation]    Sanity check example-ipv4-topology is up but empty.
105     [Tags]    critical
106     Wait_For_Topology_To_Change_To    empty_topology    timeout=180s
107
108 TC1_BGP_Application_Peer_Post_3_Initial_Routes
109     [Documentation]    Start BGP application peer tool and give it ${BGP_APP_PEER_TIMEOUT}
110     [Tags]    critical
111     Switch_To_BGP_Application_Peer_Console
112     Start_Console_Tool    ${BGP_APP_PEER_POST_COMMAND} ${SCRIPT_URI_OPT}    ${BGP_APP_PEER_OPTIONS}
113     Wait_Until_Console_Tool_Finish    ${BGP_APP_PEER_TIMEOUT}
114     Store_File_To_Workspace    bgp_app_peer.log    bgp_app_peer_initial_post_tc1.log
115
116 TC1_Check_Example-IPv4-Topology_Is_Filled_With_3_Routes
117     [Documentation]    See new routes in example-ipv4-topology as a proof that synchronization was correct.
118     [Tags]    critical
119     Wait_For_Topology_To_Change_To    filled_topology
120
121 TC1_Connect_BGP_Peer
122     [Documentation]    Start BGP peer tool
123     [Tags]    critical
124     Switch_To_BGP_Peer_Console
125     Start_Console_Tool    ${BGP_PEER_COMMAND}    ${BGP_PEER_OPTIONS}
126     Read_And_Fail_If_Prompt_Is_Seen
127
128 TC1_BGP_Peer_Check_Incomming_Updates_For_3_Introduced_Prefixes
129     [Documentation]    Check incomming updates for new routes
130     [Tags]    critical
131     Switch_To_BGP_Peer_Console
132     BuiltIn.Wait_Until_Keyword_Succeeds    10s    1s    Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received:    3
133     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.0/28    1
134     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.16/28    1
135     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.32/28    1
136     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received:    0
137
138 TC1_BGP_Application_Peer_Delete_3_Initial_Routes
139     [Documentation]    Start BGP application peer tool and give him ${BGP_APP_PEER_TIMEOUT}
140     [Tags]    critical
141     Switch_To_BGP_Application_Peer_Console
142     Start_Console_Tool    ${BGP_APP_PEER_DELETE_COMMAND} ${SCRIPT_URI_OPT}    ${BGP_APP_PEER_OPTIONS}
143     Wait_Until_Console_Tool_Finish    ${BGP_APP_PEER_TIMEOUT}
144     Store_File_To_Workspace    bgp_app_peer.log    bgp_app_peer_delete_tc1.log
145
146 TC1_Check_Example-IPv4-Topology_Is_Empty
147     [Documentation]    See new routes are deleted.
148     [Tags]    critical
149     Wait_For_Topology_To_Change_To    empty_topology
150
151 TC1_Peer_Check_Incomming_Updates_For_3_Withdrawn_Prefixes
152     [Documentation]    Check incomming updates for new routes
153     [Tags]    critical
154     Switch_To_BGP_Peer_Console
155     BuiltIn.Wait_Until_Keyword_Succeeds    10s    1s    Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received:    3
156     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.0/28    1
157     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.16/28    1
158     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.32/28    1
159     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received:    3
160
161 TC1_Stop_BGP_Peer
162     [Documentation]    Stop BGP peer tool
163     [Tags]    critical
164     Switch_To_BGP_Peer_Console
165     Stop_Console_Tool
166     Store_File_To_Workspace    bgp_peer.log    bgp_peer_tc1.log
167
168 TC2_Reconnect_BGP_Peer
169     [Documentation]    Start BGP peer tool
170     [Tags]    critical
171     Switch_To_BGP_Peer_Console
172     Start_Console_Tool    ${BGP_PEER_COMMAND}    ${BGP_PEER_OPTIONS}
173     Read_And_Fail_If_Prompt_Is_Seen
174     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received:    0
175     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received:    0
176
177 TC2_BGP_Application_Peer_Put_3_Routes
178     [Documentation]    Start BGP application peer tool and give him ${BGP_APP_PEER_TIMEOUT}
179     [Tags]    critical
180     Switch_To_BGP_Application_Peer_Console
181     Start_Console_Tool    ${BGP_APP_PEER_PUT_COMMAND} ${SCRIPT_URI_OPT}    ${BGP_APP_PEER_OPTIONS}
182     Wait_Until_Console_Tool_Finish    ${BGP_APP_PEER_TIMEOUT}
183     Store_File_To_Workspace    bgp_app_peer.log    bgp_app_peer_put_tc2.log
184
185 TC2_Check_Example-IPv4-Topology_Is_Filled_With_3_Routes
186     [Documentation]    See new routes in example-ipv4-topology as a proof that synchronization was correct.
187     [Tags]    critical
188     Wait_For_Topology_To_Change_To    filled_topology
189
190 TC2_BGP_Peer_Check_Incomming_Updates_For_3_Introduced_Prefixes
191     [Documentation]    Check incomming updates for new routes
192     [Tags]    critical
193     Switch_To_BGP_Peer_Console
194     BuiltIn.Wait_Until_Keyword_Succeeds    10s    1s    Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received:    3
195     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.0/28    1
196     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.16/28    1
197     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.32/28    1
198     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received:    0
199
200 TC2_BGP_Application_Peer_Delete_All_Routes
201     [Documentation]    Start BGP application peer tool and give him ${BGP_APP_PEER_TIMEOUT}
202     [Tags]    critical
203     Switch_To_BGP_Application_Peer_Console
204     Start_Console_Tool    ${BGP_APP_PEER_DELETE_ALL_COMMAND} ${SCRIPT_URI_OPT}    ${BGP_APP_PEER_OPTIONS}
205     Wait_Until_Console_Tool_Finish    ${BGP_APP_PEER_TIMEOUT}
206     Store_File_To_Workspace    bgp_app_peer.log    bgp_app_peer_delete_all_tc2.log
207
208 TC2_Check_Example-IPv4-Topology_Is_Empty
209     [Documentation]    See new routes are deleted.
210     [Tags]    critical
211     Wait_For_Topology_To_Change_To    empty_topology
212
213 TC2_BGP_Peer_Check_Incomming_Updates_For_3_Withdrawn_Prefixes
214     [Documentation]    Check incomming updates for new routes
215     [Tags]    critical
216     Switch_To_BGP_Peer_Console
217     BuiltIn.Wait_Until_Keyword_Succeeds    10s    1s    Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received:    3
218     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.0/28    1
219     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.16/28    1
220     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.32/28    1
221     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received:    3
222
223 TC2_Stop_BGP_Peer
224     [Documentation]    Stop BGP peer tool
225     [Tags]    critical
226     Switch_To_BGP_Peer_Console
227     Stop_Console_Tool
228     Store_File_To_Workspace    bgp_peer.log    bgp_peer_tc2.log
229
230 TC3_BGP_Application_Peer_Put_3_Routes
231     [Documentation]    Start BGP application peer tool and give him ${BGP_APP_PEER_TIMEOUT}
232     [Tags]    critical
233     Switch_To_BGP_Application_Peer_Console
234     Start_Console_Tool    ${BGP_APP_PEER_PUT_COMMAND} ${SCRIPT_URI_OPT}    ${BGP_APP_PEER_OPTIONS}
235     Wait_Until_Console_Tool_Finish    ${BGP_APP_PEER_TIMEOUT}
236     Store_File_To_Workspace    bgp_app_peer.log    bgp_app_peer_put_tc3.log
237
238 TC3_Check_Example-IPv4-Topology_Is_Filled_With_3_Routes
239     [Documentation]    See new routes in example-ipv4-topology as a proof that synchronization was correct.
240     [Tags]    critical
241     Wait_For_Topology_To_Change_To    filled_topology
242
243 TC3_Reconnect_BGP_Peer_And_Check_Incomming_Updates_For_3_Introduced_Prefixes
244     [Documentation]    Start BGP peer tool
245     [Tags]    critical
246     Switch_To_BGP_Peer_Console
247     Start_Console_Tool    ${BGP_PEER_COMMAND}    ${BGP_PEER_OPTIONS}
248     Read_And_Fail_If_Prompt_Is_Seen
249     BuiltIn.Wait_Until_Keyword_Succeeds    10s    1s    Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received:    3
250     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received:    3
251     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.0/28    1
252     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.16/28    1
253     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received: 8.0.1.32/28    1
254     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received:    0
255
256 TC3_BGP_Application_Peer_Delete_All_Routes
257     [Documentation]    Start BGP application peer tool and give him ${BGP_APP_PEER_TIMEOUT}
258     [Tags]    critical
259     Switch_To_BGP_Application_Peer_Console
260     Start_Console_Tool    ${BGP_APP_PEER_DELETE_ALL_COMMAND} ${SCRIPT_URI_OPT}    ${BGP_APP_PEER_OPTIONS}
261     Wait_Until_Console_Tool_Finish    ${BGP_APP_PEER_TIMEOUT}
262     Store_File_To_Workspace    bgp_app_peer.log    bgp_app_peer_delete_all_tc3.log
263
264 TC3_Check_Example-IPv4-Topology_Is_Empty
265     [Documentation]    See new routes are deleted.
266     [Tags]    critical
267     Wait_For_Topology_To_Change_To    empty_topology
268
269 TC3_BGP_Peer_Check_Incomming_Updates_For_3_Withdrawn_Prefixes
270     [Documentation]    Check incomming updates for new routes
271     [Tags]    critical
272     Switch_To_BGP_Peer_Console
273     BuiltIn.Wait_Until_Keyword_Succeeds    10s    1s    Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received:    3
274     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.0/28    1
275     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.16/28    1
276     Check_File_For_Word_Count    bgp_peer.log    withdrawn_prefix_received: 8.0.1.32/28    1
277     Check_File_For_Word_Count    bgp_peer.log    nlri_prefix_received:    3
278
279 TC3_Stop_BGP_Peer
280     [Documentation]    Stop BGP peer tool
281     [Tags]    critical
282     Switch_To_BGP_Peer_Console
283     Stop_Console_Tool
284     Store_File_To_Workspace    bgp_peer.log    bgp_peer_tc3.log
285
286 Delete_Bgp_Peer_Configuration
287     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
288     [Tags]    critical
289     &{mapping}    BuiltIn.Create_Dictionary    DEVICE_NAME=${DEVICE_NAME}    BGP_NAME=${BGP_PEER_NAME}    IP=${TOOLS_SYSTEM_IP}    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
290     TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}    session=${CONFIG_SESSION}
291
292 Delete_Bgp_Application_Peer_Configuration
293     [Documentation]    Revert the BGP configuration to the original state: without any configured peers.
294     [Tags]    critical
295     &{mapping}    BuiltIn.Create_Dictionary    DEVICE_NAME=${DEVICE_NAME}    NAME=${BGP_PEER_APP_NAME}    IP=${ODL_SYSTEM_IP}    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
296     TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_application_peer    mapping=${mapping}    session=${CONFIG_SESSION}
297
298 *** Keywords ***
299 Setup_Everything
300     [Documentation]    Initialize SetupUtils. SSH-login to mininet machine, create HTTP session,
301     ...    put Python tool to mininet machine, setup imported resources.
302     SetupUtils.Setup_Utils_For_Setup_And_Teardown
303     SSHLibrary.Set_Default_Configuration    prompt=${TOOLS_SYSTEM_PROMPT}
304     Open_BGP_Peer_Console
305     SSHKeywords.Require_Python
306     SSHKeywords.Assure_Library_Ipaddr    target_dir=.
307     SSHLibrary.Put_File    ${CURDIR}/../../../../tools/fastbgp/play.py
308     Open_BGP_Aplication_Peer_Console
309     SSHLibrary.Put_File    ${CURDIR}/../../../../tools/fastbgp/bgp_app_peer.py
310     SSHLibrary.Put_File    ${CURDIR}/../../../../tools/fastbgp/ipv4-routes-template.xml*
311     RequestsLibrary.Create_Session    ${CONFIG_SESSION}    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}
312
313 Teardown_Everything
314     [Documentation]    Make sure Python tool was killed.
315     ...    Tear down imported Resources.
316     KillPythonTool.Search_And_Kill_Remote_Python    'play\.py'
317     KillPythonTool.Search_And_Kill_Remote_Python    'bgp_app_peer\.py'
318     RequestsLibrary.Delete_All_Sessions
319     SSHLibrary.Close_All_Connections
320
321 Open_BGP_Peer_Console
322     [Documentation]    Create a session for BGP peer.
323     SSHLibrary.Open_Connection    ${TOOLS_SYSTEM_IP}    alias=bgp_peer_console
324     SSHKeywords.Flexible_Mininet_Login
325
326 Open_BGP_Aplication_Peer_Console
327     [Documentation]    Create a session for BGP peer.
328     SSHLibrary.Open_Connection    ${TOOLS_SYSTEM_IP}    alias=bgp_app_peer_console
329     SSHKeywords.Flexible_Mininet_Login
330
331 Switch_To_BGP_Peer_Console
332     SSHLibrary.Switch Connection    bgp_peer_console
333
334 Switch_To_BGP_Application_Peer_Console
335     SSHLibrary.Switch Connection    bgp_app_peer_console
336
337 Wait_For_Topology_To_Change_To
338     [Arguments]    ${folder_name}    ${timeout}=10s    ${refresh}=1s
339     [Documentation]    Wait until Compare_Topology matches expected result.
340     BuiltIn.Wait_Until_Keyword_Succeeds    ${timeout}    ${refresh}    Compare_Topology    ${folder_name}
341
342 Verify_That_Topology_Does_Not_Change_From
343     [Arguments]    ${folder_name}    ${timeout}=10s    ${refresh}=1s
344     [Documentation]    Verify that Compare_Topology keeps passing, it will hold its last result.
345     WaitForFailure.Verify_Keyword_Does_Not_Fail_Within_Timeout    ${timeout}    ${refresh}    Compare_Topology    ${folder_name}
346
347 Compare_Topology
348     [Arguments]    ${folder_name}
349     [Documentation]    Get current example-ipv4-topology as json, and compare it to expected result.
350     TemplatedRequests.Get_As_Json_Templated    ${BGP_VARIABLES_FOLDER}${/}${folder_name}    session=${CONFIG_SESSION}    verify=True