From 5f64af6d5b5290ef5d92e97f6bde4d83e2915f1e Mon Sep 17 00:00:00 2001 From: Peter Gubka Date: Thu, 9 Feb 2017 14:09:25 +0100 Subject: [PATCH] Add suite for prefixcounting and shard monitoring Change-Id: I512eb830c0c9e7deeae62ec1748255ec276cbef2 Signed-off-by: Peter Gubka --- csit/libraries/PrefixCounting.robot | 18 +- csit/libraries/ShardStability.robot | 57 +++++++ .../bgpclustering/PrefixcountKeywords.robot | 9 + .../singlepeer_pc_shm_100kroutes.robot | 155 ++++++++++++++++++ .../singlepeer_pc_shm_1Mroutes.robot | 155 ++++++++++++++++++ .../singlepeer_pc_shm_1route.robot | 155 ++++++++++++++++++ csit/testplans/bgpcep-bgpclustering-boron.txt | 16 ++ csit/testplans/bgpcep-bgpclustering.txt | 11 +- 8 files changed, 565 insertions(+), 11 deletions(-) create mode 100644 csit/libraries/ShardStability.robot create mode 100644 csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_100kroutes.robot create mode 100644 csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1Mroutes.robot create mode 100644 csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1route.robot create mode 100644 csit/testplans/bgpcep-bgpclustering-boron.txt diff --git a/csit/libraries/PrefixCounting.robot b/csit/libraries/PrefixCounting.robot index 69c20ee3a0..f169a58219 100644 --- a/csit/libraries/PrefixCounting.robot +++ b/csit/libraries/PrefixCounting.robot @@ -15,6 +15,7 @@ Documentation Robot keyword library (Resource) for common BGP actions concer ... which points to (an analogue of) http://:${RESTCONFPORT}/${OPERATIONAL_API} ... or user has to provide a similar session. Library RequestsLibrary +Resource ${CURDIR}/ShardStability.robot Resource ${CURDIR}/WaitUtils.robot Resource ${CURDIR}/ScalarClosures.robot @@ -40,6 +41,16 @@ Get_Ipv4_Topology_Count ${prefix_count} = Builtin.Evaluate len(re.findall('"prefix":"', '''${topology}''')) modules=re [Return] ${prefix_count} +Get_Ipv4_Topology_Count_With_Shards_Check + [Arguments] ${shards_list} ${details_exp} ${session}=operational ${topology}=example-ipv4-topology + [Documentation] Get topology after the shards stability check passes. If not fail, return number of prefixes in the topology. + ${details_actual}= ShardStability.Shards_Stability_Get_Details ${shards_list} + ShardStability.Shards_Stability_Compare_Same ${details_actual} stateless_details=${details_exp} + ${topology} = Get_Ipv4_Topology session=${session} topology=${topology} + # Triple quotes are precaution against formatted output. + ${prefix_count} = Builtin.Evaluate len(re.findall('"prefix":"', '''${topology}''')) modules=re + [Return] ${prefix_count} + Check_Ipv4_Topology_Count [Arguments] ${expected_count} ${session}=operational ${topology}=example-ipv4-topology [Documentation] Check that the count of prefixes matches the expected count. Fails if it does not. In either case, collect garbage. @@ -55,9 +66,12 @@ Check_Ipv4_Topology_Is_Empty Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable [Arguments] ${timeout}=60s ${period}=5s ${repetitions}=1 ${excluded_count}=-1 ${session}=operational ${topology}=example-ipv4-topology - [Documentation] Each ${period} get prefix count. After ${repetitions} of stable different from ${excluded_count} within ${timeout}, Return validator output. Fail early on getter error. + ... ${shards_list}=${EMPTY} ${shards_details}=${EMPTY} + [Documentation] Each ${period} get prefix count. When called with shard list, the check is done before the count is get. After ${repetitions} of stable different from ${excluded_count} within ${timeout}, Return validator output. Fail early on getter error. # This is very similar to ChangeCounter keyword, but attempt to extract common code would increase overall code size. - ${getter} = ScalarClosures.Closure_From_Keyword_And_Arguments Get_Ipv4_Topology_Count session=${session} topology=${topology} + ${getter} = BuiltIn.Run_Keyword_If """${shards_list}"""=="""${EMPTY}""" ScalarClosures.Closure_From_Keyword_And_Arguments Get_Ipv4_Topology_Count session=${session} topology=${topology} + ... ELSE ScalarClosures.Closure_From_Keyword_And_Arguments Get_Ipv4_Topology_Count_With_Shards_Check ${shards_list} ${shards_details} session=${session} + ... topology=${topology} ${validator} = ScalarClosures.Closure_From_Keyword_And_Arguments WaitUtils.Excluding_Stability_Safe_Stateful_Validator_As_Keyword state_holder data_holder excluded_value=${excluded_count} ${result} = WaitUtils.Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success timeout=${timeout} period=${period} count=${repetitions} getter=${getter} safe_validator=${validator} ... initial_state=${excluded_count} diff --git a/csit/libraries/ShardStability.robot b/csit/libraries/ShardStability.robot new file mode 100644 index 0000000000..015c2c95e3 --- /dev/null +++ b/csit/libraries/ShardStability.robot @@ -0,0 +1,57 @@ +*** Settings *** +Documentation Robot library to monitor shard stability. +... +... Copyright (c) 2017 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 +... +... This is a "stateful" library to monitor shard leaders and candidates. During the initial phase +... all leaders and followeres are stored and then checked with new value on verify. +... TODO: investigate whether pure stateless library would be easier or harder to use. +... +... Requirements: ClusterManagement.ClusterManagement_Setup must be called before Shard_Stability_Init +... +... It is possible to use it for stateless comparison. +Library Collections +Library String +Resource ${CURDIR}/ClusterManagement.robot + +*** Variables *** +&{stored_details} + +*** Keywords *** +Shards_Stability_Init_Details + [Arguments] ${shard_list} ${member_index_list}=${EMPTY} + [Documentation] Initialize data for given shards. + ... ${shard_list} should be initialized as @{list} shard_name1:shard_type1 shard_name2:shard.. + ${shards_details} = Shards_Stability_Get_Details ${shard_list} member_index_list=${member_index_list} + BuiltIn.Set_Suite_Variable ${stored_details} ${shards_details} + +Shards_Stability_Get_Details + [Arguments] ${shard_list} ${member_index_list}=${EMPTY} + [Documentation] Return shard details stored in dictionary. + ... ${shard_list} should be initialized as @{list} shard_name1:shard_type1 shard_name2:shard.. + &{shards_details} BuiltIn.Create_Dictionary + : FOR ${shard_details} IN @{shard_list} + \ ${shard_name} ${shard_type} String.Split_String ${shard_details} separator=: + \ ${leader} ${followers} ClusterManagement.Get_Leader_And_Followers_For_Shard shard_name=${shard_name} shard_type=${shard_type} member_index_list=${member_index_list} + \ Collections.Sort_List ${followers} + \ Collections.Set_To_Dictionary ${shards_details} ${shard_name}_${shard_type}_leader=${leader} + \ Collections.Set_To_Dictionary ${shards_details} ${shard_name}_${shard_type}_followers=${followers} + BuiltIn.Return_From_Keyword ${shards_details} + +Shards_Stability_Verify + [Arguments] ${shard_list} ${member_index_list}=${EMPTY} + [Documentation] Verify that present details as the same as the stored one from Shards_Stability_Init_Details + ${present_details} = Shards_Stability_Get_Details ${shard_list} member_index_list=${member_index_list} + Shards_Stability_Compare_Same ${present_details} + +Shards_Stability_Compare_Same + [Arguments] ${details} ${stateless_details}=${EMPTY} + [Documentation] Compare two distionaries created by Shards_Stability_Get_Details + ${exp_details} = BuiltIn.Set_Variable_If "${stateless_details}" == "${EMPTY}" ${stored_details} ${stateless_details} + Collections.Log_Dictionary ${exp_details} + Collections.Log_Dictionary ${details} + Collections.Dictionaries_Should_Be_Equal ${exp_details} ${details} diff --git a/csit/suites/bgpcep/bgpclustering/PrefixcountKeywords.robot b/csit/suites/bgpcep/bgpclustering/PrefixcountKeywords.robot index 361ce474c5..688a3fe384 100644 --- a/csit/suites/bgpcep/bgpclustering/PrefixcountKeywords.robot +++ b/csit/suites/bgpcep/bgpclustering/PrefixcountKeywords.robot @@ -16,6 +16,7 @@ Resource ${CURDIR}/../../../libraries/KillPythonTool.robot Resource ${CURDIR}/../../../libraries/PrefixCounting.robot Resource ${CURDIR}/../../../libraries/SetupUtils.robot Resource ${CURDIR}/../../../libraries/ClusterManagement.robot +Resource ${CURDIR}/../../../libraries/ShardStability.robot Resource ${CURDIR}/../../../libraries/SSHKeywords.robot Resource ${CURDIR}/../../../libraries/TemplatedRequests.robot @@ -53,6 +54,7 @@ ${RIB_INSTANCE} example-bgp-rib ${PROTOCOL_OPENCONFIG} ${RIB_INSTANCE} ${BGP_PEER_NAME} example-bgp-peer ${PEER_CHECK_URL} /restconf/operational/bgp-rib:bgp-rib/rib/example-bgp-rib/peer/bgp:%2F%2F +@{SHARD_MONITOR_LIST} default:config default:operational topology:config topology:operational inventory:config inventory:operational *** Keywords *** Setup_Everything @@ -78,9 +80,12 @@ Setup_Everything Builtin.Set_Suite_Variable ${bgp_filling_timeout} ${timeout} Builtin.Set_Suite_Variable ${bgp_emptying_timeout} ${bgp_filling_timeout*3.0/4} KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set ${KARAF_LOG_LEVEL} + ${init_shard_details} = ShardStability.Shards_Stability_Get_Details ${SHARD_MONITOR_LIST} + BuiltIn.Set_Suite_Variable ${init_shard_details} Teardown_Everything [Documentation] Make sure Python tool was killed and tear down imported Resources. + # TODO: This keyword is not specific to prefix counting. Find a better place for it. # Environment issue may have dropped the SSH connection, but we do not want Teardown to fail. BuiltIn.Run_Keyword_And_Ignore_Error KillPythonTool.Search_And_Kill_Remote_Python 'play\.py' RequestsLibrary.Delete_All_Sessions @@ -89,18 +94,21 @@ Teardown_Everything Configure_Netconf_Device_And_Check_Mounted [Arguments] ${mapping} [Documentation] Configures netconf device + # TODO: This keyword is not specific to prefix counting. Find a better place for it. TemplatedRequests.Put_As_Xml_Templated ${NETCONF_DEV_FOLDER} mapping=${mapping} session=${CONFIG_SESSION} BuiltIn.Wait_Until_Keyword_Succeeds 10x 3s TemplatedRequests.Get_As_Xml_Templated ${NETCONF_MOUNT_FOLDER} mapping=${mapping} session=${CONFIG_SESSION} Start_Bgp_Peer [Arguments] ${peerip}=${rib_owner_node_id} [Documentation] Starts bgp peer and verifies that the peer runs. + # TODO: This keyword is not specific to prefix counting. Find a better place for it. BGPSpeaker.Start_BGP_Speaker --amount ${COUNT} --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${peerip} --peerport=${ODL_BGP_PORT} --insert=${INSERT} --withdraw=${WITHDRAW} --prefill ${PREFILL} --update ${UPDATE} --${BGP_TOOL_LOG_LEVEL} --results ${RESULTS_FILE_NAME} Start_Bgp_Peer_And_Verify_Connected [Arguments] ${connection_retries}=${1} ${peerip}=${rib_owner_node_id} [Documentation] Starts the peer and verifies its connection. The verification is done by checking the presence ... of the peer in the bgp rib. + # TODO: This keyword is not specific to prefix counting. Find a better place for it. : FOR ${idx} IN RANGE ${connection_retries} \ Start_Bgp_Peer peerip=${peerip} \ ${status} ${value}= BuiltIn.Run_Keyword_And_Ignore_Error BuiltIn.Wait_Until_Keyword_Succeeds 3x 3s @@ -112,6 +120,7 @@ Start_Bgp_Peer_And_Verify_Connected Verify_Bgp_Peer_Connection [Arguments] ${session} ${peer_ip} ${connected}=${True} [Documentation] Checks peer presence in operational datastore + # TODO: This keyword is not specific to prefix counting. Find a better place for it. ${exp_status_code}= BuiltIn.Set_Variable_If ${connected} ${200} ${404} ${rsp}= RequestsLibrary.Get Request ${session} ${PEER_CHECK_URL}${peer_ip} BuiltIn.Log ${rsp.content} diff --git a/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_100kroutes.robot b/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_100kroutes.robot new file mode 100644 index 0000000000..0d9e1f6930 --- /dev/null +++ b/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_100kroutes.robot @@ -0,0 +1,155 @@ +*** Settings *** +Documentation BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used. +... +... Copyright (c) 2015-2017 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 +... +... This suite uses play.py as single iBGP peer which talks to +... single controller in three node cluster configuration. +... Test suite checks changes of the the example-ipv4-topology on all nodes. +... RIB is not examined. +... +... singlepeer_pc_shm_100kroutes: +... pc - prefix counting +... shm - shard monitoring (during the process of prefix advertizing) +Suite Setup PrefixcountKeywords.Setup_Everything +Suite Teardown PrefixcountKeywords.Teardown_Everything +Test Setup SetupUtils.Setup_Test_With_Logging_And_Fast_Failing +Test Teardown SetupUtils.Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed +Library SSHLibrary timeout=10s +Library RequestsLibrary +Resource ${CURDIR}/../../../variables/Variables.robot +Resource ${CURDIR}/../../../libraries/BGPSpeaker.robot +Resource ${CURDIR}/../../../libraries/BGPcliKeywords.robot +Resource ${CURDIR}/../../../libraries/FailFast.robot +Resource ${CURDIR}/../../../libraries/KillPythonTool.robot +Resource ${CURDIR}/../../../libraries/PrefixCounting.robot +Resource ${CURDIR}/../../../libraries/SetupUtils.robot +Resource ${CURDIR}/../../../libraries/ClusterManagement.robot +Resource ${CURDIR}/../../../libraries/SSHKeywords.robot +Resource ${CURDIR}/../../../libraries/TemplatedRequests.robot +Resource ${CURDIR}/../../../libraries/CompareStream.robot +Resource ${CURDIR}/PrefixcountKeywords.robot + +*** Variables *** +${COUNT} 100000 + +*** Test Cases *** +Get Example Bgp Rib Owner + [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. + ... This node should be used for bgp peer to connect to. + ${rib_owner} ${rib_candidates}= ClusterManagement.Get_Owner_And_Successors_For_device example-bgp-rib org.opendaylight.mdsal.ServiceEntityType 1 + BuiltIn.Set_Suite_Variable ${rib_owner} ${rib_owner} + BuiltIn.Set_Suite_Variable ${rib_owner_node_id} ${ODL_SYSTEM_${rib_owner}_IP} + RequestsLibrary.Create_Session ${CONFIG_SESSION} http://${ODL_SYSTEM_${rib_owner}_IP}:${RESTCONFPORT} auth=${AUTH} + +Check_For_Empty_Ipv4_Topology_Before_Talking_1 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_Before_Talking_2 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_Before_Talking_3 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Reconfigure_ODL_To_Accept_Connection + [Documentation] Configure BGP peer module with initiate-connection set to false. + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + &{mapping} BuiltIn.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_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} + TemplatedRequests.Put_As_Json_Templated ${BGP_VARIABLES_FOLDER} 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. + PrefixcountKeywords.Start_Bgp_Peer_And_Verify_Connected connection_retries=${3} + +Wait_For_Stable_Talking_Ipv4_Topology_1 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 1. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details} + +Wait_For_Stable_Talking_Ipv4_Topology_2 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 2. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Talking_Ipv4_Topology_3 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 3. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_1 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 1. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_2 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 2. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_3 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 3. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Kill_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 + BGPSpeaker.Kill_BGP_Speaker + FailFast.Do_Not_Fail_Fast_From_Now_On + +Wait_For_Stable_Ipv4_Topology_After_Listening_1 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 1. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Ipv4_Topology_After_Listening_2 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 2. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Ipv4_Topology_After_Listening_3 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 3. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_1 + [Documentation] Example-ipv4-topology should be empty now as seen from node 1. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_2 + [Documentation] Example-ipv4-topology should be empty now as seen from node 2. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_3 + [Documentation] Example-ipv4-topology should be empty now as seen from node 3. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Delete_Bgp_Peer_Configuration + [Documentation] Revert the BGP configuration to the original state: without any configured peers. + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + &{mapping} BuiltIn.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_INSTANCE} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} + TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER} mapping=${mapping} session=${CONFIG_SESSION} diff --git a/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1Mroutes.robot b/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1Mroutes.robot new file mode 100644 index 0000000000..78edec23bc --- /dev/null +++ b/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1Mroutes.robot @@ -0,0 +1,155 @@ +*** Settings *** +Documentation BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used. +... +... Copyright (c) 2015-2017 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 +... +... This suite uses play.py as single iBGP peer which talks to +... single controller in three node cluster configuration. +... Test suite checks changes of the the example-ipv4-topology on all nodes. +... RIB is not examined. +... +... singlepeer_pc_shm_1Mroutes: +... pc - prefix counting +... shm - shard monitoring (during the process of prefix advertizing) +Suite Setup PrefixcountKeywords.Setup_Everything +Suite Teardown PrefixcountKeywords.Teardown_Everything +Test Setup SetupUtils.Setup_Test_With_Logging_And_Fast_Failing +Test Teardown SetupUtils.Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed +Library SSHLibrary timeout=10s +Library RequestsLibrary +Resource ${CURDIR}/../../../variables/Variables.robot +Resource ${CURDIR}/../../../libraries/BGPSpeaker.robot +Resource ${CURDIR}/../../../libraries/BGPcliKeywords.robot +Resource ${CURDIR}/../../../libraries/FailFast.robot +Resource ${CURDIR}/../../../libraries/KillPythonTool.robot +Resource ${CURDIR}/../../../libraries/PrefixCounting.robot +Resource ${CURDIR}/../../../libraries/SetupUtils.robot +Resource ${CURDIR}/../../../libraries/ClusterManagement.robot +Resource ${CURDIR}/../../../libraries/SSHKeywords.robot +Resource ${CURDIR}/../../../libraries/TemplatedRequests.robot +Resource ${CURDIR}/../../../libraries/CompareStream.robot +Resource ${CURDIR}/PrefixcountKeywords.robot + +*** Variables *** +${COUNT} 1000000 + +*** Test Cases *** +Get Example Bgp Rib Owner + [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. + ... This node should be used for bgp peer to connect to. + ${rib_owner} ${rib_candidates}= ClusterManagement.Get_Owner_And_Successors_For_device example-bgp-rib org.opendaylight.mdsal.ServiceEntityType 1 + BuiltIn.Set_Suite_Variable ${rib_owner} ${rib_owner} + BuiltIn.Set_Suite_Variable ${rib_owner_node_id} ${ODL_SYSTEM_${rib_owner}_IP} + RequestsLibrary.Create_Session ${CONFIG_SESSION} http://${ODL_SYSTEM_${rib_owner}_IP}:${RESTCONFPORT} auth=${AUTH} + +Check_For_Empty_Ipv4_Topology_Before_Talking_1 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_Before_Talking_2 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_Before_Talking_3 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Reconfigure_ODL_To_Accept_Connection + [Documentation] Configure BGP peer module with initiate-connection set to false. + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + &{mapping} BuiltIn.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_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} + TemplatedRequests.Put_As_Json_Templated ${BGP_VARIABLES_FOLDER} 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. + PrefixcountKeywords.Start_Bgp_Peer_And_Verify_Connected connection_retries=${3} + +Wait_For_Stable_Talking_Ipv4_Topology_1 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 1. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details} + +Wait_For_Stable_Talking_Ipv4_Topology_2 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 2. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Talking_Ipv4_Topology_3 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 3. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_1 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 1. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_2 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 2. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_3 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 3. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Kill_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 + BGPSpeaker.Kill_BGP_Speaker + FailFast.Do_Not_Fail_Fast_From_Now_On + +Wait_For_Stable_Ipv4_Topology_After_Listening_1 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 1. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Ipv4_Topology_After_Listening_2 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 2. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Ipv4_Topology_After_Listening_3 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 3. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_1 + [Documentation] Example-ipv4-topology should be empty now as seen from node 1. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_2 + [Documentation] Example-ipv4-topology should be empty now as seen from node 2. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_3 + [Documentation] Example-ipv4-topology should be empty now as seen from node 3. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Delete_Bgp_Peer_Configuration + [Documentation] Revert the BGP configuration to the original state: without any configured peers. + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + &{mapping} BuiltIn.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_INSTANCE} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} + TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER} mapping=${mapping} session=${CONFIG_SESSION} diff --git a/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1route.robot b/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1route.robot new file mode 100644 index 0000000000..06dea07e5f --- /dev/null +++ b/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1route.robot @@ -0,0 +1,155 @@ +*** Settings *** +Documentation BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used. +... +... Copyright (c) 2015-2017 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 +... +... This suite uses play.py as single iBGP peer which talks to +... single controller in three node cluster configuration. +... Test suite checks changes of the the example-ipv4-topology on all nodes. +... RIB is not examined. +... +... singlepeer_pc_shm_1route: +... pc - prefix counting +... shm - shard monitoring (during the process of prefix advertizing) +Suite Setup PrefixcountKeywords.Setup_Everything +Suite Teardown PrefixcountKeywords.Teardown_Everything +Test Setup SetupUtils.Setup_Test_With_Logging_And_Fast_Failing +Test Teardown SetupUtils.Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed +Library SSHLibrary timeout=10s +Library RequestsLibrary +Resource ${CURDIR}/../../../variables/Variables.robot +Resource ${CURDIR}/../../../libraries/BGPSpeaker.robot +Resource ${CURDIR}/../../../libraries/BGPcliKeywords.robot +Resource ${CURDIR}/../../../libraries/FailFast.robot +Resource ${CURDIR}/../../../libraries/KillPythonTool.robot +Resource ${CURDIR}/../../../libraries/PrefixCounting.robot +Resource ${CURDIR}/../../../libraries/SetupUtils.robot +Resource ${CURDIR}/../../../libraries/ClusterManagement.robot +Resource ${CURDIR}/../../../libraries/SSHKeywords.robot +Resource ${CURDIR}/../../../libraries/TemplatedRequests.robot +Resource ${CURDIR}/../../../libraries/CompareStream.robot +Resource ${CURDIR}/PrefixcountKeywords.robot + +*** Variables *** +${COUNT} 1 + +*** Test Cases *** +Get Example Bgp Rib Owner + [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. + ... This node should be used for bgp peer to connect to. + ${rib_owner} ${rib_candidates}= ClusterManagement.Get_Owner_And_Successors_For_device example-bgp-rib org.opendaylight.mdsal.ServiceEntityType 1 + BuiltIn.Set_Suite_Variable ${rib_owner} ${rib_owner} + BuiltIn.Set_Suite_Variable ${rib_owner_node_id} ${ODL_SYSTEM_${rib_owner}_IP} + RequestsLibrary.Create_Session ${CONFIG_SESSION} http://${ODL_SYSTEM_${rib_owner}_IP}:${RESTCONFPORT} auth=${AUTH} + +Check_For_Empty_Ipv4_Topology_Before_Talking_1 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_Before_Talking_2 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_Before_Talking_3 + [Documentation] Wait for ${EXAMPLE_IPV4_TOPOLOGY} to come up and empty. Give large timeout for case when BGP boots slower than restconf. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + BuiltIn.Wait_Until_Keyword_Succeeds ${INITIAL_RESTCONF_TIMEOUT} 1s PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Reconfigure_ODL_To_Accept_Connection + [Documentation] Configure BGP peer module with initiate-connection set to false. + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + &{mapping} BuiltIn.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_INSTANCE} PASSIVE_MODE=true BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} + TemplatedRequests.Put_As_Json_Templated ${BGP_VARIABLES_FOLDER} 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. + PrefixcountKeywords.Start_Bgp_Peer_And_Verify_Connected connection_retries=${3} + +Wait_For_Stable_Talking_Ipv4_Topology_1 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 1. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + ... shards_list=${SHARD_MONITOR_LIST} shards_details=${init_shard_details} + +Wait_For_Stable_Talking_Ipv4_Topology_2 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 2. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Talking_Ipv4_Topology_3 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable. This is done by checking stability of prefix count as seen from node 3. + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=0 session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_1 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 1. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_2 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 2. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_Talking_Ipv4_Topology_Count_3 + [Documentation] Count the routes in ${EXAMPLE_IPV4_TOPOLOGY} and fail if the count is not correct as seen from node 3. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT} session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Kill_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 + BGPSpeaker.Kill_BGP_Speaker + FailFast.Do_Not_Fail_Fast_From_Now_On + +Wait_For_Stable_Ipv4_Topology_After_Listening_1 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 1. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Ipv4_Topology_After_Listening_2 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 2. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Wait_For_Stable_Ipv4_Topology_After_Listening_3 + [Documentation] Wait until ${EXAMPLE_IPV4_TOPOLOGY} becomes stable again as seen from node 3. + [Tags] critical + PrefixCounting.Wait_For_Ipv4_Topology_Prefixes_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD} repetitions=${REPETITIONS} excluded_count=${COUNT} session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_1 + [Documentation] Example-ipv4-topology should be empty now as seen from node 1. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_1} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_2 + [Documentation] Example-ipv4-topology should be empty now as seen from node 2. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_2} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Check_For_Empty_Ipv4_Topology_After_Listening_3 + [Documentation] Example-ipv4-topology should be empty now as seen from node 3. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Is_Empty session=${CONFIGURATION_3} topology=${EXAMPLE_IPV4_TOPOLOGY} + +Delete_Bgp_Peer_Configuration + [Documentation] Revert the BGP configuration to the original state: without any configured peers. + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + &{mapping} BuiltIn.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_INSTANCE} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} + TemplatedRequests.Delete_Templated ${BGP_VARIABLES_FOLDER} mapping=${mapping} session=${CONFIG_SESSION} diff --git a/csit/testplans/bgpcep-bgpclustering-boron.txt b/csit/testplans/bgpcep-bgpclustering-boron.txt new file mode 100644 index 0000000000..080d62fb83 --- /dev/null +++ b/csit/testplans/bgpcep-bgpclustering-boron.txt @@ -0,0 +1,16 @@ +# Copyright (c) 2016 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 + +# Place the suites in run order: +integration/test/csit/suites/netconf/ready/netconfready.robot +integration/test/csit/suites/bgpcep/bgpclustering/010_singlepeer_prefixcount_1route.robot +integration/test/csit/suites/bgpcep/bgpclustering/020_singlepeer_prefixcount_100kroutes.robot +integration/test/csit/suites/bgpcep/bgpclustering/030_singlepeer_prefixcount_1Mroutes.robot +integration/test/csit/suites/bgpcep/bgpclustering/005_Cluster_Reset_And_Set_Nonreplicated_Bgp_Rib.robot +integration/test/csit/suites/netconf/ready/netconfready.robot +integration/test/csit/suites/bgpcep/bgpclustering/010_singlepeer_prefixcount_1route_nonreplicated_rib.robot +integration/test/csit/suites/bgpcep/bgpclustering/020_singlepeer_prefixcount_100kroutes_nonreplicated_rib.robot +integration/test/csit/suites/bgpcep/bgpclustering/030_singlepeer_prefixcount_1Mroutes_nonreplicated_rib.robot diff --git a/csit/testplans/bgpcep-bgpclustering.txt b/csit/testplans/bgpcep-bgpclustering.txt index 080d62fb83..c37ea04a39 100644 --- a/csit/testplans/bgpcep-bgpclustering.txt +++ b/csit/testplans/bgpcep-bgpclustering.txt @@ -5,12 +5,5 @@ # and is available at http://www.eclipse.org/legal/epl-v10.html # Place the suites in run order: -integration/test/csit/suites/netconf/ready/netconfready.robot -integration/test/csit/suites/bgpcep/bgpclustering/010_singlepeer_prefixcount_1route.robot -integration/test/csit/suites/bgpcep/bgpclustering/020_singlepeer_prefixcount_100kroutes.robot -integration/test/csit/suites/bgpcep/bgpclustering/030_singlepeer_prefixcount_1Mroutes.robot -integration/test/csit/suites/bgpcep/bgpclustering/005_Cluster_Reset_And_Set_Nonreplicated_Bgp_Rib.robot -integration/test/csit/suites/netconf/ready/netconfready.robot -integration/test/csit/suites/bgpcep/bgpclustering/010_singlepeer_prefixcount_1route_nonreplicated_rib.robot -integration/test/csit/suites/bgpcep/bgpclustering/020_singlepeer_prefixcount_100kroutes_nonreplicated_rib.robot -integration/test/csit/suites/bgpcep/bgpclustering/030_singlepeer_prefixcount_1Mroutes_nonreplicated_rib.robot +integration/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_true.robot +integration/test/csit/suites/bgpcep/bgpclustering/singlepeer_pc_shm_1Mroutes.robot -- 2.36.6