Migrate Get Requests invocations(libraries)
[integration/test.git] / csit / suites / bgpcep / bgpuser / ebgp_peers_basic.robot
1 *** Settings ***
2 Documentation       Basic tests for eBGP application peers.
3 ...
4 ...                 Copyright (c) 2015-2016 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 eBGP functional tests:
11 ...                 Two eBGP peers advertise the same group of prefixes (aka BGP HA)
12 ...                 https://wiki.opendaylight.org/view/BGP_LS_PCEP:BGP
13 ...                 Reported bugs:
14 ...                 Bug 4834 - ODL controller announces the same route twice (two eBGP scenario aka HA)
15 ...                 Bug 4835 - Routes not withdrawn when eBGP peers are disconnected (the same prefixes announced)
16 ...
17 ...                 For versions Fluorine and above, there are test cases:
18 ...                 TC_LAS (test case local AS)
19 ...                 - configuration of ebgp with local-as and ibgp without local-as
20 ...                 - connect bgp speakers (play.py) to both peers and check their connection
21 ...                 - check adj-rib-out on both peers, expecting local-as in as-sequence on both peers.
22 ...
23 ...                 TODO: Extend testsuite by tests dedicated to path selection algorithm
24 ...                 TODO: Choose keywords used by more than one test suite to be placed in a common place.
25
26 Library             Collections
27 Library             OperatingSystem
28 Library             RequestsLibrary
29 Resource            ../../../libraries/BGPcliKeywords.robot
30 Resource            ../../../libraries/BgpOperations.robot
31 Resource            ../../../libraries/BGPSpeaker.robot
32 Resource            ../../../libraries/FailFast.robot
33 Resource            ../../../libraries/SetupUtils.robot
34 Resource            ../../../libraries/SSHKeywords.robot
35 Resource            ../../../libraries/TemplatedRequests.robot
36 Resource            ../../../variables/Variables.robot
37
38 Suite Setup         Setup_Everything
39 Suite Teardown      BgpOperations.Teardown_Everything
40 Test Setup          SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
41 Test Teardown       FailFast.Start_Failing_Fast_If_This_Failed
42
43
44 *** Variables ***
45 ${BGP_VARIABLES_FOLDER}                 ${CURDIR}/../../../variables/bgpuser/
46 ${BGP_PEER_LOG_LEVEL}                   debug
47 ${CONFIG_SESSION}                       config-session
48 ${HOLDTIME}                             180
49 ${ODL_LOG_LEVEL}                        INFO
50 ${ODL_BGP_LOG_LEVEL}                    DEFAULT
51 ${iBGP_PEER1_IP}                        127.0.0.1
52 ${eBGP_PEER1_IP}                        127.0.0.3
53 ${eBGP_PEER2_IP}                        127.0.0.4
54 ${iBGP_PEER1_FIRST_PREFIX_IP}           8.1.0.0
55 ${eBGP_PEERS_FIRST_PREFIX_IP}           8.0.0.0
56 ${eBGP_PEER1_FIRST_PREFIX_IP}           ${eBGP_PEERS_FIRST_PREFIX_IP}
57 ${eBGP_PEER2_FIRST_PREFIX_IP}           ${eBGP_PEERS_FIRST_PREFIX_IP}
58 ${eBGP_PEER1_NEXT_HOP}                  1.1.1.1
59 ${eBGP_PEER2_NEXT_HOP}                  2.2.2.2
60 ${PREFIX_LEN}                           28
61 ${iBGP_PEER1_PREFIX_LEN}                ${PREFIX_LEN}
62 ${eBGP_PEER1_PREFIX_LEN}                ${PREFIX_LEN}
63 ${eBGP_PEER2_PREFIX_LEN}                ${PREFIX_LEN}
64 ${PREFIX_COUNT}                         2
65 ${iBGP_PEER1_PREFIX_COUNT}              0
66 ${eBGP_PEER1_PREFIX_COUNT}              ${PREFIX_COUNT}
67 ${eBGP_PEER2_PREFIX_COUNT}              ${PREFIX_COUNT}
68 ${eBGP_PEERS_AS}                        32768
69 ${eBGP_PEER1_AS}                        ${eBGP_PEERS_AS}
70 ${eBGP_PEER2_AS}                        ${eBGP_PEERS_AS}
71 ${iBGP_PEER1_LOG_FILE}                  bgp_peer1.log
72 ${eBGP_PEER1_LOG_FILE}                  ebgp_peer1.log
73 ${eBGP_PEER2_LOG_FILE}                  ebgp_peer2.log
74 ${iBGP_PEER1_COMMAND}
75 ...                                     python3 play.py --firstprefix ${iBGP_PEER1_FIRST_PREFIX_IP} --prefixlen ${iBGP_PEER1_PREFIX_LEN} --amount ${iBGP_PEER1_PREFIX_COUNT} --myip=${iBGP_PEER1_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --${BGP_PEER_LOG_LEVEL} --logfile ${iBGP_PEER1_LOG_FILE}
76 ${eBGP_PEER1_COMMAND}
77 ...                                     python3 play.py --firstprefix ${eBGP_PEER1_FIRST_PREFIX_IP} --prefixlen ${eBGP_PEER1_PREFIX_LEN} --amount ${eBGP_PEER1_PREFIX_COUNT} --myip=${eBGP_PEER1_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --nexthop ${eBGP_PEER1_NEXT_HOP} --asnumber ${eBGP_PEER1_AS} --${BGP_PEER_LOG_LEVEL} --logfile ${eBGP_PEER1_LOG_FILE}
78 ${eBGP_PEER2_COMMAND}
79 ...                                     python3 play.py --firstprefix ${eBGP_PEER2_FIRST_PREFIX_IP} --prefixlen ${eBGP_PEER2_PREFIX_LEN} --amount ${eBGP_PEER2_PREFIX_COUNT} --myip=${eBGP_PEER2_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --nexthop ${eBGP_PEER2_NEXT_HOP} --asnumber ${eBGP_PEER2_AS} --${BGP_PEER_LOG_LEVEL} --logfile ${eBGP_PEER2_LOG_FILE}
80 ${iBGP_PEER1_OPTIONS}                   &>${iBGP_PEER1_LOG_FILE}
81 ${eBGP_PEER1_OPTIONS}                   &>${eBGP_PEER1_LOG_FILE}
82 ${eBGP_PEER2_OPTIONS}                   &>${eBGP_PEER2_LOG_FILE}
83 ${DEFAULT_LOG_CHECK_TIMEOUT}            20s
84 ${DEFAULT_LOG_CHECK_PERIOD}             1s
85 ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT}       10s
86 ${DEFAULT_TOPOLOGY_CHECK_PERIOD}        1s
87 ${RIB_INSTANCE}                         example-bgp-rib
88 ${PROTOCOL_OPENCONFIG}                  ${RIB_INSTANCE}
89 ${DEVICE_NAME}                          controller-config
90 ${DEFAULT_AS}                           64496
91 ${LOCAL_AS}                             65432
92 ${eBGP_AS}                              64497
93
94
95 *** Test Cases ***
96 Configure_BGP_Peers
97     [Documentation]    Configure an iBGP and two eBGP peers
98     [Tags]    critical
99     &{mapping}    BuiltIn.Create_Dictionary
100     ...    DEVICE_NAME=${DEVICE_NAME}
101     ...    NAME=example-ibgp-peer1
102     ...    IP=${iBGP_PEER1_IP}
103     ...    HOLDTIME=${HOLDTIME}
104     ...    PEER_PORT=${BGP_TOOL_PORT}
105     ...    PEER_ROLE=ibgp
106     ...    INITIATE=false
107     ...    BGP_RIB=${RIB_INSTANCE}
108     ...    PASSIVE_MODE=true
109     ...    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
110     ...    RIB_INSTANCE_NAME=${RIB_INSTANCE}
111     ...    RR_CLIENT=false
112     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}ibgp_peers    mapping=${mapping}
113     &{mapping}    BuiltIn.Create_Dictionary
114     ...    DEVICE_NAME=${DEVICE_NAME}
115     ...    NAME=example-ebgp-peer1
116     ...    IP=${eBGP_PEER1_IP}
117     ...    HOLDTIME=${HOLDTIME}
118     ...    PEER_PORT=${BGP_TOOL_PORT}
119     ...    PEER_ROLE=ebgp
120     ...    INITIATE=false
121     ...    BGP_RIB=${RIB_INSTANCE}
122     ...    PASSIVE_MODE=true
123     ...    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
124     ...    RIB_INSTANCE_NAME=${RIB_INSTANCE}
125     ...    RR_CLIENT=false
126     ...    AS_NUMBER=${eBGP_PEER1_AS}
127     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}ebgp_peers    mapping=${mapping}
128     &{mapping}    BuiltIn.Create_Dictionary
129     ...    DEVICE_NAME=${DEVICE_NAME}
130     ...    NAME=example-ebgp-peer2
131     ...    IP=${eBGP_PEER2_IP}
132     ...    HOLDTIME=${HOLDTIME}
133     ...    PEER_PORT=${BGP_TOOL_PORT}
134     ...    PEER_ROLE=ebgp
135     ...    INITIATE=false
136     ...    BGP_RIB=${RIB_INSTANCE}
137     ...    PASSIVE_MODE=true
138     ...    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
139     ...    RIB_INSTANCE_NAME=${RIB_INSTANCE}
140     ...    RR_CLIENT=false
141     ...    AS_NUMBER=${eBGP_PEER2_AS}
142     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}ebgp_peers    mapping=${mapping}
143
144 Connect_iBGP_Peer1
145     [Documentation]    Connect BGP peer
146     [Tags]    critical
147     SSHLibrary.Switch Connection    ibgp_peer1_console
148     BGPcliKeywords.Start_Console_Tool    ${iBGP_PEER1_COMMAND}    ${iBGP_PEER1_OPTIONS}
149     BGPcliKeywords.Read_And_Fail_If_Prompt_Is_Seen
150     BgpOperations.Check_Example_IPv4_Topology_Does_Not_Contain    ${CONFIG_SESSION}    prefix
151
152 Connect_eBGP_Peer1
153     [Documentation]    Connect BGP peer
154     [Tags]    critical
155     SSHLibrary.Switch Connection    ebgp_peer1_console
156     BGPcliKeywords.Start_Console_Tool    ${eBGP_PEER1_COMMAND}    ${eBGP_PEER1_OPTIONS}
157     BGPcliKeywords.Read_And_Fail_If_Prompt_Is_Seen
158
159 Check_IPv4_Topology_For_First_Path
160     [Documentation]    The IPv4 topology shall contain the route announced by the first eBGP
161     BuiltIn.Wait_Until_Keyword_Succeeds
162     ...    ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT}
163     ...    ${DEFAULT_TOPOLOGY_CHECK_PERIOD}
164     ...    BgpOperations.Check_Example_IPv4_Topology_Content
165     ...    ${CONFIG_SESSION}
166     ...    "node-id":"${eBGP_PEER1_NEXT_HOP}"
167     BgpOperations.Check_Example_IPv4_Topology_Content
168     ...    ${CONFIG_SESSION}
169     ...    "prefix":"${eBGP_PEER1_FIRST_PREFIX_IP}/${PREFIX_LEN}"
170
171 iBGP_Check_Log_For_Introduced_Prefixes
172     [Documentation]    Check incomming updates for introduced routes
173     [Tags]    critical
174     SSHLibrary.Switch Connection    ibgp_peer1_console
175     ${total_prefix_count}    BuiltIn.Evaluate    ${eBGP_PEER1_PREFIX_COUNT}
176     BuiltIn.Wait_Until_Keyword_Succeeds
177     ...    ${DEFAULT_LOG_CHECK_TIMEOUT}
178     ...    ${DEFAULT_LOG_CHECK_PERIOD}
179     ...    Check_File_For_Word_Count
180     ...    ${iBGP_PEER1_LOG_FILE}
181     ...    nlri_prefix_received:
182     ...    ${total_prefix_count}
183     ${count}    Count_Key_Value_Pairs
184     ...    ${iBGP_PEER1_LOG_FILE}
185     ...    Network Address of Next Hop
186     ...    ${eBGP_PEER1_NEXT_HOP}
187     BuiltIn.Should_Be_Equal_As_Integers    ${count}    ${eBGP_PEER1_PREFIX_COUNT}
188     ${count}    Count_Key_Value_Pairs
189     ...    ${iBGP_PEER1_LOG_FILE}
190     ...    Network Address of Next Hop
191     ...    ${eBGP_PEER2_NEXT_HOP}
192     BuiltIn.Should_Be_Equal_As_Integers    ${count}    0
193
194 Connect_eBGP_Peer2
195     [Documentation]    Connect BGP peer and check empty topology
196     [Tags]    critical
197     SSHLibrary.Switch Connection    ebgp_peer2_console
198     BGPcliKeywords.Start_Console_Tool    ${eBGP_PEER2_COMMAND}    ${eBGP_PEER2_OPTIONS}
199     BGPcliKeywords.Read_And_Fail_If_Prompt_Is_Seen
200
201 Disconnect_eBGP_Peer1
202     [Documentation]    Stop BGP peer, log topology and store logs
203     [Tags]    critical
204     SSHLibrary.Switch Connection    ebgp_peer1_console
205     Stop_Console_Tool
206     Store_File_To_Workspace    ${eBGP_PEER1_LOG_FILE}    ${eBGP_PEER1_LOG_FILE}
207
208 Check_IPv4_Topology_For_Second_Path
209     [Documentation]    The IPv4 topology shall contain the route announced by the second eBGP now
210     BuiltIn.Wait_Until_Keyword_Succeeds
211     ...    ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT}
212     ...    ${DEFAULT_TOPOLOGY_CHECK_PERIOD}
213     ...    BgpOperations.Check_Example_IPv4_Topology_Content
214     ...    ${CONFIG_SESSION}
215     ...    "node-id":"${eBGP_PEER2_NEXT_HOP}"
216     BgpOperations.Check_Example_IPv4_Topology_Content
217     ...    ${CONFIG_SESSION}
218     ...    "prefix":"${eBGP_PEER2_FIRST_PREFIX_IP}/${PREFIX_LEN}"
219
220 iBGP_Check_Log_For_Updated_Prefixes
221     [Documentation]    Check incomming updates for updated routes
222     [Tags]    critical
223     SSHLibrary.Switch Connection    ibgp_peer1_console
224     ${total_prefix_count}    BuiltIn.Evaluate    ${eBGP_PEER1_PREFIX_COUNT} + ${eBGP_PEER2_PREFIX_COUNT}
225     BuiltIn.Wait_Until_Keyword_Succeeds
226     ...    ${DEFAULT_LOG_CHECK_TIMEOUT}
227     ...    ${DEFAULT_LOG_CHECK_PERIOD}
228     ...    Check_File_For_Word_Count
229     ...    ${iBGP_PEER1_LOG_FILE}
230     ...    nlri_prefix_received:
231     ...    ${total_prefix_count}
232     ${count}    Count_Key_Value_Pairs
233     ...    ${iBGP_PEER1_LOG_FILE}
234     ...    Network Address of Next Hop
235     ...    ${eBGP_PEER1_NEXT_HOP}
236     BuiltIn.Should_Be_Equal_As_Integers    ${count}    ${eBGP_PEER1_PREFIX_COUNT}
237     ${count}    Count_Key_Value_Pairs
238     ...    ${iBGP_PEER1_LOG_FILE}
239     ...    Network Address of Next Hop
240     ...    ${eBGP_PEER2_NEXT_HOP}
241     BuiltIn.Should_Be_Equal_As_Integers    ${count}    ${eBGP_PEER2_PREFIX_COUNT}
242     [Teardown]    Report_Failure_Due_To_Bug    4834
243
244 Disconnect_eBGP_Peer2
245     [Documentation]    Stop BGP peer, store logs and wait for empty topology
246     [Tags]    critical
247     SSHLibrary.Switch Connection    ebgp_peer2_console
248     Stop_Console_Tool
249     Store_File_To_Workspace    ${eBGP_PEER2_LOG_FILE}    ${eBGP_PEER2_LOG_FILE}
250
251 Check_For_Empty_IPv4_Topology
252     [Documentation]    The IPv4 topology shall be empty
253     BuiltIn.Wait_Until_Keyword_Succeeds
254     ...    ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT}
255     ...    ${DEFAULT_TOPOLOGY_CHECK_PERIOD}
256     ...    BgpOperations.Check_Example_IPv4_Topology_Does_Not_Contain
257     ...    ${CONFIG_SESSION}
258     ...    prefix
259     [Teardown]    Report_Failure_Due_To_Bug    4835
260
261 iBGP_Check_Log_For_Withdrawn_Prefixes
262     [Documentation]    Check incomming updates for withdrawn routes
263     [Tags]    critical
264     SSHLibrary.Switch Connection    ibgp_peer1_console
265     ${prefixes_to_be_removed}    BuiltIn.Evaluate    max(${eBGP_PEER1_PREFIX_COUNT}, ${eBGP_PEER2_PREFIX_COUNT})
266     BuiltIn.Wait_Until_Keyword_Succeeds
267     ...    ${DEFAULT_LOG_CHECK_TIMEOUT}
268     ...    ${DEFAULT_LOG_CHECK_PERIOD}
269     ...    Check_File_For_Word_Count
270     ...    ${iBGP_PEER1_LOG_FILE}
271     ...    withdrawn_prefix_received:
272     ...    ${prefixes_to_be_removed}
273     [Teardown]    Report_Failure_Due_To_Bug    4835
274
275 Disconnect_iBGP_Peer1
276     [Documentation]    Stop BGP peer, log topology and store logs
277     [Tags]    critical
278     SSHLibrary.Switch Connection    ibgp_peer1_console
279     Stop_Console_Tool
280     Store_File_To_Workspace    ${iBGP_PEER1_LOG_FILE}    ${iBGP_PEER1_LOG_FILE}
281
282 Delete_BGP_Peers_Configuration
283     [Documentation]    Delete all previously configured BGP peers.
284     [Tags]    critical
285     &{mapping}    BuiltIn.Create_Dictionary
286     ...    DEVICE_NAME=${DEVICE_NAME}
287     ...    NAME=example-ibgp-peer1
288     ...    IP=${iBGP_PEER1_IP}
289     ...    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
290     TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}ibgp_peers    mapping=${mapping}
291     Collections.Set To Dictionary    ${mapping}    NAME=example-ebgp-peer1    IP=${eBGP_PEER1_IP}
292     TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}ebgp_peers    mapping=${mapping}
293     Collections.Set To Dictionary    ${mapping}    NAME=example-ebgp-peer2    IP=${eBGP_PEER2_IP}
294     TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}ebgp_peers    mapping=${mapping}
295
296 TC_LAS_Reconfigure_Odl_To_Accept_Connection
297     [Documentation]    Configure neighbors. One ibgp and one ebgp neighbor with local-as configured.
298     &{mapping}    Create Dictionary
299     ...    IP=${iBGP_PEER1_IP}
300     ...    HOLDTIME=${HOLDTIME}
301     ...    PEER_PORT=${BGP_TOOL_PORT}
302     ...    PASSIVE_MODE=true
303     ...    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
304     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}
305     &{mapping}    Create Dictionary
306     ...    IP=${eBGP_PEER1_IP}
307     ...    HOLDTIME=${HOLDTIME}
308     ...    PEER_PORT=${BGP_TOOL_PORT}
309     ...    PASSIVE_MODE=true
310     ...    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
311     ...    AS_NUMBER=${LOCAL_AS}
312     ...    PEER_AS=${eBGP_AS}
313     TemplatedRequests.Put_As_Xml_Templated    ${BGP_VARIABLES_FOLDER}${/}local_as/ebgp_peer    mapping=${mapping}
314     [Teardown]    SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
315
316 TC_LAS_Start_iBgp_Speaker_And_Verify_Connected
317     [Documentation]    Verify that peer is present in odl's rib. Peer is configured with local-as.
318     [Tags]    critical
319     SSHLibrary.Switch Connection    ibgp_peer1_console
320     ${speaker_args}    BuiltIn.Set_Variable
321     ...    --firstprefix ${iBGP_PEER1_FIRST_PREFIX_IP} --prefixlen ${PREFIX_LEN} --amount 1 --myip=${iBGP_PEER1_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --debug
322     ${output}    BGPSpeaker.Start_BGP_Speaker_And_Verify_Connected
323     ...    ${speaker_args}
324     ...    session=default
325     ...    speaker_ip=${iBGP_PEER1_IP}
326     BuiltIn.Log    ${output}
327
328 TC_LAS_Start_eBgp_Speaker_And_Verify_Connected
329     [Documentation]    Verify that peer is present in odl's rib. Peer is configured with local-as.
330     [Tags]    critical
331     SSHLibrary.Switch Connection    ebgp_peer1_console
332     ${speaker_args}    BuiltIn.Set_Variable
333     ...    --firstprefix ${eBGP_PEER1_FIRST_PREFIX_IP} --prefixlen ${PREFIX_LEN} --amount 1 --asnumber=${eBGP_AS} --myip=${eBGP_PEER1_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --debug
334     ${output}    BGPSpeaker.Start_BGP_Speaker_And_Verify_Connected
335     ...    ${speaker_args}
336     ...    session=default
337     ...    speaker_ip=${eBGP_PEER1_IP}
338     BuiltIn.Log    ${output}
339
340 TC_LAS_Verify_iBGP_Rib_Out
341     [Documentation]    Verifies iBGP's adj-rib-out output. Expects local-as, and ebgp peer-as presence.
342     [Tags]    critical
343     &{mapping}    Create Dictionary
344     ...    IP=${iBGP_PEER1_IP}
345     ...    HOLDTIME=${HOLDTIME}
346     ...    PEER_PORT=${BGP_TOOL_PORT}
347     ...    PASSIVE_MODE=true
348     ...    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
349     ...    AS_NUMBER=${LOCAL_AS}
350     ...    PEER_AS=${eBGP_AS}
351     ...    PREFIXLEN=${eBGP_PEER1_FIRST_PREFIX_IP}/${PREFIX_LEN}
352     BuiltIn.Wait_Until_Keyword_Succeeds
353     ...    ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT}
354     ...    ${DEFAULT_TOPOLOGY_CHECK_PERIOD}
355     ...    TemplatedRequests.Get_As_Json_Templated
356     ...    ${BGP_VARIABLES_FOLDER}${/}local_as/adj_rib_out
357     ...    mapping=${mapping}
358     ...    verify=True
359
360 TC_LAS_Verify_eBGP_Rib_Out
361     [Documentation]    Verifies eBGP's adj-rib-out output. Expects local-as, and ibgp peer-as presence.
362     [Tags]    critical
363     &{mapping}    Create Dictionary
364     ...    IP=${eBGP_PEER1_IP}
365     ...    HOLDTIME=${HOLDTIME}
366     ...    PEER_PORT=${BGP_TOOL_PORT}
367     ...    PASSIVE_MODE=true
368     ...    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
369     ...    AS_NUMBER=${LOCAL_AS}
370     ...    PEER_AS=${DEFAULT_AS}
371     ...    PREFIXLEN=${iBGP_PEER1_FIRST_PREFIX_IP}/${PREFIX_LEN}
372     BuiltIn.Wait_Until_Keyword_Succeeds
373     ...    ${DEFAULT_TOPOLOGY_CHECK_TIMEOUT}
374     ...    ${DEFAULT_TOPOLOGY_CHECK_PERIOD}
375     ...    TemplatedRequests.Get_As_Json_Templated
376     ...    ${BGP_VARIABLES_FOLDER}${/}local_as/adj_rib_out
377     ...    mapping=${mapping}
378     ...    verify=True
379
380 TC_LAS_Kill_iBgp_Speaker_After_Talking
381     [Documentation]    Abort the Python speaker. Also, attempt to stop failing fast.
382     [Tags]    critical
383     [Setup]    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
384     SSHLibrary.Switch Connection    ibgp_peer1_console
385     BGPSpeaker.Kill_BGP_Speaker
386     FailFast.Do_Not_Fail_Fast_From_Now_On
387     # NOTE: It is still possible to remain failing fast, if both previous and this test have failed.
388     [Teardown]    FailFast.Do_Not_Start_Failing_If_This_Failed
389
390 TC_LAS_Kill_eBgp_Speaker_After_Talking
391     [Documentation]    Abort the Python speaker. Also, attempt to stop failing fast.
392     [Tags]    critical
393     [Setup]    SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
394     SSHLibrary.Switch Connection    ebgp_peer1_console
395     BGPSpeaker.Kill_BGP_Speaker
396     FailFast.Do_Not_Fail_Fast_From_Now_On
397     # NOTE: It is still possible to remain failing fast, if both previous and this test have failed.
398     [Teardown]    FailFast.Do_Not_Start_Failing_If_This_Failed
399
400 TC_LAS_Delete_Bgp_Peer_Configurations
401     [Documentation]    Delete peer configuration.
402     &{mapping}    Create Dictionary    IP=${iBGP_PEER1_IP}    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
403     TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}bgp_peer    mapping=${mapping}
404     &{mapping}    Create Dictionary    IP=${eBGP_PEER1_IP}    BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
405     TemplatedRequests.Delete_Templated    ${BGP_VARIABLES_FOLDER}${/}local_as/ebgp_peer    mapping=${mapping}
406     [Teardown]    SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
407
408
409 *** Keywords ***
410 Setup_Everything
411     [Documentation]    Initialize SetupUtils. SSH-login to mininet machine, create HTTP session,
412     ...    prepare directories for responses, put Python tool to mininet machine, setup imported resources.
413     SetupUtils.Setup_Utils_For_Setup_And_Teardown
414     SSHLibrary.Set_Default_Configuration    prompt=${ODL_SYSTEM_PROMPT}
415     SSHLibrary.Open_Connection    ${ODL_SYSTEM_IP}    alias=ibgp_peer1_console
416     SSHKeywords.Flexible_Controller_Login
417     SSHLibrary.Open_Connection    ${ODL_SYSTEM_IP}    alias=ebgp_peer1_console
418     SSHKeywords.Flexible_Controller_Login
419     SSHLibrary.Open_Connection    ${ODL_SYSTEM_IP}    alias=ebgp_peer2_console
420     SSHKeywords.Flexible_Controller_Login
421     SSHKeywords.Require_Python
422     SSHKeywords.Assure_Library_Ipaddr    target_dir=.
423     SSHLibrary.Put_File    ${CURDIR}/../../../../tools/fastbgp/play.py
424     RequestsLibrary.Create_Session    ${CONFIG_SESSION}    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}
425     TemplatedRequests.Create_Default_Session
426     KarafKeywords.Execute_Controller_Karaf_Command_On_Background    log:set ${ODL_LOG_LEVEL}
427     KarafKeywords.Execute_Controller_Karaf_Command_On_Background
428     ...    log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.bgpcep
429     KarafKeywords.Execute_Controller_Karaf_Command_On_Background
430     ...    log:set ${ODL_BGP_LOG_LEVEL} org.opendaylight.protocol
431
432 Store_File_To_Workspace
433     [Documentation]    Store the ${source_file_name} to the workspace as ${target_file_name}.
434     [Arguments]    ${source_file_name}    ${target_file_name}
435     ${output_log}    SSHLibrary.Execute_Command    cat ${source_file_name}
436     BuiltIn.Log    ${output_log}
437     Create File    ${target_file_name}    ${output_log}