X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fbgpcep%2Fbgpflowspec%2F010_bgp_flowspec.robot;h=7da6c6f68bec326af1a62bda155e4312a5e48e3b;hb=bb40dc3a88bc93489e703c24e25469dd6aaaa74b;hp=e2dc987c501fe25d86109a2cbcbe8f0ed5b847bd;hpb=d21e88a4b676e9a72728554b0730dfb2c1b51e2b;p=integration%2Ftest.git diff --git a/csit/suites/bgpcep/bgpflowspec/010_bgp_flowspec.robot b/csit/suites/bgpcep/bgpflowspec/010_bgp_flowspec.robot index e2dc987c50..7da6c6f68b 100644 --- a/csit/suites/bgpcep/bgpflowspec/010_bgp_flowspec.robot +++ b/csit/suites/bgpcep/bgpflowspec/010_bgp_flowspec.robot @@ -1,139 +1,150 @@ *** Settings *** -Documentation Functional test for bgp flowspec. +Documentation Functional test for bgp flowspec. ... -... 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 -Suite Setup Start Suite -Suite Teardown Stop Suite -Library RequestsLibrary -Library SSHLibrary -Variables ${CURDIR}/../../../variables/Variables.py -Variables ${CURDIR}/../../../variables/bgpuser/variables.py ${TOOLS_SYSTEM_IP} -Resource ${CURDIR}/../../../libraries/Utils.robot -Resource ${CURDIR}/../../../libraries/SetupUtils.robot -Resource ${CURDIR}/../../../libraries/ConfigViaRestconf.robot -Library ${CURDIR}/../../../libraries/norm_json.py +... 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 RequestsLibrary +Library SSHLibrary +Resource ../../../libraries/CompareStream.robot +Resource ../../../libraries/ExaBgpLib.robot +Resource ../../../libraries/SSHKeywords.robot +Resource ../../../libraries/TemplatedRequests.robot +Resource ../../../variables/Variables.robot + +Suite Setup Start_Suite +Suite Teardown Stop_Suite + *** Variables *** -${HOLDTIME} 180 -${BGP_VARIABLES_FOLDER} ${CURDIR}/../../../variables/bgpflowspec -${CMD} env exabgp.tcp.port=1790 exabgp --debug -${EXP0} empty-flowspec.json -${CFG1} bgp-flowspec.cfg -${EXP1} bgp-flowspec.json -${CFG2} bgp-flowspec-redirect.cfg -${EXP2} bgp-flowspec-redirect.json -${FLOWSPEC_URL} /restconf/operational/bgp-rib:bgp-rib/rib/example-bgp-rib/loc-rib/tables/bgp-types:ipv4-address-family/bgp-flowspec:flowspec-subsequent-address-family/bgp-flowspec:flowspec-routes +${BGP_VARIABLES_FOLDER} ${CURDIR}/../../../variables/bgpflowspec/ +${CMD} env exabgp.tcp.port=1790 exabgp --debug +${HOLDTIME} 180 +${OLD_AS_PATH} \n"as-path": {}, +${NEW_AS_PATH} ${EMPTY} +${EXP0} {"bgp-flowspec:flowspec-routes": {}} +${CFG1} bgp-flowspec.cfg +${EXP1} bgp_flowspec +${CFG2} bgp-flowspec-redirect.cfg +${EXP2} bgp_flowspec_redirect +${FLOWSPEC_URL} +... /restconf/operational/bgp-rib:bgp-rib/rib/example-bgp-rib/loc-rib/tables/bgp-types:ipv4-address-family/bgp-flowspec:flowspec-subsequent-address-family/bgp-flowspec:flowspec-routes +${CONFIG_SESSION} session +${DEVICE_NAME} controller-config +${RIB_INSTANCE} example-bgp-rib +${PROTOCOL_OPENCONFIG} ${RIB_INSTANCE} +@{EMPTY_LIST} + *** Test Cases *** Check_For_Empty_Topology_Before_Talking [Documentation] Sanity check bgp-flowspec:flowspec-routes is up but empty. [Tags] critical - BuiltIn.Wait Until Keyword Succeeds 60s 3s Verify Empty Flowspec Data + BuiltIn.Wait_Until_Keyword_Succeeds 60s 3s Verify_Empty_Flowspec_Data 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}', 'PEER_PORT': '${BGP_TOOL_PORT}', 'INITIATE': 'false'} - ConfigViaRestconf.Put_Xml_Template_Folder_Config_Via_Restconf ${BGP_VARIABLES_FOLDER} ${template_as_string} - -FlowSpec Test 1 + &{mapping} BuiltIn.Create_Dictionary + ... IP=${TOOLS_SYSTEM_IP} + ... HOLDTIME=${HOLDTIME} + ... PEER_PORT=${BGP_TOOL_PORT} + ... INITIATE=false + ... BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} + ... PASSIVE_MODE=true + TemplatedRequests.Put_As_Xml_Templated + ... ${BGP_VARIABLES_FOLDER}/bgp_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} + +FlowSpec_Test_1 [Documentation] Testing flowspec values for ${CFG1} - [Setup] Setup Testcase ${CFG1} - BuiltIn.Wait Until Keyword Succeeds 15s 1s Verify Flowspec Data ${EXP1} - [Teardown] Stop_Tool + [Setup] Setup_Testcase ${CFG1} + BuiltIn.Wait_Until_Keyword_Succeeds 15s 1s Verify_Flowspec_Data ${EXP1} + [Teardown] ExaBgpLib.Stop_ExaBgp -FlowSpec Test 2 +FlowSpec_Test_2 [Documentation] Testing flowspec values for ${CFG2} - [Setup] Setup Testcase ${CFG2} - BuiltIn.Wait Until Keyword Succeeds 15s 1s Verify Flowspec Data ${EXP2} - [Teardown] Stop_Tool + [Setup] Setup_Testcase ${CFG2} + BuiltIn.Wait_Until_Keyword_Succeeds 15s 1s Verify_Flowspec_Data ${EXP2} + [Teardown] ExaBgpLib.Stop_ExaBgp Deconfigure_ODL_To_Accept_Connection [Documentation] Deconfigure BGP peer. - ${template_as_string}= BuiltIn.Set_Variable {'NAME': 'example-bgp-peer', 'IP': '${TOOLS_SYSTEM_IP}', 'HOLDTIME': '${HOLDTIME}', 'PEER_PORT': '${BGP_TOOL_PORT}', 'INITIATE': 'false'} - ConfigViaRestconf.Delete_Xml_Template_Folder_Config_Via_Restconf ${BGP_VARIABLES_FOLDER} ${template_as_string} + &{mapping} BuiltIn.Create_Dictionary IP=${TOOLS_SYSTEM_IP} BGP_RIB_OPENCONFIG=${PROTOCOL_OPENCONFIG} + TemplatedRequests.Delete_Templated + ... ${BGP_VARIABLES_FOLDER}/bgp_peer + ... mapping=${mapping} + ... session=${CONFIG_SESSION} + *** Keywords *** -Start Suite +Start_Suite [Documentation] Suite setup keyword - ${mininet_conn_id}= SSHLibrary.Open Connection ${TOOLS_SYSTEM_IP} prompt=${DEFAULT_LINUX_PROMPT} timeout=6s - Builtin.Set Suite Variable ${mininet_conn_id} - Utils.Flexible Mininet Login ${TOOLS_SYSTEM_USER} - ${stdout} ${stderr} ${rc}= SSHLibrary.Execute Command ls return_stdout=True return_stderr=True - ... return_rc=True - ${stdout} ${stderr} ${rc}= SSHLibrary.Execute Command sudo apt-get install -y python-pip return_stdout=True return_stderr=True - ... return_rc=True - ${stdout} ${stderr} ${rc}= SSHLibrary.Execute Command sudo pip install exabgp return_stdout=True return_stderr=True - ... return_rc=True - RequestsLibrary.Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} - ConfigViaRestconf.Setup_Config_Via_Restconf - Upload Config Files ${CURDIR}/../../../variables/bgpflowspec/ - -Stop Suite + SSHLibrary.Open_Connection ${TOOLS_SYSTEM_IP} prompt=${DEFAULT_LINUX_PROMPT} timeout=6s + SSHKeywords.Flexible_Mininet_Login ${TOOLS_SYSTEM_USER} + SSHKeywords.Virtual_Env_Create + SSHKeywords.Virtual_Env_Install_Package setuptools==44.0.0 + SSHKeywords.Virtual_Env_Install_Package exabgp==3.4.16 + RequestsLibrary.Create_Session ${CONFIG_SESSION} http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} + Upload_Config_Files ${BGP_VARIABLES_FOLDER} + ${AS_PATH} CompareStream.Set_Variable_If_At_Least_Neon ${NEW_AS_PATH} ${OLD_AS_PATH} + BuiltIn.Set_Suite_Variable ${AS_PATH} + +Stop_Suite [Documentation] Suite teardown keyword - ConfigViaRestconf.Teardown_Config_Via_Restconf - SSHLibrary.Close All Connections - RequestsLibrary.Delete All Sessions + SSHLibrary.Close_All_Connections + RequestsLibrary.Delete_All_Sessions -Upload Config Files - [Arguments] ${dir_name} +Upload_Config_Files [Documentation] Uploads exabgp config files - SSHLibrary.Put Directory ${CURDIR}/../../../variables/bgpflowspec/ . - @{cfgfiles}= SSHLibrary.List Files In Directory . *.cfg - : FOR ${cfgfile} IN @{cfgfiles} - \ SSHLibrary.Execute Command sed -i -e 's/EXABGPIP/${TOOLS_SYSTEM_IP}/g' ${cfgfile} - \ SSHLibrary.Execute Command sed -i -e 's/ODLIP/${ODL_SYSTEM_IP}/g' ${cfgfile} - \ ${stdout}= SSHLibrary.Execute Command cat ${cfgfile} - \ Log ${stdout} - -Setup Testcase - [Arguments] ${cfg_file} - Verify Empty Flowspec Data - Start Tool ${cfg_file} - -Start_Tool + [Arguments] ${dir_name} + SSHLibrary.Put_Directory ${BGP_VARIABLES_FOLDER} . + @{cfgfiles} SSHLibrary.List_Files_In_Directory . *.cfg + FOR ${cfgfile} IN @{cfgfiles} + SSHLibrary.Execute_Command sed -i -e 's/EXABGPIP/${TOOLS_SYSTEM_IP}/g' ${cfgfile} + SSHLibrary.Execute_Command sed -i -e 's/ODLIP/${ODL_SYSTEM_IP}/g' ${cfgfile} + ${stdout} SSHLibrary.Execute_Command cat ${cfgfile} + Log ${stdout} + END + +Setup_Testcase [Arguments] ${cfg_file} - [Documentation] Start the tool ${cmd} ${cfg_file} - BuiltIn.Log ${cmd} ${cfg_file} - ${output}= SSHLibrary.Write ${cmd} ${cfg_file} - BuiltIn.Log ${output} - -Wait_Until_Tool_Finish - [Arguments] ${timeout} - [Documentation] Wait ${timeout} for the tool exit. - BuiltIn.Wait Until Keyword Succeeds ${timeout} 1s SSHLibrary.Read Until Prompt - -Stop_Tool - [Documentation] Stop the tool if still running. - Utils.Write_Bare_Ctrl_C - ${output}= SSHLibrary.Read delay=1s - BuiltIn.Log ${output} - Verify Empty Flowspec Data - -Verify Empty Flowspec Data + Verify_Empty_Flowspec_Data + ExaBgpLib.Start_ExaBgp_And_Verify_Connected + ... ${cfg_file} + ... ${CONFIG_SESSION} + ... ${TOOLS_SYSTEM_IP} + ... connection_retries=${3} + +Verify_Empty_Flowspec_Data [Documentation] Verify expected response. - Verify Flowspec Data ${EXP0} + CompareStream.Run_Keyword_If_At_Most_Fluorine Normalize_And_Compare + CompareStream.Run_Keyword_If_At_Least_Neon Verify_Empty_Flowspec_Data_Neon -Verify Flowspec Data - [Arguments] ${exprspfile} +Verify_Flowspec_Data [Documentation] Verify expected response - ${keys_with_bits}= BuiltIn.Create_List op - ${expected_rsp}= Get Expected Response From File ${exprspfile} - ${expected_json}= norm_json.Normalize Json Text ${expected_rsp} keys_with_bits=${keys_with_bits} - ${rsp}= RequestsLibrary.Get Request session ${FLOWSPEC_URL} - BuiltIn.Log ${rsp.content} - ${received_json}= norm_json.Normalize Json Text ${rsp.content} keys_with_bits=${keys_with_bits} - BuiltIn.Log ${received_json} - BuiltIn.Log ${expected_json} - BuiltIn.Should Be Equal ${received_json} ${expected_json} - -Get Expected Response From File - [Arguments] ${exprspfile} - [Documentation] Looks for release specific response first, then take default. - ${status} ${expresponse}= BuiltIn.Run_Keyword_And_Ignore_Error OperatingSystem.Get File ${CURDIR}/../../../variables/bgpflowspec/${exprspfile}.${ODL_STREAM} - Return From Keyword If '${status}' == 'PASS' ${expresponse} - ${expresponse}= OperatingSystem.Get File ${CURDIR}/../../../variables/bgpflowspec/${exprspfile} - [Return] ${expresponse} + [Arguments] ${exprspdir} + &{mapping} BuiltIn.Create_Dictionary AS_PATH=${AS_PATH} + TemplatedRequests.Get_As_Json_Templated + ... ${BGP_VARIABLES_FOLDER}${/}${exprspdir} + ... session=${CONFIG_SESSION} + ... mapping=${mapping} + ... verify=True + +Normalize_And_Compare + [Documentation] Verify empty flowspec data + ${rsp} RequestsLibrary.Get_Request ${CONFIG_SESSION} ${FLOWSPEC_URL} + TemplatedRequests.Normalize_Jsons_With_Bits_And_Compare + ... ${EXP0} + ... ${rsp.content} + ... keys_with_bits=${EMPTY_LIST} + +Verify_Empty_Flowspec_Data_Neon + [Documentation] Verify empty flowspec data on neon + TemplatedRequests.Get_As_Json_Templated + ... ${BGP_VARIABLES_FOLDER}${/}empty_route + ... session=${CONFIG_SESSION} + ... verify=True