2 Documentation Basic tests for iBGP peers.
4 ... Copyright (c) 2015-2018 Cisco Systems, Inc. and others. All rights reserved.
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
10 ... Test suite performs basic iBGP functional test cases for
11 ... BGP peers in different roles (iBGP, iBGP RR-client):
13 ... Test Case 1: Two iBGP RR-client peers introduce prefixes
14 ... Expected result: controller forwards updates towards both peers
16 ... Test Case 2: Two iBGP peers: one RR client and one non-client introduces prefixes
17 ... Expected result: controller forwards updates towards both peers
19 ... Test Case 3: Two iBGP RR non-client peers introduce prefixes
20 ... Expected result: controller does not forward any update towards peers
22 ... Test Case 4: Two iBGP(play.py) RR-client peers configured, first of them configured
23 ... with route-reflector-cluster-id, second inherits it's cluster-id from global config.
24 ... Each of them introduces 3 prefixes.
25 ... Expected result: controller forwards updates towards both peers and each of their
26 ... adj-rib-in contains routes. First peer should contain default cluster-id and
27 ... second cluster-id from first peers configuration.
29 ... For polices see: https://wiki.opendaylight.org/view/BGP_LS_PCEP:BGP
30 Suite Setup Setup_Everything
31 Suite Teardown BgpOperations.Teardown_Everything
32 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
33 Test Teardown FailFast.Start_Failing_Fast_If_This_Failed
34 Library OperatingSystem
35 Library RequestsLibrary
37 Resource ../../../variables/Variables.robot
38 Resource ../../../libraries/BGPcliKeywords.robot
39 Resource ../../../libraries/BgpOperations.robot
40 Resource ../../../libraries/FailFast.robot
41 Resource ../../../libraries/SetupUtils.robot
42 Resource ../../../libraries/SSHKeywords.robot
43 Resource ../../../libraries/TemplatedRequests.robot
44 Resource ../../../libraries/CompareStream.robot
47 ${BGP_VARIABLES_FOLDER} ${CURDIR}/../../../variables/bgpuser/
49 ${BGP_PEER_LOG_LEVEL} debug
51 ${ODL_BGP_LOG_LEVEL} DEFAULT
52 ${DEVICE_NAME} controller-config
53 ${BGP_PEER1_IP} 127.0.0.1
54 ${BGP_PEER2_IP} 127.0.0.2
55 ${BGP_PEER1_FIRST_PREFIX_IP} 8.1.0.0
56 ${BGP_PEER2_FIRST_PREFIX_IP} 8.2.0.0
58 ${BGP_PEER1_PREFIX_LEN} ${PREFIX_LEN}
59 ${BGP_PEER2_PREFIX_LEN} ${PREFIX_LEN}
61 ${BGP_PEER1_PREFIX_COUNT} ${PREFIX_COUNT}
62 ${BGP_PEER2_PREFIX_COUNT} ${PREFIX_COUNT}
63 ${BGP_PEER1_LOG_FILE} bgp_peer1.log
64 ${BGP_PEER2_LOG_FILE} bgp_peer2.log
65 ${BGP_PEER1_COMMAND} python play.py --firstprefix ${BGP_PEER1_FIRST_PREFIX_IP} --prefixlen ${BGP_PEER1_PREFIX_LEN} --amount ${BGP_PEER1_PREFIX_COUNT} --myip=${BGP_PEER1_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --${BGP_PEER_LOG_LEVEL} --logfile ${BGP_PEER1_LOG_FILE}
66 ${BGP_PEER2_COMMAND} python play.py --firstprefix ${BGP_PEER2_FIRST_PREFIX_IP} --prefixlen ${BGP_PEER2_PREFIX_LEN} --amount ${BGP_PEER2_PREFIX_COUNT} --myip=${BGP_PEER2_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --${BGP_PEER_LOG_LEVEL} --logfile ${BGP_PEER2_LOG_FILE}
67 ${BGP_PEER1_OPTIONS} &>${BGP_PEER1_LOG_FILE}
68 ${BGP_PEER2_OPTIONS} &>${BGP_PEER2_LOG_FILE}
69 ${DEFAULT_LOG_CHECK_TIMEOUT} 20s
70 ${DEFAULT_LOG_CHECK_PERIOD} 1s
71 ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} 10s
72 ${DEFAULT_TOPOLOGY_CHECK_PERIOD} 1s
73 ${CONFIG_SESSION} session
74 ${RIB_INSTANCE} example-bgp-rib
75 ${PROTOCOL_OPENCONFIG} ${RIB_INSTANCE}
78 TC1_Configure_Two_iBGP_Route_Reflector_Client_Peers
79 [Documentation] Configure two iBGP peers as routing reflector clients.
81 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer1 IP=${BGP_PEER1_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT}
82 ... PEER_ROLE=rr-client INITIATE=false BGP_RIB=${RIB_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} RIB_INSTANCE_NAME=${RIB_INSTANCE}
84 TemplatedRequests.Put_As_Xml_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
85 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer2 IP=${BGP_PEER2_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT}
86 ... PEER_ROLE=rr-client INITIATE=false BGP_RIB=${RIB_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} RIB_INSTANCE_NAME=${RIB_INSTANCE}
88 TemplatedRequests.Put_As_Xml_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
91 [Documentation] Connect BGP peer
93 SSHLibrary.Switch Connection bgp_peer1_console
94 BGPCliKeywords.Start_Console_Tool ${BGP_PEER1_COMMAND} ${BGP_PEER1_OPTIONS}
95 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Content ${CONFIG_SESSION} {"prefix":"${BGP_PEER1_FIRST_PREFIX_IP}/${PREFIX_LEN}"}
98 [Documentation] Connect BGP peer
100 SSHLibrary.Switch Connection bgp_peer2_console
101 BGPCliKeywords.Start_Console_Tool ${BGP_PEER2_COMMAND} ${BGP_PEER2_OPTIONS}
102 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Content ${CONFIG_SESSION} {"prefix":"${BGP_PEER2_FIRST_PREFIX_IP}/${PREFIX_LEN}"}
104 TC1_BGP_Peer1_Check_Log_For_Introduced_Prefixes
105 [Documentation] Check incomming updates for new routes
107 SSHLibrary.Switch Connection bgp_peer1_console
108 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_LOG_CHECK_TIMEOUT} ${DEFAULT_LOG_CHECK_PERIOD} BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER1_LOG_FILE} nlri_prefix_received: ${BGP_PEER2_PREFIX_COUNT}
109 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER1_LOG_FILE} nlri_prefix_received: ${BGP_PEER2_FIRST_PREFIX_IP}/${BGP_PEER2_PREFIX_LEN} 1
110 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER1_LOG_FILE} withdrawn_prefix_received: 0
112 TC1_BGP_Peer2_Check_Log_For_Introduced_Prefixes
113 [Documentation] Check incomming updates for new routes
115 SSHLibrary.Switch Connection bgp_peer2_console
116 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_LOG_CHECK_TIMEOUT} ${DEFAULT_LOG_CHECK_PERIOD} BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} nlri_prefix_received: ${BGP_PEER1_PREFIX_COUNT}
117 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} nlri_prefix_received: ${BGP_PEER1_FIRST_PREFIX_IP}/${BGP_PEER1_PREFIX_LEN} 1
118 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} withdrawn_prefix_received: 0
120 TC1_Disconnect_BGP_Peer1
121 [Documentation] Stop BGP peer & store logs
123 SSHLibrary.Switch Connection bgp_peer1_console
124 BGPCliKeywords.Stop_Console_Tool
125 BGPCliKeywords.Store_File_To_Workspace ${BGP_PEER1_LOG_FILE} tc1_${BGP_PEER1_LOG_FILE}
127 TC1_BGP_Peer2_Check_Log_For_Withdrawn_Prefixes
128 [Documentation] Check incomming updates for withdrawn routes
130 SSHLibrary.Switch Connection bgp_peer2_console
131 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_LOG_CHECK_TIMEOUT} ${DEFAULT_LOG_CHECK_PERIOD} BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} withdrawn_prefix_received: ${BGP_PEER1_PREFIX_COUNT}
132 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} withdrawn_prefix_received: ${BGP_PEER1_FIRST_PREFIX_IP}/${BGP_PEER1_PREFIX_LEN} 1
134 TC1_Disconnect_BGP_Peer2
135 [Documentation] Stop BGP peer & store logs
137 SSHLibrary.Switch Connection bgp_peer2_console
138 BGPCliKeywords.Stop_Console_Tool
139 BGPCliKeywords.Store_File_To_Workspace ${BGP_PEER2_LOG_FILE} tc1_${BGP_PEER2_LOG_FILE}
141 TC_1_Check_for_Empty_IPv4_Topology
142 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Does_Not_Contain ${CONFIG_SESSION} prefix
144 TC1_Delete_BGP_Peers_Configuration
145 [Documentation] Delete all previously configured BGP peers.
147 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer1 IP=${BGP_PEER1_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
148 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
149 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer2 IP=${BGP_PEER2_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
150 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
152 TC2_Configure_One_iBGP_Route_Reflector_Client_And_One_iBGP_Non_Client
153 [Documentation] Configure iBGP peers: 1st one as RR client, 2nd one as RR non-client.
155 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer1 IP=${BGP_PEER1_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT}
156 ... PEER_ROLE=rr-client INITIATE=false BGP_RIB=${RIB_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} RIB_INSTANCE_NAME=${RIB_INSTANCE}
158 TemplatedRequests.Put_As_Xml_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
159 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer2 IP=${BGP_PEER2_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT}
160 ... PEER_ROLE=ibgp INITIATE=false BGP_RIB=${RIB_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} RIB_INSTANCE_NAME=${RIB_INSTANCE}
162 TemplatedRequests.Put_As_Xml_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
164 TC2_Connect_BGP_Peer1
165 [Documentation] Connect BGP peer
167 SSHLibrary.Switch Connection bgp_peer1_console
168 BGPCliKeywords.Start_Console_Tool ${BGP_PEER1_COMMAND} ${BGP_PEER1_OPTIONS}
169 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Content ${CONFIG_SESSION} {"prefix":"${BGP_PEER1_FIRST_PREFIX_IP}/${PREFIX_LEN}"}
171 TC2_Connect_BGP_Peer2
172 [Documentation] Connect BGP peer
174 SSHLibrary.Switch Connection bgp_peer2_console
175 BGPCliKeywords.Start_Console_Tool ${BGP_PEER2_COMMAND} ${BGP_PEER2_OPTIONS}
176 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Content ${CONFIG_SESSION} {"prefix":"${BGP_PEER2_FIRST_PREFIX_IP}/${PREFIX_LEN}"}
178 TC2_BGP_Peer1_Check_Log_For_Introduced_Prefixes
179 [Documentation] Check incomming updates for new routes
181 SSHLibrary.Switch Connection bgp_peer1_console
182 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_LOG_CHECK_TIMEOUT} ${DEFAULT_LOG_CHECK_PERIOD} BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER1_LOG_FILE} nlri_prefix_received: ${BGP_PEER2_PREFIX_COUNT}
183 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER1_LOG_FILE} nlri_prefix_received: ${BGP_PEER2_FIRST_PREFIX_IP}/${BGP_PEER2_PREFIX_LEN} 1
184 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER1_LOG_FILE} withdrawn_prefix_received: 0
186 TC2_BGP_Peer2_Check_Log_For_Introduced_Prefixes
187 [Documentation] Check incomming updates for new routes
189 SSHLibrary.Switch Connection bgp_peer2_console
190 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_LOG_CHECK_TIMEOUT} ${DEFAULT_LOG_CHECK_PERIOD} BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} nlri_prefix_received: ${BGP_PEER1_PREFIX_COUNT}
191 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} nlri_prefix_received: ${BGP_PEER1_FIRST_PREFIX_IP}/${BGP_PEER1_PREFIX_LEN} 1
192 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} withdrawn_prefix_received: 0
194 TC2_Disconnect_BGP_Peer1
195 [Documentation] Stop BGP peer & store logs
197 SSHLibrary.Switch Connection bgp_peer1_console
198 BGPCliKeywords.Stop_Console_Tool
199 BGPCliKeywords.Store_File_To_Workspace ${BGP_PEER1_LOG_FILE} tc2_${BGP_PEER1_LOG_FILE}
201 TC2_BGP_Peer2_Check_Log_For_Withdrawn_Prefixes
202 [Documentation] Check incomming updates for withdrawn routes
204 SSHLibrary.Switch Connection bgp_peer2_console
205 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_LOG_CHECK_TIMEOUT} ${DEFAULT_LOG_CHECK_PERIOD} BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} withdrawn_prefix_received: ${BGP_PEER1_PREFIX_COUNT}
206 BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} withdrawn_prefix_received: ${BGP_PEER1_FIRST_PREFIX_IP}/${BGP_PEER1_PREFIX_LEN} 1
208 TC2_Disconnect_BGP_Peer2
209 [Documentation] Stop BGP peer & store logs
211 SSHLibrary.Switch Connection bgp_peer2_console
212 BGPCliKeywords.Stop_Console_Tool
213 BGPCliKeywords.Store_File_To_Workspace ${BGP_PEER2_LOG_FILE} tc2_${BGP_PEER2_LOG_FILE}
215 TC_2_Check_for_Empty_IPv4_Topology
216 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Does_Not_Contain ${CONFIG_SESSION} prefix
218 TC2_Delete_BGP_Peers_Configuration
219 [Documentation] Delete all previously configured BGP peers.
221 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer1 IP=${BGP_PEER1_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
222 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
223 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer2 IP=${BGP_PEER2_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
224 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
226 TC3_Configure_Two_iBGP_Non_Client_Peers
227 [Documentation] Configure iBGP peers: 1st one as RR client, 2nd one as RR non-client.
229 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer1 IP=${BGP_PEER1_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT}
230 ... PEER_ROLE=ibgp INITIATE=false BGP_RIB=${RIB_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} RIB_INSTANCE_NAME=${RIB_INSTANCE}
232 TemplatedRequests.Put_As_Xml_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
233 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer2 IP=${BGP_PEER2_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT}
234 ... PEER_ROLE=ibgp INITIATE=false BGP_RIB=${RIB_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} RIB_INSTANCE_NAME=${RIB_INSTANCE}
236 TemplatedRequests.Put_As_Xml_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
238 TC3_Connect_BGP_Peer1
239 [Documentation] Connect BGP peer
241 SSHLibrary.Switch Connection bgp_peer1_console
242 BGPCliKeywords.Start_Console_Tool ${BGP_PEER1_COMMAND} ${BGP_PEER1_OPTIONS}
243 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Content ${CONFIG_SESSION} {"prefix":"${BGP_PEER1_FIRST_PREFIX_IP}/${PREFIX_LEN}"}
245 TC3_Connect_BGP_Peer2
246 [Documentation] Connect BGP peer
248 SSHLibrary.Switch Connection bgp_peer2_console
249 BGPCliKeywords.Start_Console_Tool ${BGP_PEER2_COMMAND} ${BGP_PEER2_OPTIONS}
250 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Content ${CONFIG_SESSION} {"prefix":"${BGP_PEER2_FIRST_PREFIX_IP}/${PREFIX_LEN}"}
252 TC3_BGP_Peer1_Check_Log_For_No_Updates
253 [Documentation] Check for no updates received by iBGP peer No. 1
255 SSHLibrary.Switch Connection bgp_peer1_console
256 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_LOG_CHECK_TIMEOUT} ${DEFAULT_LOG_CHECK_PERIOD} BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER1_LOG_FILE} total_received_update_message_counter: 0 2
258 TC3_Disconnect_BGP_Peer1
259 [Documentation] Stop BGP peer & store logs
261 SSHLibrary.Switch Connection bgp_peer1_console
262 BGPCliKeywords.Stop_Console_Tool
263 BGPCliKeywords.Store_File_To_Workspace ${BGP_PEER1_LOG_FILE} tc3_${BGP_PEER1_LOG_FILE}
265 TC3_BGP_Peer2_Check_Log_For_No_Updates
266 [Documentation] Consequent check for no updates received by iBGP peer No. 2
268 SSHLibrary.Switch Connection bgp_peer2_console
269 ${log_check_timeout}= DateTime.Convert_Time ${DEFAULT_LOG_CHECK_TIMEOUT} result_format=number
270 BuiltIn.Wait_Until_Keyword_Succeeds ${log_check_timeout*2} ${DEFAULT_LOG_CHECK_PERIOD} BGPCliKeywords.Check_File_For_Word_Count ${BGP_PEER2_LOG_FILE} total_received_update_message_counter: 0 4
272 TC3_Disconnect_BGP_Peer2
273 [Documentation] Stop BGP peer & store logs
275 SSHLibrary.Switch Connection bgp_peer2_console
276 BGPCliKeywords.Stop_Console_Tool
277 BGPCliKeywords.Store_File_To_Workspace ${BGP_PEER2_LOG_FILE} tc3_${BGP_PEER2_LOG_FILE}
279 TC_3_Check_for_Empty_IPv4_Topology
280 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Does_Not_Contain ${CONFIG_SESSION} prefix
282 TC3_Delete_BGP_Peers_Configuration
283 [Documentation] Delete all previously configured BGP peers.
285 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer1 IP=${BGP_PEER1_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
286 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
287 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} NAME=example-bgp-peer2 IP=${BGP_PEER2_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
288 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
290 TC4_Configure_Two_iBGP_RR_Clients_With_Cluster_Id
291 [Documentation] Configure two iBGP peers as routing reflector clients with cluster-id argument.
293 CompareStream.Run_Keyword_If_Less_Than_Fluorine BuiltIn.Pass_Execution Test case valid for version fluorine and above.
294 &{mapping} BuiltIn.Create_Dictionary IP=${BGP_PEER1_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
296 TemplatedRequests.Put_As_Xml_Templated ${BGP_VARIABLES_FOLDER}${/}cluster_id/ibgp_peer mapping=${mapping} session=${CONFIG_SESSION}
297 &{mapping} BuiltIn.Create_Dictionary IP=${BGP_PEER2_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
299 TemplatedRequests.Put_As_Xml_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
301 TC4_Connect_BGP_Peers
302 [Documentation] Connect BGP peers, each set to send 3 prefixes.
304 CompareStream.Run_Keyword_If_Less_Than_Fluorine BuiltIn.Pass_Execution Test case valid for version fluorine and above.
305 SSHLibrary.Switch Connection bgp_peer1_console
306 BuiltIn.Set_Suite_Variable ${peer1_cluster_id} 127.0.0.4
307 BuiltIn.Set_Suite_Variable ${default_cluster_id} 192.0.2.2
308 BGPCliKeywords.Start_Console_Tool ${BGP_PEER1_COMMAND} --cluster=${peer1_cluster_id} ${BGP_PEER1_OPTIONS}
309 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Content ${CONFIG_SESSION} {"prefix":"${BGP_PEER1_FIRST_PREFIX_IP}/${PREFIX_LEN}"}
310 SSHLibrary.Switch Connection bgp_peer2_console
311 BGPCliKeywords.Start_Console_Tool ${BGP_PEER2_COMMAND} --cluster=${BGP_PEER2_IP} ${BGP_PEER2_OPTIONS}
312 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Content ${CONFIG_SESSION} {"prefix":"${BGP_PEER2_FIRST_PREFIX_IP}/${PREFIX_LEN}"}
314 TC4_BGP_Peer1_Check_Rib_Out_For_Introduced_Prefixes
315 [Documentation] Check incomming updates for new routes and respective cluster-ids
316 ... on first peer which should contain default-cluster id from global config reflected
317 ... from the second peer equal to router-id.
319 CompareStream.Run_Keyword_If_Less_Than_Fluorine BuiltIn.Pass_Execution Test case valid for version fluorine and above.
320 &{mapping} BuiltIn.Create_Dictionary IP=${BGP_PEER1_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} PEER_NUMBER=2 CLUSTER_ID=${BGP_PEER2_IP} DEFAULT_ID=${default_cluster_id}
321 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} TemplatedRequests.Get_As_Json_Templated ${BGP_VARIABLES_FOLDER}${/}cluster_id/peer_rib_out mapping=${mapping} session=${CONFIG_SESSION}
324 TC4_BGP_Peer2_Check_Rib_Out_For_Introduced_Prefixes
325 [Documentation] Check incomming updates for new routes and respective cluster-ids
326 ... in second peer which has local route-reflector-cluster-id
328 CompareStream.Run_Keyword_If_Less_Than_Fluorine BuiltIn.Pass_Execution Test case valid for version fluorine and above.
329 &{mapping} BuiltIn.Create_Dictionary IP=${BGP_PEER2_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} PEER_NUMBER=1 CLUSTER_ID=${BGP_PEER1_IP} DEFAULT_ID=${peer1_cluster_id}
330 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} TemplatedRequests.Get_As_Json_Templated ${BGP_VARIABLES_FOLDER}${/}cluster_id/peer_rib_out mapping=${mapping} session=${CONFIG_SESSION}
333 TC4_Disconnect_BGP_Peers
334 [Documentation] Stop BGP peer & store logs
336 CompareStream.Run_Keyword_If_Less_Than_Fluorine BuiltIn.Pass_Execution Test case valid for version fluorine and above.
337 SSHLibrary.Switch Connection bgp_peer1_console
338 BGPCliKeywords.Stop_Console_Tool
339 BGPCliKeywords.Store_File_To_Workspace ${BGP_PEER1_LOG_FILE} tc4_${BGP_PEER1_LOG_FILE}
340 SSHLibrary.Switch Connection bgp_peer2_console
341 BGPCliKeywords.Stop_Console_Tool
342 BGPCliKeywords.Store_File_To_Workspace ${BGP_PEER2_LOG_FILE} tc4_${BGP_PEER2_LOG_FILE}
344 TC4_Check_for_Empty_IPv4_Topology
345 [Documentation] Checks for empty topology after
346 CompareStream.Run_Keyword_If_Less_Than_Fluorine BuiltIn.Pass_Execution Test case valid for version fluorine and above.
347 BuiltIn.Wait_Until_Keyword_Succeeds ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT} ${DEFAULT_TOPOLOGY_CHECK_PERIOD} BgpOperations.Check_Example_IPv4_Topology_Does_Not_Contain ${CONFIG_SESSION} prefix
349 TC4_Delete_BGP_Peers_Configuration
350 [Documentation] Delete all previously configured BGP peers.
352 CompareStream.Run_Keyword_If_Less_Than_Fluorine BuiltIn.Pass_Execution Test case valid for version fluorine and above.
353 &{mapping} BuiltIn.Create_Dictionary IP=${BGP_PEER1_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
354 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER}${/}cluster_id/ibgp_peer mapping=${mapping} session=${CONFIG_SESSION}
355 &{mapping} BuiltIn.Create_Dictionary IP=${BGP_PEER2_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
356 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER}${/}ibgp_peers mapping=${mapping} session=${CONFIG_SESSION}
360 [Documentation] Initialize SetupUtils. SSH-login to mininet machine, create HTTP session,
361 ... prepare directories for responses, put Python tool to mininet machine, setup imported resources.
362 # TODO: Choose keywords used by more than one test suite to be placed in a common place.
363 SetupUtils.Setup_Utils_For_Setup_And_Teardown
364 SSHLibrary.Set_Default_Configuration prompt=${ODL_SYSTEM_PROMPT}
365 SSHLibrary.Open_Connection ${ODL_SYSTEM_IP} alias=bgp_peer1_console
366 SSHKeywords.Flexible_Controller_Login
367 SSHLibrary.Open_Connection ${ODL_SYSTEM_IP} alias=bgp_peer2_console
368 SSHKeywords.Flexible_Controller_Login
369 SSHKeywords.Require_Python
370 SSHKeywords.Assure_Library_Ipaddr target_dir=.
371 SSHLibrary.Put_File ${CURDIR}/../../../../tools/fastbgp/play.py
372 RequestsLibrary.Create_Session ${CONFIG_SESSION} http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH}
373 KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set ${ODL_LOG_LEVEL}
374 KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.bgpcep
375 KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.protocol