X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fopenstack%2Fsecuritygroup%2Fsecurity_group_l3bcast.robot;h=54b57b1a7176b02d6191ee6e8c50d12561e2290e;hb=5f2b9deac3984a6b2f0c93408f37ac1ae43d6cfd;hp=1be1169b2bd0d87b74fecfbbca3a6d307fab41c2;hpb=14c1be480643f37f1eeef9d16149b631edd6aa2d;p=integration%2Ftest.git diff --git a/csit/suites/openstack/securitygroup/security_group_l3bcast.robot b/csit/suites/openstack/securitygroup/security_group_l3bcast.robot index 1be1169b2b..54b57b1a71 100644 --- a/csit/suites/openstack/securitygroup/security_group_l3bcast.robot +++ b/csit/suites/openstack/securitygroup/security_group_l3bcast.robot @@ -1,75 +1,142 @@ *** Settings *** -Documentation Test Suite for Network and Subnet Broadcast with security group -Suite Setup Start Suite -Suite Teardown OpenStackOperations.OpenStack Suite Teardown -Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing -Test Teardown OpenStackOperations.Get Test Teardown Debugs -Library String -Library RequestsLibrary -Library SSHLibrary -Library Collections -Library json -Library OperatingSystem -Resource ../../../libraries/DevstackUtils.robot -Resource ../../../libraries/KarafKeywords.robot -Resource ../../../libraries/OpenStackOperations.robot -Resource ../../../libraries/OVSDB.robot -Resource ../../../libraries/OvsManager.robot -Resource ../../../libraries/SetupUtils.robot -Resource ../../../libraries/Utils.robot -Resource ../../../variables/Variables.robot -Resource ../../../variables/netvirt/Variables.robot +Documentation Test Suite for Network and Subnet Broadcast with security group + +Library String +Library RequestsLibrary +Library SSHLibrary +Library Collections +Library json +Library OperatingSystem +Resource ../../../libraries/DevstackUtils.robot +Resource ../../../libraries/KarafKeywords.robot +Resource ../../../libraries/OpenStackOperations.robot +Resource ../../../libraries/OVSDB.robot +Resource ../../../libraries/OvsManager.robot +Resource ../../../libraries/SetupUtils.robot +Resource ../../../libraries/Utils.robot +Resource ../../../variables/Variables.robot +Resource ../../../variables/netvirt/Variables.robot + +Suite Setup Start Suite +Suite Teardown OpenStackOperations.OpenStack Suite Teardown +Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing +Test Teardown OpenStackOperations.Get Test Teardown Debugs + *** Variables *** -@{SECURITY_GROUP} sgbcast1 sgbcast2 -@{NETWORKS} sgbcast_net_1 sgbcast_net_2 -@{SUBNETS} sgbcast_sub_1 sgbcast_sub_2 -@{SUBNET_CIDRS} 55.0.0.0/24 56.0.0.0/24 -${ROUTER} sgbcast_router -@{NET_1_PORTS} sgbcast_net_1_port_1 sgbcast_net_1_port_2 sgbcast_net_1_port_3 -@{NET_2_PORTS} sgbcast_net_2_port_1 sgbcast_net_2_port_2 -@{NET_1_VMS} sgbcast_net_1_vm_1 sgbcast_net_1_vm_2 sgbcast_net_1_vm_3 -@{NET_2_VMS} sgbcast_net_2_vm_1 sgbcast_net_2_vm_2 -${DUMP_FLOW} sudo ovs-ofctl dump-flows br-int -OOpenflow13 -${DUMP_PORT_DESC} sudo ovs-ofctl dump-ports-desc br-int -OOpenflow13 -${PACKET_COUNT} 5 -${BCAST_IP} 255.255.255.255 -${SUBNET1_BCAST_IP} 55.0.0.255 -${SUBNET2_BCAST_IP} 56.0.0.255 -${ENABLE_BCAST} echo 0 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts - -*** Test Case *** +@{SECURITY_GROUP} sgbcast1 sgbcast2 +@{NETWORKS} sgbcast_net_1 sgbcast_net_2 +@{SUBNETS} sgbcast_sub_1 sgbcast_sub_2 +@{SUBNET_CIDRS} 55.0.0.0/24 56.0.0.0/24 +${ROUTER} sgbcast_router +@{NET_1_PORTS} sgbcast_net_1_port_1 sgbcast_net_1_port_2 sgbcast_net_1_port_3 +@{NET_2_PORTS} sgbcast_net_2_port_1 sgbcast_net_2_port_2 +@{NET_1_VMS} sgbcast_net_1_vm_1 sgbcast_net_1_vm_2 sgbcast_net_1_vm_3 +@{NET_2_VMS} sgbcast_net_2_vm_1 sgbcast_net_2_vm_2 +${DUMP_FLOW} sudo ovs-ofctl dump-flows br-int -OOpenflow13 +${DUMP_PORT_DESC} sudo ovs-ofctl dump-ports-desc br-int -OOpenflow13 +${PACKET_COUNT} 5 +${BCAST_IP} 255.255.255.255 +${SUBNET1_BCAST_IP} 55.0.0.255 +${SUBNET2_BCAST_IP} 56.0.0.255 +${ENABLE_BCAST} echo 0 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts + + +*** Test Cases *** Verify Network Broadcast traffic between the VMs hosted in Single Network [Documentation] This TC is to verify Network Broadcast traffic between the VMs hosted in Same Network on same/different compute node ${pkt_check} = BuiltIn.Set Variable If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" 10 5 - Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP1_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} - ... ${VM_IPS}[0] same pingsuccess pkt_check=${pkt_check} + Wait Until Keyword Succeeds + ... 30s + ... 5s + ... Verify L3Broadcast With Antispoofing Table + ... ${OS_CMP1_IP} + ... ${EGRESS_ACL_TABLE} + ... ${BCAST_IP} + ... ${VM_IPS}[0] + ... same + ... pingsuccess + ... pkt_check=${pkt_check} Verify Network Broadcast traffic between the VMs hosted in Multi Network [Documentation] This TC is to verify Network Broadcast traffic between the VMs hosted in Different Network on same/different compute node. ${pkt_check} = BuiltIn.Set Variable If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" 5 0 - Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP1_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} - ... ${VM_IPS}[3] different pingsuccess pkt_check=${pkt_check} + Wait Until Keyword Succeeds + ... 30s + ... 5s + ... Verify L3Broadcast With Antispoofing Table + ... ${OS_CMP1_IP} + ... ${EGRESS_ACL_TABLE} + ... ${BCAST_IP} + ... ${VM_IPS}[3] + ... different + ... pingsuccess + ... pkt_check=${pkt_check} Verify Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network [Documentation] Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network - Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP1_IP} ${EGRESS_ACL_TABLE} ${SUBNET1_BCAST_IP} - ... ${VM_IPS}[0] same pingsuccess ${VM2_SUBMETA} pkt_check=5 additional_args=| grep ${VM2_SUBMETA} + Wait Until Keyword Succeeds + ... 30s + ... 5s + ... Verify L3Broadcast With Antispoofing Table + ... ${OS_CMP1_IP} + ... ${EGRESS_ACL_TABLE} + ... ${SUBNET1_BCAST_IP} + ... ${VM_IPS}[0] + ... same + ... pingsuccess + ... ${VM2_SUBMETA} + ... pkt_check=5 + ... additional_args=| grep ${VM2_SUBMETA} Verify Subnet Broadcast traffic between the VMs hosted on Different compute node in Single Network [Documentation] Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Single Network - Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP2_IP} ${EGRESS_ACL_TABLE} ${SUBNET1_BCAST_IP} - ... ${VM_IPS}[0] same pingsuccess ${VM3_SUBMETA} pkt_check=5 additional_args=| grep ${VM3_SUBMETA} + Wait Until Keyword Succeeds + ... 30s + ... 5s + ... Verify L3Broadcast With Antispoofing Table + ... ${OS_CMP2_IP} + ... ${EGRESS_ACL_TABLE} + ... ${SUBNET1_BCAST_IP} + ... ${VM_IPS}[0] + ... same + ... pingsuccess + ... ${VM3_SUBMETA} + ... pkt_check=5 + ... additional_args=| grep ${VM3_SUBMETA} Verify Subnet Broadcast traffic between the VMs hosted on same compute node in Multi Network [Documentation] Verify L3-Subnet Broadcast traffic between the VMs hosted on same compute node in Multi Network - Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP1_IP} ${EGRESS_ACL_TABLE} ${SUBNET2_BCAST_IP} - ... ${VM_IPS}[0] different nosuccess ${VM4_SUBMETA} pkt_check=0 additional_args=| grep ${VM4_SUBMETA} + Wait Until Keyword Succeeds + ... 30s + ... 5s + ... Verify L3Broadcast With Antispoofing Table + ... ${OS_CMP1_IP} + ... ${EGRESS_ACL_TABLE} + ... ${SUBNET2_BCAST_IP} + ... ${VM_IPS}[0] + ... different + ... nosuccess + ... ${VM4_SUBMETA} + ... pkt_check=0 + ... additional_args=| grep ${VM4_SUBMETA} Verify Subnet Broadcast traffic between the VMs hosted on Different compute node in Multi Network [Documentation] Verify L3-Subnet Broadcast traffic between the VMs hosted on Different compute node in Multi Network - Wait Until Keyword Succeeds 30s 5s Verify L3Broadcast With Antispoofing Table ${OS_CMP2_IP} ${EGRESS_ACL_TABLE} ${SUBNET2_BCAST_IP} - ... ${VM_IPS}[0] different nosuccess ${VM5_SUBMETA} pkt_check=0 additional_args=| grep ${VM5_SUBMETA} + Wait Until Keyword Succeeds + ... 30s + ... 5s + ... Verify L3Broadcast With Antispoofing Table + ... ${OS_CMP2_IP} + ... ${EGRESS_ACL_TABLE} + ... ${SUBNET2_BCAST_IP} + ... ${VM_IPS}[0] + ... different + ... nosuccess + ... ${VM5_SUBMETA} + ... pkt_check=0 + ... additional_args=| grep ${VM5_SUBMETA} + *** Keywords *** Start Suite @@ -97,12 +164,31 @@ Create Setup FOR ${port_net2} IN @{NET_2_PORTS} OpenStackOperations.Create Port ${NETWORKS}[1] ${port_net2} sg=${SECURITY_GROUP}[0] END - ${ports} = BuiltIn.Create List ${NET_1_PORTS}[0] ${NET_1_PORTS}[1] ${NET_1_PORTS}[2] ${NET_2_PORTS}[0] ${NET_2_PORTS}[1] - ${vms} = BuiltIn.Create List ${NET_1_VMS}[0] ${NET_1_VMS}[1] ${NET_1_VMS}[2] ${NET_2_VMS}[0] ${NET_2_VMS}[1] - @{nodes} = BuiltIn.Create List ${OS_CMP1_HOSTNAME} ${OS_CMP1_HOSTNAME} ${OS_CMP2_HOSTNAME} ${OS_CMP1_HOSTNAME} ${OS_CMP2_HOSTNAME} + ${ports} = BuiltIn.Create List + ... ${NET_1_PORTS}[0] + ... ${NET_1_PORTS}[1] + ... ${NET_1_PORTS}[2] + ... ${NET_2_PORTS}[0] + ... ${NET_2_PORTS}[1] + ${vms} = BuiltIn.Create List + ... ${NET_1_VMS}[0] + ... ${NET_1_VMS}[1] + ... ${NET_1_VMS}[2] + ... ${NET_2_VMS}[0] + ... ${NET_2_VMS}[1] + @{nodes} = BuiltIn.Create List + ... ${OS_CMP1_HOSTNAME} + ... ${OS_CMP1_HOSTNAME} + ... ${OS_CMP2_HOSTNAME} + ... ${OS_CMP1_HOSTNAME} + ... ${OS_CMP2_HOSTNAME} FOR ${port} ${vm} ${node} IN ZIP ${ports} ${vms} ... ${nodes} - OpenStackOperations.Create Vm Instance With Port On Compute Node ${port} ${vm} ${node} sg=${SECURITY_GROUP}[0] + OpenStackOperations.Create Vm Instance With Port On Compute Node + ... ${port} + ... ${vm} + ... ${node} + ... sg=${SECURITY_GROUP}[0] END @{vms} = Collections.Combine Lists ${NET_1_VMS} ${NET_2_VMS} @{VM_IPS} = OpenStackOperations.Get VM IPs @{vms} @@ -110,15 +196,35 @@ Create Setup BuiltIn.Set Suite Variable @{VM_IPS} OpenStackOperations.Execute Command on VM Instance ${NETWORKS[0]} ${VM_IPS}[0] ${ENABLE_BCAST} OpenStackOperations.Execute Command on VM Instance ${NETWORKS[1]} ${VM_IPS}[3] ${ENABLE_BCAST} - ${vm1_in_port} ${vm1_meta} = BuiltIn.Wait Until Keyword Succeeds 60s 10s Get VMs Metadata and In Port ${NET_1_PORTS}[0] + ${vm1_in_port} ${vm1_meta} = BuiltIn.Wait Until Keyword Succeeds + ... 60s + ... 10s + ... Get VMs Metadata and In Port + ... ${NET_1_PORTS}[0] ... ${OS_CMP1_IP} - ${vm2_in_port} ${vm2_meta} = BuiltIn.Wait Until Keyword Succeeds 60s 10s Get VMs Metadata and In Port ${NET_1_PORTS}[1] + ${vm2_in_port} ${vm2_meta} = BuiltIn.Wait Until Keyword Succeeds + ... 60s + ... 10s + ... Get VMs Metadata and In Port + ... ${NET_1_PORTS}[1] ... ${OS_CMP1_IP} - ${vm3_in_port} ${vm3_meta} = BuiltIn.Wait Until Keyword Succeeds 60s 10s Get VMs Metadata and In Port ${NET_1_PORTS}[2] + ${vm3_in_port} ${vm3_meta} = BuiltIn.Wait Until Keyword Succeeds + ... 60s + ... 10s + ... Get VMs Metadata and In Port + ... ${NET_1_PORTS}[2] ... ${OS_CMP2_IP} - ${vm4_in_port} ${vm4_meta} = BuiltIn.Wait Until Keyword Succeeds 60s 10s Get VMs Metadata and In Port ${NET_2_PORTS}[0] + ${vm4_in_port} ${vm4_meta} = BuiltIn.Wait Until Keyword Succeeds + ... 60s + ... 10s + ... Get VMs Metadata and In Port + ... ${NET_2_PORTS}[0] ... ${OS_CMP1_IP} - ${vm5_in_port} ${vm5_meta} = BuiltIn.Wait Until Keyword Succeeds 60s 10s Get VMs Metadata and In Port ${NET_2_PORTS}[1] + ${vm5_in_port} ${vm5_meta} = BuiltIn.Wait Until Keyword Succeeds + ... 60s + ... 10s + ... Get VMs Metadata and In Port + ... ${NET_2_PORTS}[1] ... ${OS_CMP2_IP} ${VM1_SUBMETA} = Get Submetadata ${vm1_meta} ${VM2_SUBMETA} = Get Submetadata ${vm2_meta} @@ -132,42 +238,66 @@ Create Setup BuiltIn.Set Suite Variable ${VM5_SUBMETA} Get VMs Metadata and In Port - [Arguments] ${portname} ${OS_COMPUTE_IP} [Documentation] This keyword is to get the VM metadata and the in_port Id of the VM + [Arguments] ${portname} ${OS_COMPUTE_IP} ${subport} = OpenStackOperations.Get Sub Port Id ${portname} - ${get_vm_in_port} = Utils.Run Command On Remote System And Log ${OS_COMPUTE_IP} ${DUMP_PORT_DESC} | grep ${subport} | awk '{print$1}' + ${get_vm_in_port} = Utils.Run Command On Remote System And Log + ... ${OS_COMPUTE_IP} + ... ${DUMP_PORT_DESC} | grep ${subport} | awk '{print$1}' ${vms_in_port} = BuiltIn.Should Match Regexp ${get_vm_in_port} [0-9]+ - ${grep_metadata} = Utils.Run Command On Remote System And Log ${OS_COMPUTE_IP} ${DUMP_FLOW} | grep table=${VLAN_INTERFACE_INGRESS_TABLE} | grep in_port=${vms_in_port} | awk '{print$7}' + ${grep_metadata} = Utils.Run Command On Remote System And Log + ... ${OS_COMPUTE_IP} + ... ${DUMP_FLOW} | grep table=${VLAN_INTERFACE_INGRESS_TABLE} | grep in_port=${vms_in_port} | awk '{print$7}' @{metadata} = String.Split string ${grep_metadata} , ${get_write_metadata} = Collections.get from list ${metadata} 0 @{complete_metadata} = String.Split string ${get_write_metadata} : ${extract_metadata} = Collections.get from list ${complete_metadata} 1 @{split_metadata} = String.Split string ${extract_metadata} / ${vm_metadata} = Collections.Get From List ${split_metadata} 0 - [Return] ${vms_in_port} ${vm_metadata} + RETURN ${vms_in_port} ${vm_metadata} Get Submetadata - [Arguments] ${vm_metadata} [Documentation] Get the submetadata of the VM - ${cmd1} = Utils.Run Command On Remote System And Log ${OS_CMP1_IP} ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata: + [Arguments] ${vm_metadata} + ${cmd1} = Utils.Run Command On Remote System And Log + ... ${OS_CMP1_IP} + ... ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata: ${output1} = String.Get Regexp Matches ${cmd1} reg6=(\\w+) 1 - ${cmd2} = Utils.Run Command On Remote System And Log ${OS_CMP2_IP} ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata: + ${cmd2} = Utils.Run Command On Remote System And Log + ... ${OS_CMP2_IP} + ... ${DUMP_FLOW} | grep ${EGRESS_LPORT_DISPATCHER_TABLE} | grep write_metadata: ${output2} = String.Get Regexp Matches ${cmd2} reg6=(\\w+) 1 ${metalist} = Collections.Combine Lists ${output1} ${output2} FOR ${meta} IN @{metalist} ${metadata_check_status} = Run Keyword And Return Status should contain ${vm_metadata} ${meta} - Return From Keyword if ${metadata_check_status} == True ${meta} + IF ${metadata_check_status} == True RETURN ${meta} END Verify L3Broadcast With Antispoofing Table + [Documentation] Verify the l3 broadcast requests are hitting to antispoofing table in same subnet [Arguments] ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} ${vm_ip} ${subnet_var} ${ping_response}='pingsuccess' ... ${vm_submeta}='' ${pkt_check}=0 ${additional_args}=${EMPTY} - [Documentation] Verify the l3 broadcast requests are hitting to antispoofing table in same subnet - ${get_pkt_count_before_bcast} = OvsManager.Get Packet Count In Table For IP ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} additional_args=| grep ${vm_submeta} - ${output} = OpenStackOperations.Execute Command on VM Instance ${NETWORKS}[0] ${vm_ip} ping -c ${PACKET_COUNT} ${BCAST_IP} - BuiltIn.Run Keyword If '${ping_response}'=='pingsuccess' BuiltIn.Should Contain ${output} ${PING_REGEXP} - ... ELSE BuiltIn.Should Contain ${output} ${NO_PING_REGEXP} - ${bcast_egress} = Utils.Run Command On Remote System And Log ${OS_COMPUTE_IP} ${DUMP_FLOW} | grep table=${EGRESS_ACL_TABLE} | grep ${BCAST_IP} ${additional_args} - ${get_pkt_count_after_bcast} = OvsManager.Get Packet Count In Table For IP ${OS_COMPUTE_IP} ${EGRESS_ACL_TABLE} ${BCAST_IP} additional_args=| grep ${vm_submeta} + ${get_pkt_count_before_bcast} = OvsManager.Get Packet Count In Table For IP + ... ${OS_COMPUTE_IP} + ... ${EGRESS_ACL_TABLE} + ... ${BCAST_IP} + ... additional_args=| grep ${vm_submeta} + ${output} = OpenStackOperations.Execute Command on VM Instance + ... ${NETWORKS}[0] + ... ${vm_ip} + ... ping -c ${PACKET_COUNT} ${BCAST_IP} + IF '${ping_response}'=='pingsuccess' + BuiltIn.Should Contain ${output} ${PING_REGEXP} + ELSE + BuiltIn.Should Contain ${output} ${NO_PING_REGEXP} + END + ${bcast_egress} = Utils.Run Command On Remote System And Log + ... ${OS_COMPUTE_IP} + ... ${DUMP_FLOW} | grep table=${EGRESS_ACL_TABLE} | grep ${BCAST_IP} ${additional_args} + ${get_pkt_count_after_bcast} = OvsManager.Get Packet Count In Table For IP + ... ${OS_COMPUTE_IP} + ... ${EGRESS_ACL_TABLE} + ... ${BCAST_IP} + ... additional_args=| grep ${vm_submeta} ${pkt_diff} = Evaluate int(${get_pkt_count_after_bcast})-int(${get_pkt_count_before_bcast}) BuiltIn.Should Be Equal As Numbers ${pkt_diff} ${pkt_check}