X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fopenstack%2Fextensions%2Fsfc.robot;h=f01fad72b927f29f264864f99a5d5b80637d0fbd;hb=c6740c77a4706a11379d2b074fc5d380a610d9af;hp=1c7c4f3a5820695aa88fa9afa7f192692a6aec21;hpb=3172e521393a1b80e6206fdbb8f3378a2312fe89;p=integration%2Ftest.git diff --git a/csit/suites/openstack/extensions/sfc.robot b/csit/suites/openstack/extensions/sfc.robot index 1c7c4f3a58..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 @@ -18,106 +17,260 @@ Resource ../../../libraries/KarafKeywords.robot *** Variables *** ${SECURITY_GROUP} sg-sfc -@{NETWORKS_NAME} network_1 -@{SUBNETS_NAME} l2_subnet_1 -@{VM_INSTANCES} sf1 sf2 sf3 source_vm dest_vm -@{SUBNETS_RANGE} 30.0.0.0/24 -@{PORTS} p1in p1out p2in p2out p3in p3out source_vm_port -... dest_vm_port +@{NETWORKS} network_1 +@{SUBNETS} l2_subnet_1 +@{NET_1_VMS} sf1 sourcevm destvm +@{NON_SF_VMS} sourcevm destvm +@{SUBNET_CIDRS} 30.0.0.0/24 +@{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 (network_1) - [Documentation] Create Network with neutron request. - Create Network @{NETWORKS_NAME}[0] - -Create Subnets For network_1 - [Documentation] Create Sub Nets for the Networks with neutron request. - Create SubNet @{NETWORKS_NAME}[0] @{SUBNETS_NAME}[0] @{SUBNETS_RANGE}[0] - -Add Allow All Rules - [Documentation] Allow all TCP/UDP/ICMP packets for this suite - OpenStackOperations.Create Allow All SecurityGroup ${SECURITY_GROUP} - -Create Neutron Ports - [Documentation] Precreate neutron ports to be used for SFC VMs - : FOR ${port} IN @{PORTS} - \ Create Port @{NETWORKS_NAME}[0] ${port} sg=${SECURITY_GROUP} - -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} - -Check Vm Instances Have Ip Address - @{NET1_VM_IPS} ${NET1_DHCP_IP} = OpenStackOperations.Get VM IPs @{VM_INSTANCES} - 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 @{VM_INSTANCES} - ... AND OpenStackOperations.Get Test Teardown Debugs - -Create Flow Classifiers +Create Flow Classifiers For Basic Test [Documentation] Create SFC Flow Classifier for TCP traffic between source VM and destination VM - Create SFC Flow Classifier FC_http @{NET1_VM_IPS}[3] @{NET1_VM_IPS}[4] tcp 80 source_vm_port + 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 Port Pairs +Create Port Pair [Documentation] Create SFC Port Pairs - Create SFC Port Pair PP1 p1in p1out - Create SFC Port Pair PP2 p2in p2out - Create SFC Port Pair PP3 p3in p3out + OpenStackOperations.Create SFC Port Pair SFPP1 p1in p1out Create Port Pair Groups [Documentation] Create SFC Port Pair Groups - Create SFC Port Pair Group With Two Pairs PG1 PP1 PP2 - Create SFC Port Pair Group PG2 PP3 - -Create Port Chain - [Documentation] Create SFC Port Chain using two port groups an classifier created previously - 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_NAME}[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_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo sh -c 'echo "auto eth1" >> /etc/network/interfaces' - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo sh -c 'echo "iface eth1 inet dhcp" >> /etc/network/interfaces' - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo /etc/init.d/S40network restart - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo ip route add @{NET1_VM_IPS}[3] dev eth0 - \ OpenStackOperations.Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo ip route add @{NET1_VM_IPS}[4] dev eth1 - -Connectivity Tests From Vm Instance1 In network_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] - Test Operations From Vm Instance network_1 @{NET1_VM_IPS}[3] ${DEST_VM_LIST} - OpenStackOperations.Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[3] curl http://@{NET1_VM_IPS}[4] + OpenStackOperations.Create SFC Port Pair Group SFPPG1 SFPP1 + +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 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 + +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 + +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 + +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 + +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 ... of the Suite Teardown, all steps will be attempted. This prevents robot framework from bailing ... on the rest of a test case if one step intermittently has trouble and fails. The goal is to attempt ... to leave the test environment as clean as possible upon completion of this suite. - : FOR ${VmElement} IN @{VM_INSTANCES} - \ Delete Vm Instance ${VmElement} - Delete SFC Port Chain PC1 - Delete SFC Port Pair Group PG1 - Delete SFC Port Pair Group PG2 - Delete SFC Port Pair PP1 - Delete SFC Port Pair PP2 - Delete SFC Port Pair PP3 - Delete SFC Flow Classifier FC_http + : FOR ${vm} IN @{NET_1_VMS} + \ OpenStackOperations.Delete Vm Instance ${vm} + 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} - \ Delete Port ${port} - Delete SubNet l2_subnet_1 - : FOR ${NetworkElement} IN @{NETWORKS_NAME} - \ Delete Network ${NetworkElement} - Delete SecurityGroup ${SECURITY_GROUP} + \ 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}