X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fbgpcep%2Fbgpingest%2Fsinglepeer_changecount.robot;h=1adea99aa3d7dd29b993a11145b62e6ce87a8337;hb=4ce4117d71e27d843996a8fa5fb5570f93f5a322;hp=8b03606609608ed8d4f4dcc7f03bc00e8c48a2ef;hpb=19ce4ab019927698fd8771ce5ac6dca80542dce6;p=integration%2Ftest.git diff --git a/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot b/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot index 8b03606609..1adea99aa3 100644 --- a/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot +++ b/csit/suites/bgpcep/bgpingest/singlepeer_changecount.robot @@ -32,7 +32,7 @@ Documentation BGP performance of ingesting from 1 iBGP peer, data change cou Suite Setup Setup_Everything Suite Teardown Teardown_Everything Test Setup SetupUtils.Setup_Test_With_Logging_And_Fast_Failing -Test Teardown FailFast.Start_Failing_Fast_If_This_Failed +Test Teardown SetupUtils.Teardown_Test_Show_Bugs_And_Start_Fast_Failing_If_Test_Failed Library SSHLibrary timeout=10s Library RequestsLibrary Variables ${CURDIR}/../../../variables/Variables.py @@ -43,26 +43,36 @@ Resource ${CURDIR}/../../../libraries/FailFast.robot Resource ${CURDIR}/../../../libraries/KillPythonTool.robot Resource ${CURDIR}/../../../libraries/PrefixCounting.robot Resource ${CURDIR}/../../../libraries/SetupUtils.robot +Resource ${CURDIR}/../../../libraries/SSHKeywords.robot *** Variables *** +${BGP_TOOL_LOG_LEVEL} info ${BGP_VARIABLES_FOLDER} ${CURDIR}/../../../variables/bgpuser/ -${HOLDTIME} 180 -${HOLDTIME_CHANGE_COUNT} ${HOLDTIME} -${COUNT} 1000000 -${COUNT_CHANGE_COUNT} ${COUNT} ${CHECK_PERIOD} 1 ${CHECK_PERIOD_CHANGE_COUNT} ${CHECK_PERIOD} -${REPETITIONS_CHANGE_COUNT} 1 +${CHECK_PERIOD_CHANGE_COUNT_SINGLE} ${CHECK_PERIOD_CHANGE_COUNT} +${COUNT} 1000000 +${COUNT_CHANGE_COUNT} ${COUNT} +${COUNT_CHANGE_COUNT_SINGLE} ${COUNT_CHANGE_COUNT} +${HOLDTIME} 180 +${HOLDTIME_CHANGE_COUNT} ${HOLDTIME} +${HOLDTIME_CHANGE_COUNT_SINGLE} ${HOLDTIME_CHANGE_COUNT} ${INSERT} 1 -${WITHDRAW} 0 +${KARAF_LOG_LEVEL} INFO +${KARAF_BGPCEP_LOG_LEVEL} ${KARAF_LOG_LEVEL} +${KARAF_PROTOCOL_LOG_LEVEL} ${KARAF_BGPCEP_LOG_LEVEL} ${PREFILL} 0 -${UPDATE} single -${BGP_TOOL_LOG_LEVEL} info -${CONTROLLER_LOG_LEVEL} INFO -${CONTROLLER_BGP_LOG_LEVEL} DEFAULT +${REPETITIONS} 1 +${REPETITIONS_CHANGE_COUNT} ${REPETITIONS} +${REPETITIONS_CHANGE_COUNT_SINGLE} ${REPETITIONS_CHANGE_COUNT} ${RESULTS_FILE_NAME} bgp.csv +${TEST_DURATION_MULTIPLIER} 1 +${TEST_DURATION_MULTIPLIER_CHANGE_COUNT} ${TEST_DURATION_MULTIPLIER} +${TEST_DURATION_MULTIPLIER_CHANGE_COUNT_SINGLE} ${TEST_DURATION_MULTIPLIER_CHANGE_COUNT} +${UPDATE} single +${WITHDRAW} 0 # TODO: Option names can be better. -${last_change_count} -1 +${last_change_count_single} -1 *** Test Cases *** Check_For_Empty_Ipv4_Topology_Before_Talking @@ -73,7 +83,7 @@ Check_For_Empty_Ipv4_Topology_Before_Talking Reconfigure_ODL_To_Accept_Connection [Documentation] Configure BGP peer module with initiate-connection set to false. - ${template_as_string} = BuiltIn.Set_Variable {'NAME': 'example-bgp-peer', 'IP': '${TOOLS_SYSTEM_IP}', 'HOLDTIME': '${HOLDTIME_CHANGE_COUNT}', 'PEER_PORT': '${BGP_TOOL_PORT}', 'INITIATE': 'false'} + ${template_as_string} = BuiltIn.Set_Variable {'NAME': 'example-bgp-peer', 'IP': '${TOOLS_SYSTEM_IP}', 'HOLDTIME': '${HOLDTIME_CHANGE_COUNT_SINGLE}', 'PEER_PORT': '${BGP_TOOL_PORT}', 'INITIATE': 'false'} ConfigViaRestconf.Put_Xml_Template_Folder_Config_Via_Restconf ${BGP_VARIABLES_FOLDER}${/}bgp_peer ${template_as_string} Wait_For_Data_Change_Counter_Ready @@ -84,29 +94,35 @@ Reconfigure_Data_Change_Counter [Documentation] Configure data change counter to count transactions in example-ipv4-topology instead of example-linkstate-topology. ChangeCounter.Reconfigure_Topology_Name example-ipv4-topology +Change_Karaf_Logging_Levels + [Documentation] We may want to set more verbose logging here after configuration is done. + KarafKeywords.Set_Bgpcep_Log_Levels bgpcep_level=${KARAF_BGPCEP_LOG_LEVEL} protocol_level=${KARAF_PROTOCOL_LOG_LEVEL} + Start_Talking_BGP_Speaker [Documentation] Start Python speaker to connect to ODL. Store_Change_Count # Myport value is needed for checking whether connection at precise port was established. - BGPSpeaker.Start_BGP_Speaker --amount ${COUNT_CHANGE_COUNT} --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --insert=${INSERT} --withdraw=${WITHDRAW} --prefill ${PREFILL} --update ${UPDATE} --${BGP_TOOL_LOG_LEVEL} --results ${RESULTS_FILE_NAME} + BGPSpeaker.Start_BGP_Speaker --amount ${COUNT_CHANGE_COUNT_SINGLE} --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --peerport=${ODL_BGP_PORT} --insert=${INSERT} --withdraw=${WITHDRAW} --prefill ${PREFILL} --update ${UPDATE} --${BGP_TOOL_LOG_LEVEL} --results ${RESULTS_FILE_NAME} Wait_For_Stable_Talking_Ipv4_Topology [Documentation] Wait until example-ipv4-topology becomes stable. This is done by checking the change counter. - ChangeCounter.Wait_For_Change_Count_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD_CHANGE_COUNT} repetitions=${REPETITIONS_CHANGE_COUNT} count_to_overcome=${last_change_count} + ChangeCounter.Wait_For_Change_Count_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD_CHANGE_COUNT_SINGLE} repetitions=${REPETITIONS_CHANGE_COUNT_SINGLE} count_to_overcome=${last_change_count_single} Check_Talking_Ipv4_Topology_Count [Documentation] Count the routes in example-ipv4-topology and fail if the count is not correct. [Tags] critical - PrefixCounting.Check_Ipv4_Topology_Count ${COUNT_CHANGE_COUNT} + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT_CHANGE_COUNT_SINGLE} 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 Store_Change_Count BGPSpeaker.Kill_BGP_Speaker FailFast.Do_Not_Fail_Fast_From_Now_On # NOTE: It is still possible to remain failing fast, if both previous and this test have failed. - [Teardown] FailFast.Do_Not_Start_Failing_If_This_Failed + [Teardown] SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed Store_Results_For_Talking_BGP_Speaker [Documentation] Store results for plotting @@ -119,40 +135,43 @@ Store_Results_For_Talking_BGP_Speaker Wait_For_Stable_Ipv4_Topology_After_Talking [Documentation] Wait until example-ipv4-topology becomes stable again. [Tags] critical - ChangeCounter.Wait_For_Change_Count_To_Become_Stable timeout=${bgp_emptying_timeout} period=${CHECK_PERIOD_CHANGE_COUNT} repetitions=${REPETITIONS_CHANGE_COUNT} count_to_overcome=${last_change_count} + ChangeCounter.Wait_For_Change_Count_To_Become_Stable timeout=${bgp_emptying_timeout} period=${CHECK_PERIOD_CHANGE_COUNT_SINGLE} repetitions=${REPETITIONS_CHANGE_COUNT_SINGLE} count_to_overcome=${last_change_count_single} Check_For_Empty_Ipv4_Topology_After_Talking [Documentation] Example-ipv4-topology should be empty now. [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing PrefixCounting.Check_Ipv4_Topology_Is_Empty Start_Listening_BGP_Speaker [Documentation] Start Python speaker in listening mode. - BGPSpeaker.Start_BGP_Speaker --amount ${COUNT_CHANGE_COUNT} --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --insert=${INSERT} --withdraw=${WITHDRAW} --prefill ${PREFILL} --update ${UPDATE} --${BGP_TOOL_LOG_LEVEL} --results ${RESULTS_FILE_NAME} + BGPSpeaker.Start_BGP_Speaker --amount ${COUNT_CHANGE_COUNT_SINGLE} --listen --myip=${TOOLS_SYSTEM_IP} --myport=${BGP_TOOL_PORT} --peerip=${ODL_SYSTEM_IP} --insert=${INSERT} --withdraw=${WITHDRAW} --prefill ${PREFILL} --update ${UPDATE} --${BGP_TOOL_LOG_LEVEL} --results ${RESULTS_FILE_NAME} Reconfigure_ODL_To_Initiate_Connection [Documentation] Replace BGP peer config module, now with initiate-connection set to true. Store_Change_Count - ${template_as_string} = BuiltIn.Set_Variable {'NAME': 'example-bgp-peer', 'IP': '${TOOLS_SYSTEM_IP}', 'HOLDTIME': '${HOLDTIME_CHANGE_COUNT}', 'PEER_PORT': '${BGP_TOOL_PORT}', 'INITIATE': 'true'} + ${template_as_string} = BuiltIn.Set_Variable {'NAME': 'example-bgp-peer', 'IP': '${TOOLS_SYSTEM_IP}', 'HOLDTIME': '${HOLDTIME_CHANGE_COUNT_SINGLE}', 'PEER_PORT': '${BGP_TOOL_PORT}', 'INITIATE': 'true'} ConfigViaRestconf.Put_Xml_Template_Folder_Config_Via_Restconf ${BGP_VARIABLES_FOLDER}${/}bgp_peer ${template_as_string} Wait_For_Stable_Listening_Ipv4_Topology [Documentation] Wait until example-ipv4-topology becomes stable. - ChangeCounter.Wait_For_Change_Count_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD_CHANGE_COUNT} repetitions=${REPETITIONS_CHANGE_COUNT} count_to_overcome=${last_change_count} + ChangeCounter.Wait_For_Change_Count_To_Become_Stable timeout=${bgp_filling_timeout} period=${CHECK_PERIOD_CHANGE_COUNT_SINGLE} repetitions=${REPETITIONS_CHANGE_COUNT_SINGLE} count_to_overcome=${last_change_count_single} Check_Listening_Ipv4_Topology_Count [Documentation] Count the routes in example-ipv4-topology and fail if the count is not correct. [Tags] critical - PrefixCounting.Check_Ipv4_Topology_Count ${COUNT_CHANGE_COUNT} + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + PrefixCounting.Check_Ipv4_Topology_Count ${COUNT_CHANGE_COUNT_SINGLE} Kill_Listening_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 Store_Change_Count BGPSpeaker.Kill_BGP_Speaker FailFast.Do_Not_Fail_Fast_From_Now_On # NOTE: It is still possible to remain failing fast, if both previous and this test have failed. - [Teardown] FailFast.Do_Not_Start_Failing_If_This_Failed + [Teardown] SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed Store_Results_For_Listening_BGP_Speaker [Documentation] Store results for plotting @@ -165,13 +184,18 @@ Store_Results_For_Listening_BGP_Speaker Wait_For_Stable_Ipv4_Topology_After_Listening [Documentation] Wait until example-ipv4-topology becomes stable again. [Tags] critical - ChangeCounter.Wait_For_Change_Count_To_Become_Stable timeout=${bgp_emptying_timeout} period=${CHECK_PERIOD_CHANGE_COUNT} repetitions=${REPETITIONS_CHANGE_COUNT} count_to_overcome=${last_change_count} + ChangeCounter.Wait_For_Change_Count_To_Become_Stable timeout=${bgp_emptying_timeout} period=${CHECK_PERIOD_CHANGE_COUNT_SINGLE} repetitions=${REPETITIONS_CHANGE_COUNT_SINGLE} count_to_overcome=${last_change_count_single} Check_For_Empty_Ipv4_Topology_After_Listening [Documentation] Example-ipv4-topology should be empty now. [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing PrefixCounting.Check_Ipv4_Topology_Is_Empty +Restore_Karaf_Logging_Levels + [Documentation] Set logging on bgpcep and protocol to the global value. + KarafKeywords.Set_Bgpcep_Log_Levels bgpcep_level=${KARAF_LOG_LEVEL} protocol_level=${KARAF_LOG_LEVEL} + Restore_Data_Change_Counter_Configuration [Documentation] Configure data change counter back to count transactions affecting example-linkstate-topology. [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing @@ -191,28 +215,27 @@ Setup_Everything ConfigViaRestconf.Setup_Config_Via_Restconf ChangeCounter.CC_Setup PrefixCounting.PC_Setup - SSHLibrary.Set_Default_Configuration prompt=${TOOLS_SYSTEM_PROMPT} - SSHLibrary.Open_Connection ${TOOLS_SYSTEM_IP} - Utils.Flexible_Mininet_Login RequestsLibrary.Create_Session operational http://${ODL_SYSTEM_IP}:${RESTCONFPORT}${OPERATIONAL_API} auth=${AUTH} # TODO: Do not include slash in ${OPERATIONAL_TOPO_API}, having it typed here is more readable. # TODO: Alternatively, create variable in Variables which starts with http. # Both TODOs would probably need to update every suite relying on current Variables. + SSHLibrary.Set_Default_Configuration prompt=${TOOLS_SYSTEM_PROMPT} + SSHLibrary.Open_Connection ${TOOLS_SYSTEM_IP} + Utils.Flexible_Mininet_Login + SSHKeywords.Require_Python + SSHKeywords.Assure_Library_Ipaddr target_dir=. SSHLibrary.Put_File ${CURDIR}/../../../../tools/fastbgp/play.py # Calculate the timeout value based on how many routes are going to be pushed - ${count} = Builtin.Convert_To_Integer ${COUNT_CHANGE_COUNT} - # TODO: Replace 20 with some formula from period and repetitions. - Builtin.Set_Suite_Variable ${bgp_filling_timeout} ${count*3/10000+20} - Builtin.Set_Suite_Variable ${bgp_emptying_timeout} ${bgp_filling_timeout*3/4} - # Timeout in case of doubled number of updates per iteration (per prefix count increase in the simplest mixed scenario) - Builtin.Run_Keyword_If '${UPDATE}' == 'mixed' Builtin.Set_Suite_Variable ${bgp_filling_timeout} ${count*6/10000+20} - KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set ${CONTROLLER_LOG_LEVEL} - KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set ${CONTROLLER_BGP_LOG_LEVEL} org.opendaylight.bgpcep - KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set ${CONTROLLER_BGP_LOG_LEVEL} org.opendaylight.protocol + # TODO: Unify formulas with other suites in this directory. + ${timeout} = BuiltIn.Evaluate ${TEST_DURATION_MULTIPLIER_CHANGE_COUNT_SINGLE} * (${COUNT_CHANGE_COUNT_SINGLE} * 3.0 / 10000 + 20) + 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} Teardown_Everything [Documentation] Make sure Python tool was killed and tear down imported Resources. - KillPythonTool.Search_And_Kill_Remote_Python 'play\.py' + # 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' ConfigViaRestconf.Teardown_Config_Via_Restconf RequestsLibrary.Delete_All_Sessions SSHLibrary.Close_All_Connections @@ -220,7 +243,7 @@ Teardown_Everything Store_Change_Count [Documentation] Get the count of changes from BGP change counter. Ignore error or store the value. ${status} ${count} = BuiltIn.Run_Keyword_And_Ignore_Error ChangeCounter.Get_Change_Count - BuiltIn.Run_Keyword_If '${status}' == 'PASS' BuiltIn.Set_Suite_Variable ${last_change_count} ${count} + BuiltIn.Run_Keyword_If '${status}' == 'PASS' BuiltIn.Set_Suite_Variable ${last_change_count_single} ${count} Store_File_To_Workspace [Arguments] ${src_file_name} ${dst_file_name}