X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FOpenStackOperations.robot;h=ae6393a9c2f61e0c447c21c814b30177e8b38be3;hb=c6740c77a4706a11379d2b074fc5d380a610d9af;hp=fa3b0743963aa0178dd825a339cbea10d480c176;hpb=2d7c09c7258d058185322bd495411e084524472b;p=integration%2Ftest.git diff --git a/csit/libraries/OpenStackOperations.robot b/csit/libraries/OpenStackOperations.robot index fa3b074396..ae6393a9c2 100644 --- a/csit/libraries/OpenStackOperations.robot +++ b/csit/libraries/OpenStackOperations.robot @@ -20,6 +20,10 @@ Resource ../variables/Variables.robot Resource ../variables/netvirt/Variables.robot Variables ../variables/netvirt/Modules.py +*** Variables *** +@{VALIDATION_KEYWORDS} Verify Services Verify Expected Default Tunnels Verify Expected Default Tables On Nodes +${VALIDATION_FILE} /tmp/validations.txt + *** Keywords *** Get Tenant ID From Security Group [Documentation] Returns tenant ID by reading it from existing default security-group. @@ -341,9 +345,10 @@ Check If Instance Is Ready For Ssh Login Using PublicKey BuiltIn.Should Contain ${output} ${vm_ip} Check If Instance Is Ready For Ssh Login Using Password - [Arguments] ${net_name} ${vm_ip} ${user}=cirros ${console}=cirros + [Arguments] ${net_name} ${vm_ip} ${user}=cirros ${password}=cubswin:) ${console}=cirros [Documentation] Ensure the VM is reachable from ssh as tests would require. This keyword will use password authentication - ${output} = Execute Command on VM Instance ${net_name} ${vm_ip} ifconfig console=${console} + ${output} = Execute Command on VM Instance ${net_name} ${vm_ip} ifconfig ${user} ${password} + ... console=${console} BuiltIn.Should Contain ${output} ${vm_ip} Get VM IPs @@ -455,11 +460,13 @@ Exit From Vm Console BuiltIn.Run Keyword If ${rcode} DevstackUtils.Write Commands Until Prompt exit Check Ping - [Arguments] ${ip_address} ${ttl}=64 + [Arguments] ${ip_address} ${ttl}=64 ${ping_tries}=3 [Documentation] Run Ping command on the IP available as argument ${ethertype} = String.Get Regexp Matches ${ip_address} ${IP_REGEX} - ${output} = BuiltIn.Run Keyword If ${ethertype} Utils.Write Commands Until Expected Prompt ping -t ${ttl} -c 3 ${ip_address} ${OS_SYSTEM_PROMPT} - ... ELSE Utils.Write Commands Until Expected Prompt ping6 -t ${ttl} -c 3 ${ip_address} ${OS_SYSTEM_PROMPT} + ${ping} = BuiltIn.Set Variable If ${ethertype} ping ping6 + ${cmd} = BuiltIn.Set Variable rc=0; for count in `seq 1 ${ping_tries}`; do ${ping} -W1 -t${ttl} -c1 ${ip_address}; rc=$?; if [ $rc -eq 0 ]; then break; fi; done; echo ping_rc=$rc + ${output} = Utils.Write Commands Until Expected Regexp ${cmd} ping_rc=\\d+ 120 + BuiltIn.Log output: ${output} BuiltIn.Should Contain ${output} 64 bytes Check No Ping @@ -507,7 +514,7 @@ Copy File To VM Instance With PublicKey Auth Test Operations From Vm Instance [Arguments] ${net_name} ${src_ip} ${dest_ips} ${user}=cirros ${password}=cubswin:) ${ttl}=64 - ... ${ping_should_succeed}=True ${check_metadata}=True ${console}=cirros + ... ${ping_should_succeed}=True ${check_metadata}=True ${console}=cirros ${ping_tries}=3 [Documentation] Login to the vm instance using ssh in the network. OpenStackOperations.Get ControlNode Connection ${net_id} = OpenStackOperations.Get Net Id ${net_name} @@ -522,7 +529,7 @@ Test Operations From Vm Instance : FOR ${dest_ip} IN @{dest_ips} \ ${string_empty} = BuiltIn.Run Keyword And Return Status Should Be Empty ${dest_ip} \ BuiltIn.Run Keyword If ${string_empty} Continue For Loop - \ BuiltIn.Run Keyword If ${rcode} and "${ping_should_succeed}" == "True" OpenStackOperations.Check Ping ${dest_ip} ttl=${ttl} + \ BuiltIn.Run Keyword If ${rcode} and "${ping_should_succeed}" == "True" OpenStackOperations.Check Ping ${dest_ip} ttl=${ttl} ping_tries=${ping_tries} \ ... ELSE OpenStackOperations.Check No Ping ${dest_ip} ttl=${ttl} ${ethertype} = String.Get Regexp Matches ${src_ip} ${IP_REGEX} BuiltIn.Run Keyword If ${rcode} and "${check_metadata}" and ${ethertype} == "True" OpenStackOperations.Check Metadata Access @@ -638,6 +645,8 @@ Get Test Teardown Debugs OpenStackOperations.Get OvsDebugInfo BuiltIn.Run Keyword And Ignore Error DataModels.Get Model Dump ${HA_PROXY_IP} ${netvirt_data_models} KarafKeywords.Fail If Exceptions Found During Test ${test_name} fail=${fail} + : FOR ${i} IN RANGE ${NUM_ODL_SYSTEM} + \ BuiltIn.Run Keyword And Ignore Error Issue_Command_On_Karaf_Console trace:transactions ${ODL_SYSTEM_${i+1}_IP} Get Suite Debugs Get Test Teardown Debugs test_name=${SUITE_NAME} fail=False @@ -1113,8 +1122,7 @@ OpenStack Suite Setup BuiltIn.Set Suite Variable @{tcpdump_port_6653_conn_ids} BuiltIn.Run Keyword If "${PRE_CLEAN_OPENSTACK_ALL}"=="True" OpenStack Cleanup All OpenStackOperations.Add OVS Logging On All OpenStack Nodes - Run_Keyword_If_At_Least_Oxygen Wait Until Keyword Succeeds 60 2 ClusterManagement.Check Status Of Services Is OPERATIONAL @{NETVIRT_DIAG_SERVICES} - Verify Expected Default Tables On Nodes + Validate Deployment OpenStack Suite Teardown [Documentation] Wrapper teardown keyword that can be used in any suite running in an openstack environement @@ -1130,6 +1138,23 @@ OpenStack Suite Teardown : FOR ${i} IN RANGE ${NUM_ODL_SYSTEM} \ KarafKeywords.Issue Command On Karaf Console threads --list | wc -l ${ODL_SYSTEM_${i+1}_IP} +Validate Deployment + [Documentation] Validate the deployment. Examples to validate are verifying default table + ... flows are installed and that the tunnel mesh has been built correctly. + Write To Validate File ----------------------------------------\n${SUITE_NAME}\n + : FOR ${keyword} IN @{VALIDATION_KEYWORDS} + \ ${status} = Builtin.Run Keyword And Return Status ${keyword} + \ BuiltIn.Run Keyword If "${status}" == "FAIL" or "${status}" == "False" BuiltIn.Run Keywords Write To Validate File Failed: ${keyword} + \ ... AND BuiltIn.Fail + \ ... ELSE Write To Validate File Passed: ${keyword} + +Write To Validate File + [Arguments] ${msg} + [Documentation] Write the given ${msg} to ${VALIDATION_FILE}. Create the file if not present. + ${status} = BuiltIn.Run Keyword And Return Status OperatingSystem.File Should Exist ${VALIDATION_FILE} + BuiltIn.Run Keyword If "${status}" == "False" OperatingSystem.Create File ${VALIDATION_FILE} + OperatingSystem.Append To File ${VALIDATION_FILE} ${msg}\n + Copy DHCP Files From Control Node [Documentation] Copy the current DHCP files to the robot vm. The keyword must be called ... after the subnet(s) are created and before the subnet(s) are deleted. @@ -1212,6 +1237,22 @@ Get Network Segmentation Id @{list} = String.Split String ${output} [Return] @{list}[0] +Verify Services + [Documentation] Verify if the services are operational + Wait Until Keyword Succeeds 60 2 ClusterManagement.Check Status Of Services Is OPERATIONAL @{NETVIRT_DIAG_SERVICES} + +Verify Expected Default Tunnels + [Documentation] Verify if the default tunnels are created. + ... SFC jobs currently fail this validation because it uses of-tunnels. + ... This validation will be blocked for NEtvirt SFC jobs until support for of-tunnels + ... added to odltools. + ${check_feature_list} = BuiltIn.Create List odl-netvirt-sfc + ${is_sfc_enabled} = OpenStackOperations.Is Feature Installed features=${check_feature_list} + BuiltIn.Return From Keyword If ${is_sfc_enabled} == ${True} ${True} + BuiltIn.Return From Keyword If ${OS_NODE_CNT} == ${1} ${True} + ${output} = ODLTools.Analyze Tunnels test_name=${SUITE_NAME}.Suite Setup + BuiltIn.Should Contain ${output} All tunnels are up + Verify Expected Default Tables On Nodes [Arguments] ${node_ips}=@{OS_ALL_IPS} [Documentation] Verify if Default Table Entries are programmed on all Nodes