2 Documentation BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used.
4 ... Copyright (c) 2015-2017 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 ... This suite uses play.py as single iBGP peer which talks to
11 ... single controller in three node cluster configuration.
12 ... Test suite checks changes of the the example-ipv4-topology on all nodes.
13 ... RIB is not examined.
15 ... singlepeer_pc_shm_300kroutes_shards_local:
16 ... pc - prefix counting
17 ... shm - shard monitoring (during the process of prefix advertizing)
18 ... shards_local - default and topology shards are on the same node as rib owner
19 ... singleton instance
20 Suite Setup PrefixcountKeywords.Setup_Everything
21 Suite Teardown PrefixcountKeywords.Teardown_Everything
22 Test Setup SetupUtils.Setup_Test_With_Logging_And_Fast_Failing
23 Test Teardown SetupUtils.Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed
24 Library SSHLibrary timeout=10s
25 Library RequestsLibrary
26 Resource ${CURDIR}/../../../variables/Variables.robot
27 Resource ${CURDIR}/../../../libraries/BGPSpeaker.robot
28 Resource ${CURDIR}/../../../libraries/BGPcliKeywords.robot
29 Resource ${CURDIR}/../../../libraries/FailFast.robot
30 Resource ${CURDIR}/../../../libraries/KillPythonTool.robot
31 Resource ${CURDIR}/../../../libraries/PrefixCounting.robot
32 Resource ${CURDIR}/../../../libraries/SetupUtils.robot
33 Resource ${CURDIR}/../../../libraries/ClusterManagement.robot
34 Resource ${CURDIR}/../../../libraries/SSHKeywords.robot
35 Resource ${CURDIR}/../../../libraries/TemplatedRequests.robot
36 Resource ${CURDIR}/../../../libraries/CompareStream.robot
37 Resource ${CURDIR}/PrefixcountKeywords.robot
43 Get_Example_Bgp_Rib_Owner
44 [Documentation] Find an odl node which is able to accept incomming connection. It is a node, which is the owner of bgp rib, as it is a singleton service.
45 ... This node should be used for bgp peer to connect to.
46 ${rib_owner} ${rib_candidates}= ClusterManagement.Get_Owner_And_Successors_For_device example-bgp-rib org.opendaylight.mdsal.ServiceEntityType 1
47 BuiltIn.Set_Suite_Variable ${rib_owner} ${rib_owner}
48 BuiltIn.Set_Suite_Variable ${rib_candidates} ${rib_candidates}
49 BuiltIn.Set_Suite_Variable ${rib_owner_node_id} ${ODL_SYSTEM_${rib_owner}_IP}
50 ${session} = ClusterManagement.Resolve_Http_Session_For_Member ${rib_owner}
51 BuiltIn.Set_Suite_Variable ${config_session} ${session}
53 Move_Shard_Leaders_If_Needed
54 [Documentation] Set shard leaders to expected location
55 PrefixcountKeywords.Set_Shard_Leaders_Location_And_Verify ${rib_owner}
57 Check_For_Empty_Ipv4_Topology_Before_Talking_1
58 [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf.
60 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
61 BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${operational_1} topology=${EXAMPLE_IPV4_TOPOLOGY}
63 Check_For_Empty_Ipv4_Topology_Before_Talking_2
64 [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf.
66 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
67 BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${operational_2} topology=${EXAMPLE_IPV4_TOPOLOGY}
69 Check_For_Empty_Ipv4_Topology_Before_Talking_3
70 [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf.
72 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
73 BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${operational_3} topology=${EXAMPLE_IPV4_TOPOLOGY}
75 Reconfigure_ODL_To_Accept_Connection
76 [Documentation] Configure BGP peer module with initiate-connection set to false.
77 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
78 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} BGP_NAME=${BGP_PEER_NAME} IP=${TOOLS_SYSTEM_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT}
79 ... INITIATE=false BGP_RIB=${RIB_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
80 TemplatedRequests.Put_As_Json_Templated ${BGP_VARIABLES_FOLDER} mapping=${mapping} session=${config_session}
81 [Teardown] SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
83 Start_Talking_BGP_Speaker
84 [Documentation] Start Python speaker to connect to ODL.
85 PrefixcountKeywords.Start_Bgp_Peer_And_Verify_Connected connection_retries=${3}
87 Wait_For_Stable_Talking_Ipv4_Topology_1
88 [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 1.
89 PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${operational_1} topology=${EXAMPLE_IPV4_TOPOLOGY}
90 ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details}
92 Wait_For_Stable_Talking_Ipv4_Topology_2
93 [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 2.
94 PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${operational_2} topology=${EXAMPLE_IPV4_TOPOLOGY}
95 ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details}
97 Wait_For_Stable_Talking_Ipv4_Topology_3
98 [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 3.
99 PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${operational_3} topology=${EXAMPLE_IPV4_TOPOLOGY}
100 ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details}
102 Check_Talking_Ipv4_Topology_Count_1
103 [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 1.
105 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
106 PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${operational_1} topology=${EXAMPLE_IPV4_TOPOLOGY}
108 Check_Talking_Ipv4_Topology_Count_2
109 [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 2.
111 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
112 PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${operational_2} topology=${EXAMPLE_IPV4_TOPOLOGY}
114 Check_Talking_Ipv4_Topology_Count_3
115 [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 3.
117 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
118 PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${operational_3} topology=${EXAMPLE_IPV4_TOPOLOGY}
120 Kill_Talking_BGP_Speaker
121 [Documentation] Abort the Python speaker. Also, attempt to stop failing fast.
123 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
124 BGPSpeaker.Kill_BGP_Speaker
125 FailFast.Do_Not_Fail_Fast_From_Now_On
127 Wait_For_Stable_Ipv4_Topology_After_Listening_1
128 [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 1.
130 PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${operational_1} topology=${EXAMPLE_IPV4_TOPOLOGY}
131 ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details}
133 Wait_For_Stable_Ipv4_Topology_After_Listening_2
134 [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 2.
136 PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${operational_2} topology=${EXAMPLE_IPV4_TOPOLOGY}
137 ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details}
139 Wait_For_Stable_Ipv4_Topology_After_Listening_3
140 [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 3.
142 PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${operational_3} topology=${EXAMPLE_IPV4_TOPOLOGY}
143 ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details}
145 Check_For_Empty_Ipv4_Topology_After_Listening_1
146 [Documentation] Example-ipv4-topology should be empty now as seen from node 1.
148 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
149 PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${operational_1} topology=${EXAMPLE_IPV4_TOPOLOGY}
151 Check_For_Empty_Ipv4_Topology_After_Listening_2
152 [Documentation] Example-ipv4-topology should be empty now as seen from node 2.
154 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
155 PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${operational_2} topology=${EXAMPLE_IPV4_TOPOLOGY}
157 Check_For_Empty_Ipv4_Topology_After_Listening_3
158 [Documentation] Example-ipv4-topology should be empty now as seen from node 3.
160 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
161 PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${operational_3} topology=${EXAMPLE_IPV4_TOPOLOGY}
163 Delete_Bgp_Peer_Configuration
164 [Documentation] Revert the BGP configuration to the original state: without any configured peers.
165 [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
166 &{mapping} BuiltIn.Create_Dictionary DEVICE_NAME=${DEVICE_NAME} BGP_NAME=${BGP_PEER_NAME} IP=${TOOLS_SYSTEM_IP} HOLDTIME=${HOLDTIME} PEER_PORT=${BGP_TOOL_PORT}
167 ... INITIATE=false BGP_RIB=${RIB_INSTANCE} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG}
168 TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER} mapping=${mapping} session=${config_session}