X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fbgpcep%2Fbgpclustering%2FPrefixcountKeywords.robot;h=506b41f946f64e0ee08e456f64aff68afef88a40;hb=HEAD;hp=688a3fe384712edc0e0e849b67e4abfec642cfa4;hpb=5f64af6d5b5290ef5d92e97f6bde4d83e2915f1e;p=integration%2Ftest.git diff --git a/csit/suites/bgpcep/bgpclustering/PrefixcountKeywords.robot b/csit/suites/bgpcep/bgpclustering/PrefixcountKeywords.robot index 688a3fe384..506b41f946 100644 --- a/csit/suites/bgpcep/bgpclustering/PrefixcountKeywords.robot +++ b/csit/suites/bgpcep/bgpclustering/PrefixcountKeywords.robot @@ -1,73 +1,86 @@ *** Settings *** -Documentation BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used. +Documentation BGP performance of ingesting from 1 iBGP peer, data change counter is NOT used. ... -... Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. +... 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 -Library SSHLibrary timeout=10s -Library RequestsLibrary -Variables ${CURDIR}/../../../variables/Variables.py -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/ShardStability.robot -Resource ${CURDIR}/../../../libraries/SSHKeywords.robot -Resource ${CURDIR}/../../../libraries/TemplatedRequests.robot +... 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 +... +... For propper usage of this resource ${config_session} varaible has to be set. +... It should point to http://:${RESTCONFPORT}. + +Library SSHLibrary timeout=10s +Library RequestsLibrary +Resource ../../../libraries/BGPcliKeywords.robot +Resource ../../../libraries/BGPSpeaker.robot +Resource ../../../libraries/ClusterAdmin.robot +Resource ../../../libraries/ClusterManagement.robot +Resource ../../../libraries/FailFast.robot +Resource ../../../libraries/KillPythonTool.robot +Resource ../../../libraries/PrefixCounting.robot +Resource ../../../libraries/SetupUtils.robot +Resource ../../../libraries/ShardStability.robot +Resource ../../../libraries/SSHKeywords.robot +Resource ../../../libraries/TemplatedRequests.robot +Resource ../../../variables/Variables.robot + *** Variables *** -${BGP_TOOL_LOG_LEVEL} info -${BGP_PEER_FOLDER} ${CURDIR}/../../../variables/bgpclustering/bgp_peer_openconf # used for configuration of bgp peer via openconfig -${BGP_VARIABLES_FOLDER} ${CURDIR}/../../../variables/bgpclustering/bgp_peer # used for configuration of bgp peer vie netconf connector -${BGP_VARIABLES_FOLDER_OP} ${CURDIR}/../../../variables/bgpclustering/bgp_peer_operational -${NETCONF_DEV_FOLDER} ${CURDIR}/../../../variables/netconf/device/full-uri-device -${NETCONF_MOUNT_FOLDER} ${CURDIR}/../../../variables/netconf/device/full-uri-mount -${CHECK_PERIOD} 10 -${HOLDTIME} 180 -${INSERT} 1 -${KARAF_LOG_LEVEL} INFO -${KARAF_BGPCEP_LOG_LEVEL} ${KARAF_LOG_LEVEL} -${KARAF_PROTOCOL_LOG_LEVEL} ${KARAF_BGPCEP_LOG_LEVEL} -${PREFILL} 0 -${REPETITIONS} 1 -${RESULTS_FILE_NAME} bgp.csv -${TEST_DURATION_MULTIPLIER} 1 -${UPDATE} single -${WITHDRAW} 0 -${INITIAL_RESTCONF_TIMEOUT} 30s -${KARAF_HOME} ${WORKSPACE}/${BUNDLEFOLDER} -${SHARD_DEFAULT_CONFIG} shard-default-config +${BGP_TOOL_LOG_LEVEL} info +# used for configuration of bgp peer via openconfig +${BGP_PEER_FOLDER} +... ${CURDIR}/../../../variables/bgpclustering/bgp_peer_openconf +# used for configuration of bgp peer +${BGP_VARIABLES_FOLDER} +... ${CURDIR}/../../../variables/bgpclustering/${ODL_STREAM}/bgp_peer +${BGP_VARIABLES_FOLDER_OP} ${CURDIR}/../../../variables/bgpclustering/${ODL_STREAM}/bgp_peer_operational +${CHECK_PERIOD} 10 +${HOLDTIME} 180 +${INSERT} 1 +${KARAF_LOG_LEVEL} INFO +${KARAF_BGPCEP_LOG_LEVEL} ${KARAF_LOG_LEVEL} +${KARAF_PROTOCOL_LOG_LEVEL} ${KARAF_BGPCEP_LOG_LEVEL} +${PREFILL} 0 +${REPETITIONS} 1 +${RESULTS_FILE_NAME} bgp.csv +${TEST_DURATION_MULTIPLIER} 1 +${UPDATE} single +${WITHDRAW} 0 +${INITIAL_RESTCONF_TIMEOUT} 30s +${KARAF_HOME} ${WORKSPACE}/${BUNDLEFOLDER} +${SHARD_DEFAULT_CONFIG} shard-default-config ${SHARD_DEFAULT_OPERATIONAL} shard-default-operational -${CONFIG_SESSION} config-session -${CONFIGURATION_1} operational-1 -${CONFIGURATION_2} operational-2 -${CONFIGURATION_3} operational-3 -${EXAMPLE_IPV4_TOPOLOGY} example-ipv4-topology -${DEVICE_NAME} peer-controller-config -${DEVICE_CHECK_TIMEOUT} 60s -${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 +${EXAMPLE_IPV4_TOPOLOGY} example-ipv4-topology +${DEVICE_NAME} peer-controller-config +${DEVICE_CHECK_TIMEOUT} 60s +${RIB_INSTANCE} example-bgp-rib +${PROTOCOL_OPENCONFIG} ${RIB_INSTANCE} +${BGP_PEER_NAME} example-bgp-peer +@{SHARD_MONITOR_LIST} +... default:config +... default:operational +... topology:config +... topology:operational +... inventory:config +... inventory:operational + *** Keywords *** Setup_Everything [Documentation] Setup imported resources, SSH-login to tools system, ... create HTTP session, put Python tool to tools system. - SetupUtils.Setup_Utils_For_Setup_And_Teardown - RequestsLibrary.Create_Session ${CONFIGURATION_1} http://${ODL_SYSTEM_1_IP}:${RESTCONFPORT}${OPERATIONAL_API} auth=${AUTH} - RequestsLibrary.Create_Session ${CONFIGURATION_2} http://${ODL_SYSTEM_2_IP}:${RESTCONFPORT}${OPERATIONAL_API} auth=${AUTH} - RequestsLibrary.Create_Session ${CONFIGURATION_3} http://${ODL_SYSTEM_3_IP}:${RESTCONFPORT}${OPERATIONAL_API} auth=${AUTH} + SetupUtils.Setup_Utils_For_Setup_And_Teardown http_timeout=125 PrefixCounting.PC_Setup + ${indices} = ClusterManagement.List_All_Indices + FOR ${member_index} IN @{indices} + ${session} = ClusterManagement.Resolve_Http_Session_For_Member ${member_index} + BuiltIn.Set_Suite_Variable ${operational_${member_index}} ${session} + END + BuiltIn.Set_Suite_Variable ${pc_all_indices} ${indices} SSHLibrary.Set_Default_Configuration prompt=${TOOLS_SYSTEM_PROMPT} SSHLibrary.Open_Connection ${TOOLS_SYSTEM_IP} - Utils.Flexible_Mininet_Login + SSHKeywords.Flexible_Mininet_Login # 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. @@ -91,37 +104,55 @@ Teardown_Everything RequestsLibrary.Delete_All_Sessions SSHLibrary.Close_All_Connections -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. + [Arguments] ${peerip}=${rib_owner_node_id} # 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} + 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. + [Arguments] ${connection_retries}=${1} ${peerip}=${rib_owner_node_id} # 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 - \ ... Verify_Bgp_Peer_Connection ${CONFIG_SESSION} ${TOOLS_SYSTEM_IP} connected=${True} - \ BuiltIn.Run_Keyword_Unless "${status}" == "PASS" BGPSpeaker.Kill_BGP_Speaker - \ BuiltIn.Return_From_Keyword_If "${status}" == "PASS" + 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 + ... Verify_Bgp_Peer_Connection + ... ${config_session} + ... ${TOOLS_SYSTEM_IP} + ... connected=${True} + IF "${status}" != "PASS" BGPSpeaker.Kill_BGP_Speaker + IF "${status}" == "PASS" RETURN + END BuiltIn.Fail Unable to connect bgp peer to ODL Verify_Bgp_Peer_Connection - [Arguments] ${session} ${peer_ip} ${connected}=${True} [Documentation] Checks peer presence in operational datastore + [Arguments] ${session} ${peer_ip} ${connected}=${True} # 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} + ${peer_check_url} = BuiltIn.Set_Variable ${REST_API}/bgp-rib:bgp-rib/rib=example-bgp-rib/peer=bgp:%2F%2F + ${exp_status_code} = BuiltIn.Set_Variable_If ${connected} 200 404 + ${rsp} = RequestsLibrary.GET On Session + ... ${session} + ... url=${peer_check_url}${peer_ip}?content=nonconfig + ... expected_status=${exp_status_code} BuiltIn.Log ${rsp.content} - BuiltIn.Should_Be_Equal_As_Numbers ${exp_status_code} ${rsp.status_code} + +Set_Shard_Leaders_Location_And_Verify + [Documentation] Move default/topology config/operational shard location to local or remote node as requested + ... towards the given rib singleton instance location. + [Arguments] ${requested_shard_localtion_idx} + ShardStability.Set_Shard_Location ${requested_shard_localtion_idx} + BuiltIn.Wait_Until_Keyword_Succeeds + ... 30s + ... 5s + ... ShardStability.Verify_Shard_Leader_Located_As_Expected + ... ${requested_shard_localtion_idx} + ... http_timeout=125 + ${init_shard_details} = ShardStability.Shards_Stability_Get_Details ${SHARD_MONITOR_LIST} + BuiltIn.Set_Suite_Variable ${init_shard_details}