X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fopenstack%2Fextensions%2Fsfc.robot;h=f01fad72b927f29f264864f99a5d5b80637d0fbd;hb=c6740c77a4706a11379d2b074fc5d380a610d9af;hp=a4606074ba7a9076fd6f052e78dbbc92f4030bbf;hpb=7cc59f4fa1b6750cb1e122efa5fd1cbcb2da54fd;p=integration%2Ftest.git diff --git a/csit/suites/openstack/extensions/sfc.robot b/csit/suites/openstack/extensions/sfc.robot index a4606074ba..f01fad72b9 100644 --- a/csit/suites/openstack/extensions/sfc.robot +++ b/csit/suites/openstack/extensions/sfc.robot @@ -1,9 +1,7 @@ *** Settings *** Documentation Test suite to verify SFC configuration and packet flows. -Suite Setup BuiltIn.Run Keywords SetupUtils.Setup_Utils_For_Setup_And_Teardown -... AND DevstackUtils.Devstack Suite Setup -Suite Teardown BuiltIn.Run Keywords Delete Configurations -... AND Close All Connections +Suite Setup Suite Setup +Suite Teardown OpenStackOperations.OpenStack Suite Teardown Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing Test Teardown BuiltIn.Run Keywords OpenStackOperations.Get Test Teardown Debugs ... AND OpenStackOperations.Get Test Teardown Debugs For SFC @@ -11,6 +9,7 @@ Library SSHLibrary Library OperatingSystem Library RequestsLibrary Resource ../../../libraries/DevstackUtils.robot +Resource ../../../libraries/LiveMigration.robot Resource ../../../libraries/OpenStackOperations.robot Resource ../../../libraries/SetupUtils.robot Resource ../../../libraries/Utils.robot @@ -20,86 +19,150 @@ Resource ../../../libraries/KarafKeywords.robot ${SECURITY_GROUP} sg-sfc @{NETWORKS} network_1 @{SUBNETS} l2_subnet_1 -@{NET_1_VMS} sf1 sf2 sf3 source_vm dest_vm +@{NET_1_VMS} sf1 sourcevm destvm +@{NON_SF_VMS} sourcevm destvm @{SUBNET_CIDRS} 30.0.0.0/24 -@{PORTS} p1in p1out p2in p2out p3in p3out source_vm_port -... dest_vm_port +@{PORTS} p1in p1out source_vm_port dest_vm_port +${NC_COMMAND} nc -zv -w 5 +${RES_SUCCESS} open +${RES_FAILURE} Operation timed out +${WEBSERVER_80} python -m SimpleHTTPServer 80 > /dev/null 2>&1 & +${WEBSERVER_81} python -m SimpleHTTPServer 81 > /dev/null 2>&1 & +${WEBSERVER_82} python -m SimpleHTTPServer 82 > /dev/null 2>&1 & +${CLOUD_IMAGE} "https://artifacts.opnfv.org/sfc/images/sfc_nsh_fraser.qcow2" +${CLOUD_IMAGE_NAME} sfc_nsh_fraser +${CLOUD_FLAVOR_NAME} sfc_nsh_fraser +@{NETVIRT_DIAG_SERVICES} OPENFLOW IFM ITM DATASTORE ELAN +${ETH_IN} eth0 +${ETH_OUT} eth1 +${CLOUD_IMAGE_USER} root +${CLOUD_IMAGE_PASS} opnfv +${CLOULD_IMAGE_CONSOLE} root *** Test Cases *** -Create VXLAN Network net_1 - [Documentation] Create Network with neutron request. - OpenStackOperations.Create Network @{NETWORKS}[0] +Create Flow Classifiers For Basic Test + [Documentation] Create SFC Flow Classifier for TCP traffic between source VM and destination VM + OpenStackOperations.Create SFC Flow Classifier FC_80 @{NET1_VM_IPS}[0] @{NET1_VM_IPS}[1] tcp source_vm_port args=--destination-port 80:80 + OpenStackOperations.Create SFC Flow Classifier FC_81 @{NET1_VM_IPS}[0] @{NET1_VM_IPS}[1] tcp source_vm_port args=--destination-port 81:81 -Create Subnets For net_1 - [Documentation] Create Sub Nets for the Networks with neutron request. - OpenStackOperations.Create SubNet @{NETWORKS}[0] @{SUBNETS}[0] @{SUBNET_CIDRS}[0] +Create Port Pair + [Documentation] Create SFC Port Pairs + OpenStackOperations.Create SFC Port Pair SFPP1 p1in p1out -Add Allow All Rules - [Documentation] Allow all TCP/UDP/ICMP packets for this suite - OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP} +Create Port Pair Groups + [Documentation] Create SFC Port Pair Groups + OpenStackOperations.Create SFC Port Pair Group SFPPG1 SFPP1 -Create Neutron Ports - [Documentation] Precreate neutron ports to be used for SFC VMs - : FOR ${port} IN @{PORTS} - \ OpenStackOperations.Create Port @{NETWORKS}[0] ${port} sg=${SECURITY_GROUP} +Test Communication From Vm Instance1 In net_1 No SF + [Documentation] Login to the source VM instance, and send a nc req to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for nc to be higher. + ${DEST_VM_LIST} BuiltIn.Create List @{NET1_VM_IPS}[1] + ${nc_resp} OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} @{NET1_VM_IPS}[1] 80 user=${CLOUD_IMAGE_USER} password=${CLOUD_IMAGE_PASS} + ... console=${CLOULD_IMAGE_CONSOLE} + BuiltIn.Should Contain ${nc_resp} ${RES_SUCCESS} + ${nc_resp} OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} @{NET1_VM_IPS}[1] 81 user=${CLOUD_IMAGE_USER} password=${CLOUD_IMAGE_PASS} + ... console=${CLOULD_IMAGE_CONSOLE} + BuiltIn.Should Contain ${nc_resp} ${RES_SUCCESS} + [Teardown] BuiltIn.Run Keywords OpenStackOperations.Get Test Teardown Debugs + ... AND OpenStackOperations.Get Test Teardown Debugs For SFC + ... AND OpenStackOperations.Exit From Vm Console -Create Vm Instances - [Documentation] Create Four Vm instances using flavor and image names for a network. - Create Vm Instance With Ports p1in p1out sf1 sg=${SECURITY_GROUP} - Create Vm Instance With Ports p2in p2out sf2 sg=${SECURITY_GROUP} - Create Vm Instance With Ports p3in p3out sf3 sg=${SECURITY_GROUP} - Create Vm Instance With Port source_vm_port source_vm sg=${SECURITY_GROUP} - Create Vm Instance With Port dest_vm_port dest_vm sg=${SECURITY_GROUP} +Create Port Chain For Src->Dest Port 80 + [Documentation] Create SFC Port Chain using port group and classifier created previously + OpenStackOperations.Create SFC Port Chain SFPC1 args=--port-pair-group SFPPG1 --flow-classifier FC_80 -Check Vm Instances Have Ip Address - @{NET1_VM_IPS} ${NET1_DHCP_IP} = OpenStackOperations.Get VM IPs @{NET_1_VMS} - BuiltIn.Set Suite Variable @{NET1_VM_IPS} - BuiltIn.Should Not Contain ${NET1_VM_IPS} None - BuiltIn.Should Not Contain ${NET1_DHCP_IP} None - [Teardown] BuiltIn.Run Keywords OpenStackOperations.Show Debugs @{NET_1_VMS} - ... AND OpenStackOperations.Get Test Teardown Debugs +Test Communication From Vm Instance1 In net_1 Port 80 via SF + [Documentation] Login to the source VM instance, and send a nc req to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for nc to be higher. + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 80 ${RES_SUCCESS} + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 81 ${RES_SUCCESS} + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 80 + BuiltIn.Comment Port 80 communication should fail as the SF blocks the same + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 80 ${RES_FAILURE} + BuiltIn.Comment Test to confirm Port 81 is not blocked + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 81 ${RES_SUCCESS} + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 81 + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 80 ${RES_SUCCESS} + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 81 ${RES_SUCCESS} + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + [Teardown] BuiltIn.Run Keywords OpenStackOperations.Get Test Teardown Debugs + ... AND OpenStackOperations.Get Test Teardown Debugs For SFC + ... AND OpenStackOperations.Exit From Vm Console -Create Flow Classifiers - [Documentation] Create SFC Flow Classifier for TCP traffic between source VM and destination VM - OpenStackOperations.Create SFC Flow Classifier FC_http @{NET1_VM_IPS}[3] @{NET1_VM_IPS}[4] tcp 80 source_vm_port +Update Port Chain To Use Flow Classifier For Port 81 + [Documentation] Update Port Chain to use FC_81 instead of FC_80 + OpenStackOperations.Update SFC Port Chain With A New Flow Classifier SFPC1 FC_81 + OpenStackOperations.Update SFC Port Chain Removing A Flow Classifier SFPC1 FC_80 -Create Port Pairs - [Documentation] Create SFC Port Pairs - OpenStackOperations.Create SFC Port Pair PP1 p1in p1out - OpenStackOperations.Create SFC Port Pair PP2 p2in p2out - OpenStackOperations.Create SFC Port Pair PP3 p3in p3out +Test Communication From Vm Instance1 In net_1 Port 81 via SF + [Documentation] Login to the source VM instance, and send a nc req to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for nc to be higher. + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 80 ${RES_SUCCESS} + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 81 ${RES_SUCCESS} cmd_timeout=60s + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 81 + BuiltIn.Comment Port 81 communication should fail as the SF blocks the same + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 80 ${RES_SUCCESS} + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 81 ${RES_FAILURE} cmd_timeout=60s + BuiltIn.Comment Test to confirm Port 80 does not continue to get routed through SF + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 80 + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 80 ${RES_SUCCESS} + Wait Until Keyword Succeeds 3x 10s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} + ... 81 ${RES_SUCCESS} cmd_timeout=60s + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + [Teardown] BuiltIn.Run Keywords OpenStackOperations.Get Test Teardown Debugs + ... AND OpenStackOperations.Get Test Teardown Debugs For SFC + ... AND OpenStackOperations.Exit From Vm Console -Create Port Pair Groups - [Documentation] Create SFC Port Pair Groups - OpenStackOperations.Create SFC Port Pair Group With Two Pairs PG1 PP1 PP2 - OpenStackOperations.Create SFC Port Pair Group PG2 PP3 - -Create Port Chain - [Documentation] Create SFC Port Chain using two port groups an classifier created previously - OpenStackOperations.Create SFC Port Chain PC1 PG1 PG2 FC_http - -Start Web Server On Destination VM - [Documentation] Start a simple web server on the destination VM - OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[4] while true; do echo -e "HTTP/1.0 200 OK\r\nContent-Length: 21\r\n\r\nWelcome to web-server" | sudo nc -l -p 80 ; done & - -Add Static Routing On Service Function VMs - [Documentation] Enable eth1 and add static routing between the ports on the SF VMs - : FOR ${index} IN RANGE 0 2 - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[${index}] sudo sh -c 'echo "auto eth1" >> /etc/network/interfaces' - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[${index}] sudo sh -c 'echo "iface eth1 inet dhcp" >> /etc/network/interfaces' - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[${index}] sudo /etc/init.d/S40network restart - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[${index}] sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[${index}] sudo ip route add @{NET1_VM_IPS}[3] dev eth0 - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[${index}] sudo ip route add @{NET1_VM_IPS}[4] dev eth1 - -Connectivity Tests From Vm Instance1 In net_1 - [Documentation] Login to the source VM instance, and send a HTTP GET using curl to the destination VM instance - # FIXME need to somehow verify it goes through SFs (flows?) - ${DEST_VM_LIST} BuiltIn.Create List @{NET1_VM_IPS}[4] - OpenStackOperations.Test Operations From Vm Instance @{NETWORKS}[0] @{NET1_VM_IPS}[3] ${DEST_VM_LIST} - OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[3] curl http://@{NET1_VM_IPS}[4] +Delete And Recreate Port Chain And Flow Classifiers For Symmetric Test + OpenStackOperations.Create SFC Flow Classifier FC_SYM @{NET1_VM_IPS}[0] @{NET1_VM_IPS}[1] tcp source_vm_port args=--destination-port 82:82 --source-port 2000 --logical-destination-port dest_vm_port + OpenStackOperations.Delete SFC Port Chain SFPC1 + OpenStackOperations.Create SFC Port Chain SFPSYM args=--port-pair-group SFPPG1 --flow-classifier FC_SYM --chain-parameters symmetric=true + +Test Communication From Vm Instance1 For Symmetric Chain + [Documentation] Login to the source VM instance, and send a nc req to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for nc to be higher. + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off + Wait Until Keyword Succeeds 8x 20s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} -p 2000 + ... 82 ${RES_SUCCESS} cmd_timeout=80s + BuiltIn.Comment Test to confirm the SRC->DEST Port 82 is routed through SF + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off --block 82 + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off + Wait Until Keyword Succeeds 8x 20s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} -p 2000 + ... 82 ${RES_FAILURE} cmd_timeout=80s + BuiltIn.Comment Test to confirm DEST->SRC Port 2000 path SFC traversal + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off --block 2000 + Wait Until Keyword Succeeds 8x 20s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} -p 2000 + ... 82 ${RES_FAILURE} cmd_timeout=80s + BuiltIn.Comment Test to confirm the Normalcy restored + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_IN} --output ${ETH_OUT} --verbose off + Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ${ETH_OUT} --output ${ETH_IN} --verbose off + Wait Until Keyword Succeeds 8x 20s Check Network Reachability @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${NC_COMMAND} -p 2000 + ... 82 ${RES_SUCCESS} cmd_timeout=80s + Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} + [Teardown] BuiltIn.Run Keywords OpenStackOperations.Get Test Teardown Debugs + ... AND OpenStackOperations.Get Test Teardown Debugs For SFC + ... AND OpenStackOperations.Exit From Vm Console -*** Keywords *** Delete Configurations [Documentation] Delete all elements that were created in the test case section. These are done ... in a local keyword so this can be called as part of the Suite Teardown. When called as part @@ -108,16 +171,106 @@ Delete Configurations ... to leave the test environment as clean as possible upon completion of this suite. : FOR ${vm} IN @{NET_1_VMS} \ OpenStackOperations.Delete Vm Instance ${vm} - OpenStackOperations.Delete SFC Port Chain PC1 - OpenStackOperations.Delete SFC Port Pair Group PG1 - OpenStackOperations.Delete SFC Port Pair Group PG2 - OpenStackOperations.Delete SFC Port Pair PP1 - OpenStackOperations.Delete SFC Port Pair PP2 - OpenStackOperations.Delete SFC Port Pair PP3 - OpenStackOperations.Delete SFC Flow Classifier FC_http + OpenStackOperations.Delete SFC Port Chain SFPSYM + OpenStackOperations.Delete SFC Port Pair Group SFPPG1 + OpenStackOperations.Delete SFC Port Pair SFPP1 + OpenStackOperations.Delete SFC Flow Classifier FC_80 + OpenStackOperations.Delete SFC Flow Classifier FC_81 + OpenStackOperations.Delete SFC Flow Classifier FC_SYM : FOR ${port} IN @{PORTS} \ OpenStackOperations.Delete Port ${port} OpenStackOperations.Delete SubNet l2_subnet_1 : FOR ${network} IN @{NETWORKS} \ OpenStackOperations.Delete Network ${network} OpenStackOperations.Delete SecurityGroup ${SECURITY_GROUP} + +*** Keywords *** +Suite Setup + OpenStackOperations.OpenStack Suite Setup + Create Basic Networks + Create Ports For Testing + Create Instances For Testing + Check Vm Instances Have Ip Address And Ready For Test + Start Applications on VM Instances For Test + +Create Basic Networks + BuiltIn.Comment Create Network For Testing + OpenStackOperations.Create Network @{NETWORKS}[0] + BuiltIn.Comment Create Subnet For Testing + OpenStackOperations.Create SubNet @{NETWORKS}[0] @{SUBNETS}[0] @{SUBNET_CIDRS}[0] + OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP} + BuiltIn.Comment Create Neutron Ports with no port security for SFC Tests + OpenStackOperations.Get Suite Debugs + +Create Ports For Testing + : FOR ${port} IN @{PORTS} + \ OpenStackOperations.Create Port @{NETWORKS}[0] ${port} sg=${SECURITY_GROUP} + OpenStackOperations.Update Port p1in additional_args=--no-security-group + OpenStackOperations.Update Port p1in additional_args=--disable-port-security + OpenStackOperations.Update Port p1out additional_args=--no-security-group + OpenStackOperations.Update Port p1out additional_args=--disable-port-security + CompareStream.Run_Keyword_If_Equals oxygen OpenStackOperations.Update Port source_vm_port additional_args=--no-security-group + CompareStream.Run_Keyword_If_Equals oxygen OpenStackOperations.Update Port source_vm_port additional_args=--disable-port-security + CompareStream.Run_Keyword_If_Equals oxygen OpenStackOperations.Update Port dest_vm_port additional_args=--no-security-group + CompareStream.Run_Keyword_If_Equals oxygen OpenStackOperations.Update Port dest_vm_port additional_args=--disable-port-security + OpenStackOperations.Get Suite Debugs + +Create Instances For Testing + ${SF_COMP_HOST} = BuiltIn.Set Variable If 2 < ${NUM_OS_SYSTEM} ${OS_CMP2_HOSTNAME} ${OS_CMP1_HOSTNAME} + OpenStackOperations.Add New Image From Url ${CLOUD_IMAGE} ${CLOUD_IMAGE_NAME} + OpenStackOperations.Create Flavor ${CLOUD_FLAVOR_NAME} 512 1 + OpenStackOperations.Create Vm Instance With Ports On Compute Node p1in p1out sf1 ${SF_COMP_HOST} image=${CLOUD_IMAGE_NAME} flavor=${CLOUD_FLAVOR_NAME} + ... sg=${SECURITY_GROUP} + OpenStackOperations.Create Vm Instance With Port On Compute Node source_vm_port sourcevm ${OS_CMP1_HOSTNAME} image=${CLOUD_IMAGE_NAME} flavor=${CLOUD_FLAVOR_NAME} sg=${SECURITY_GROUP} + OpenStackOperations.Create Vm Instance With Port On Compute Node dest_vm_port destvm ${OS_CMP1_HOSTNAME} image=${CLOUD_IMAGE_NAME} flavor=${CLOUD_FLAVOR_NAME} sg=${SECURITY_GROUP} + OpenStackOperations.Show Debugs @{NET_1_VMS} + OpenStackOperations.Get Suite Debugs + +Check Vm Instances Have Ip Address And Ready For Test + OpenStackOperations.Poll VM Is ACTIVE sf1 + OpenStackOperations.Poll VM Is ACTIVE sourcevm + OpenStackOperations.Poll VM Is ACTIVE destvm + ${sfc1_mac} OpenStackOperations.Get Port Mac p1in + ${SF1_IP} OpenStackOperations.Get Port Ip p1in + BuiltIn.Wait Until Keyword Succeeds 500s 60s OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace @{NETWORKS}[0] ${sfc1_mac} ${SF1_IP} + ${src_mac} OpenStackOperations.Get Port Mac source_vm_port + ${src_ip} OpenStackOperations.Get Port Ip source_vm_port + BuiltIn.Wait Until Keyword Succeeds 500s 60s OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace @{NETWORKS}[0] ${src_mac} ${src_ip} + ${dest_mac} OpenStackOperations.Get Port Mac dest_vm_port + ${dest_ip} OpenStackOperations.Get Port Ip dest_vm_port + BuiltIn.Wait Until Keyword Succeeds 500s 60s OpenStackOperations.Verify If Instance Is Arpingable From Dhcp Namespace @{NETWORKS}[0] ${dest_mac} ${dest_ip} + BuiltIn.Comment If the Tests reach this point, all the Instances are reachable. + ${NET1_VM_IPS} BuiltIn.Create List ${src_ip} ${dest_ip} + BuiltIn.Set Suite Variable @{NET1_VM_IPS} + BuiltIn.Set Suite Variable ${SF1_IP} + BuiltIn.Set Suite Variable ${OS_SYSTEM_PROMPT} \# + BuiltIn.Wait Until Keyword Succeeds 300s 60s OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password @{NETWORKS}[0] ${SF1_IP} user=${CLOUD_IMAGE_USER} + ... password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + BuiltIn.Wait Until Keyword Succeeds 300s 60s OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password @{NETWORKS}[0] @{NET1_VM_IPS}[0] user=${CLOUD_IMAGE_USER} + ... password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + BuiltIn.Wait Until Keyword Succeeds 300s 60s OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password @{NETWORKS}[0] @{NET1_VM_IPS}[1] user=${CLOUD_IMAGE_USER} + ... password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + OpenStackOperations.Show Debugs @{NET_1_VMS} + OpenStackOperations.Get Suite Debugs + +Start Applications on VM Instances For Test + BuiltIn.Comment Run Web server Scripts on destination vm listening to 80,81 and 82 ports + OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[1] ${WEBSERVER_80} user=${CLOUD_IMAGE_USER} password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[1] ${WEBSERVER_81} user=${CLOUD_IMAGE_USER} password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[1] ${WEBSERVER_82} user=${CLOUD_IMAGE_USER} password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + +Start Vxlan Tool in SF + [Arguments] ${network} ${sf_vm_ip} ${args}=${EMPTY} + [Documentation] Starts the tool in the SF VM's + OpenStackOperations.Execute Command on VM Instance ${network} ${sf_vm_ip} nohup python vxlan_tool.py ${args} & user=${CLOUD_IMAGE_USER} password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + +Stop Vxlan Tool in SF + [Arguments] ${network} ${sf_vm_ip} + [Documentation] Starts the tool in the SF VM's + OpenStackOperations.Execute Command on VM Instance ${network} ${sf_vm_ip} pkill python user=${CLOUD_IMAGE_USER} password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + +Check Network Reachability + [Arguments] ${net_name} ${vm_ip} ${command} ${port} ${ret_code} ${cmd_timeout}=30s + ${nc_resp} OpenStackOperations.Execute Command on VM Instance ${net_name} ${vm_ip} ${command} @{NET1_VM_IPS}[1] ${port} cmd_timeout=${cmd_timeout} user=${CLOUD_IMAGE_USER} + ... password=${CLOUD_IMAGE_PASS} console=${CLOULD_IMAGE_CONSOLE} + BuiltIn.Should Contain ${nc_resp} ${ret_code}