*** Settings ***
-Documentation Test suite to verify SFC configuration and packet flows.
-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
-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
-Resource ../../../libraries/KarafKeywords.robot
+Documentation Test suite to verify SFC configuration and packet flows.
+
+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
+Resource ../../../libraries/KarafKeywords.robot
+
+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
+
*** Variables ***
-${SECURITY_GROUP} sg-sfc
-@{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
-${CURL_COMMAND} curl -v --connect-timeout 25
-${HTTP_SUCCESS} 200 OK
-${HTTP_FAILURE} connect() timed out!
-${WEBSERVER_80} while true; do echo -e "HTTP/1.0 200 OK\r\nContent-Length: 21\r\n\r\nWelcome to web-server80" | sudo nc -l -p 80 ; done
-${WEBSERVER_81} while true; do echo -e "HTTP/1.0 200 OK\r\nContent-Length: 21\r\n\r\nWelcome to web-server81" | sudo nc -l -p 81 ; done
-${WEBSERVER_82} while true; do echo -e "HTTP/1.0 200 OK\r\nContent-Length: 21\r\n\r\nWelcome to web-server82" | sudo nc -l -p 82 ; done
-${CLOUD_IMAGE} "https://cloud-images.ubuntu.com/releases/18.04/release/ubuntu-18.04-server-cloudimg-amd64.img"
-${CLOUD_IMAGE_NAME} ubuntu
-${CLOUD_FLAVOR_NAME} ubuntu
-${CLOUD_USER_NAME} ubuntu
-${VXLAN_TOOL_URL} "https://git.opendaylight.org/gerrit/gitweb?p=sfc.git;a=blob_plain;f=sfc-test/nsh-tools/vxlan_tool.py;h=1445292405bc17516d03e4a448ac2e0f65d38e79;hb=HEAD"
+${SECURITY_GROUP} sg-sfc
+@{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 &)
+${WEBSERVER_83} (python -m SimpleHTTPServer 83 > /dev/null 2>&1 &)
+${WEBSERVER_84} (python -m SimpleHTTPServer 84 > /dev/null 2>&1 &)
+${WEBSERVER_85} (python -m SimpleHTTPServer 85 > /dev/null 2>&1 &)
+${WEBSERVER_100} (python -m SimpleHTTPServer 100 > /dev/null 2>&1 &)
+${WEBSERVER_101} (python -m SimpleHTTPServer 101 > /dev/null 2>&1 &)
+${WEBSERVER_102} (python -m SimpleHTTPServer 102 > /dev/null 2>&1 &)
+${WEBSERVER_103} (python -m SimpleHTTPServer 103 > /dev/null 2>&1 &)
+${WEBSERVER_CMDS}
+... ${WEBSERVER_80} && ${WEBSERVER_81} && ${WEBSERVER_82} && ${WEBSERVER_83} && ${WEBSERVER_84} && ${WEBSERVER_85} && ${WEBSERVER_100} && ${WEBSERVER_101} && ${WEBSERVER_102} && ${WEBSERVER_103}
+${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 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
+ 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
+ OpenStackOperations.Create SFC Flow Classifier
+ ... FC_83_85
+ ... ${NET1_VM_IPS}[0]
+ ... ${NET1_VM_IPS}[1]
+ ... tcp
+ ... source_vm_port
+ ... args=--destination-port 83:85
Create Port Pair
[Documentation] Create SFC Port Pairs
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 HTTP GET using curl to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for curl to be higher.
- ${DEST_VM_LIST} BuiltIn.Create List @{NET1_VM_IPS}[1]
- ${curl_resp} OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1]
- BuiltIn.Should Contain ${curl_resp} ${HTTP_SUCCESS}
- ${curl_resp} OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1]:81
- BuiltIn.Should Contain ${curl_resp} ${HTTP_SUCCESS}
+ [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
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 HTTP GET using curl to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for curl to be higher.
- Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ens2 --output ens3 --verbose off
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1] ${HTTP_SUCCESS}
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1]:81 ${HTTP_SUCCESS}
- Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP}
- Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ens2 --output ens3 --verbose off --block 80
+ [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 Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1] ${HTTP_FAILURE}
+ 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 Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1]:81 ${HTTP_SUCCESS}
- Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP}
- Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ens2 --output ens3 --verbose off --block 81
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1] ${HTTP_SUCCESS}
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1]:81 ${HTTP_SUCCESS}
- Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP}
+ 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_82 and FC_83 instead of FC_80 and FC_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 HTTP GET using curl to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for curl 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 ens2 --output ens3 --verbose off
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1] ${HTTP_SUCCESS}
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1]:81 ${HTTP_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 ens2 --output ens3 --verbose off --block 81
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1] ${HTTP_SUCCESS}
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1]:81 ${HTTP_FAILURE}
- ... cmd_timeout=60s
+ [Documentation] Login to the source VM instance, and send a nc req to the destination VM instance.
+ 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}
+ 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}
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 ens2 --output ens3 --verbose off --block 80
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1] ${HTTP_SUCCESS}
- Wait Until Keyword Succeeds 3x 10s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} http://@{NET1_VM_IPS}[1]:81 ${HTTP_SUCCESS}
- ... cmd_timeout=60s
- Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP}
+ 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}
+ 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 Range 83-85
+ [Documentation] Update Port Chain to use FC_83_85
+ OpenStackOperations.Update SFC Port Chain With A New Flow Classifier SFPC1 FC_83_85
+
+Test Communication From Vm Instance1 In net_1 Port 84 And 85 via SF
+ [Documentation] Login to the source VM instance, and send a nc req to the destination VM instance.
+ 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}
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 84
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 85
+ ... ${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 83
+ BuiltIn.Comment Port 83 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}
+ ... 83
+ ... ${RES_FAILURE}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 84
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 85
+ ... ${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 84
+ BuiltIn.Comment Port 84 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}
+ ... 84
+ ... ${RES_FAILURE}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 85
+ ... ${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 85
+ BuiltIn.Comment Port 85 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}
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 84
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 85
+ ... ${RES_FAILURE}
+ 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}
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 84
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND}
+ ... 85
+ ... ${RES_SUCCESS}
+
+Update Port Chain To Use Flow Classifier For Input Port Range 101-103
+ [Documentation] Update Port Chain to use FC_101_103
+ BuiltIn.Comment Removing and Deleting Existing Conflicting Flow Classifiers
+ OpenStackOperations.Update SFC Port Chain Removing A Flow Classifier SFPC1 FC_81
+ OpenStackOperations.Update SFC Port Chain Removing A Flow Classifier SFPC1 FC_83_85
+ OpenStackOperations.Delete SFC Flow Classifier FC_80
+ OpenStackOperations.Delete SFC Flow Classifier FC_81
+ OpenStackOperations.Delete SFC Flow Classifier FC_83_85
+ OpenStackOperations.Create SFC Flow Classifier
+ ... FC_101_103
+ ... ${NET1_VM_IPS}[0]
+ ... ${NET1_VM_IPS}[1]
+ ... tcp
+ ... source_vm_port
+ ... args=--source-port 101:103
+ OpenStackOperations.Update SFC Port Chain With A New Flow Classifier SFPC1 FC_101_103
+
+Test Communication From Vm Instance1 In net_1 Port 100 And 102 via SF
+ [Documentation] Login to the source VM instance, and send a nc req to the destination VM instance.
+ 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} -p 80
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 100
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 101
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 102
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 103
+ ... 83
+ ... ${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 83
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 80
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 100
+ ... 83
+ ... ${RES_SUCCESS}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 101
+ ... 83
+ ... ${RES_FAILURE}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 102
+ ... 83
+ ... ${RES_FAILURE}
+ Wait Until Keyword Succeeds
+ ... 3x
+ ... 10s
+ ... Check Network Reachability
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[0]
+ ... ${NC_COMMAND} -p 103
+ ... 83
+ ... ${RES_FAILURE}
+
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.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
+ 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 HTTP GET using curl to the destination VM instance, If the SF handles the traffic, there will be delay causing the time for curl 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 ens2 --output ens3 --verbose off
- Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ens3 --output ens2 --verbose off
- Wait Until Keyword Succeeds 8x 20s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} --local-port 2000 -m 60 http://@{NET1_VM_IPS}[1]:82 ${HTTP_SUCCESS}
- ... cmd_timeout=80s
+ [Documentation] Login to the source VM instance, and send a nc req to the destination VM instance.
+ 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}
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 ens2 --output ens3 --verbose off --block 82
- Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ens3 --output ens2 --verbose off
- Wait Until Keyword Succeeds 8x 20s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} --local-port 2000 -m 60 http://@{NET1_VM_IPS}[1]:82 ${HTTP_FAILURE}
- ... cmd_timeout=80s
+ 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}
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 ens2 --output ens3 --verbose off
- Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ens3 --output ens2 --verbose off --block 2000
- Wait Until Keyword Succeeds 8x 20s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} --local-port 2000 -m 60 http://@{NET1_VM_IPS}[1]:82 ${HTTP_FAILURE}
- ... cmd_timeout=80s
+ 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}
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 ens2 --output ens3 --verbose off
- Start Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP} args=--do forward --interface ens3 --output ens2 --verbose off
- Wait Until Keyword Succeeds 8x 20s Access Http And Check Status @{NETWORKS}[0] ${CURL_COMMAND} --local-port 2000 -m 60 http://@{NET1_VM_IPS}[1]:82 ${HTTP_SUCCESS}
- ... cmd_timeout=80s
- Stop Vxlan Tool in SF @{NETWORKS}[0] ${SF1_IP}
+ 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}
+ 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
... 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 ${vm} IN @{NET_1_VMS}
- \ OpenStackOperations.Delete Vm Instance ${vm}
+ FOR ${vm} IN @{NET_1_VMS}
+ OpenStackOperations.Delete Vm Instance ${vm}
+ END
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_101_103
OpenStackOperations.Delete SFC Flow Classifier FC_SYM
- : FOR ${port} IN @{PORTS}
- \ OpenStackOperations.Delete Port ${port}
+ FOR ${port} IN @{PORTS}
+ OpenStackOperations.Delete Port ${port}
+ END
OpenStackOperations.Delete SubNet l2_subnet_1
- : FOR ${network} IN @{NETWORKS}
- \ OpenStackOperations.Delete Network ${network}
+ FOR ${network} IN @{NETWORKS}
+ OpenStackOperations.Delete Network ${network}
+ END
OpenStackOperations.Delete SecurityGroup ${SECURITY_GROUP}
+
*** Keywords ***
Suite Setup
OpenStackOperations.OpenStack Suite Setup
Create Basic Networks
BuiltIn.Comment Create Network For Testing
- OpenStackOperations.Create Network @{NETWORKS}[0]
+ OpenStackOperations.Create Network ${NETWORKS}[0]
BuiltIn.Comment Create Subnet For Testing
- OpenStackOperations.Create SubNet @{NETWORKS}[0] @{SUBNETS}[0] @{SUBNET_CIDRS}[0]
+ 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}
+ FOR ${port} IN @{PORTS}
+ OpenStackOperations.Create Port ${NETWORKS}[0] ${port} sg=${SECURITY_GROUP}
+ END
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
- BuiltIn.Comment Create one ubuntu instances and two cirros instances
+ ${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} 2048 4
- OpenStackOperations.Generate And Add Keypair sfctest odlsfctest
- OpenStackOperations.Create Vm Instance With Ports And Key On Compute Node p1in p1out sf1 ${OS_CMP1_HOSTNAME} image=${CLOUD_IMAGE_NAME} flavor=${CLOUD_FLAVOR_NAME}
- ... sg=${SECURITY_GROUP} keyname=sfctest
- OpenStackOperations.Create Vm Instance With Port On Compute Node source_vm_port sourcevm ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP} flavor=cirros256
- OpenStackOperations.Create Vm Instance With Port On Compute Node dest_vm_port destvm ${OS_CMP1_HOSTNAME} sg=${SECURITY_GROUP} flavor=cirros256
+ 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
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}
+ 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}
+ 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.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.Wait Until Keyword Succeeds 300s 60s OpenStackOperations.Check If Instance Is Ready For Ssh Login Using PublicKey @{NETWORKS}[0] ${SF1_IP} user=ubuntu
- ... idfile=/tmp/odlsfctest
- BuiltIn.Wait Until Keyword Succeeds 300s 60s OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password @{NETWORKS}[0] @{NET1_VM_IPS}[0]
- BuiltIn.Wait Until Keyword Succeeds 300s 60s OpenStackOperations.Check If Instance Is Ready For Ssh Login Using Password @{NETWORKS}[0] @{NET1_VM_IPS}[1]
+ 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} &
- OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[1] ${WEBSERVER_81} &
- OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[1] ${WEBSERVER_82} &
- BuiltIn.Comment Get vxlan_tool script
- Utils.Download File On Openstack Node ${OS_CNTL_CONN_ID} vxlan_tool.py ${VXLAN_TOOL_URL}
- BuiltIn.Comment Copy vxlan_tool script to SFC VM
- OpenStackOperations.Copy File To VM Instance With PublicKey Auth @{NETWORKS}[0] ${SF1_IP} /tmp/vxlan_tool.py user=${CLOUD_USER_NAME} idfile=/tmp/odlsfctest
- BuiltIn.Comment Bring up the second Interface for egress
- Execute Command on VM Instance with PublicKey Auth @{NETWORKS}[0] ${SF1_IP} sudo ifconfig ens3 up user=${CLOUD_USER_NAME} idfile=/tmp/odlsfctest
+ ${resp} OpenStackOperations.Execute Command on VM Instance
+ ... ${NETWORKS}[0]
+ ... ${NET1_VM_IPS}[1]
+ ... ${WEBSERVER_CMDS} && (echo done)
+ ... user=${CLOUD_IMAGE_USER}
+ ... password=${CLOUD_IMAGE_PASS}
+ ... console=${CLOULD_IMAGE_CONSOLE}
+ BuiltIn.Should Contain ${resp} done
Start Vxlan Tool in SF
- [Arguments] ${network} ${sf_vm_ip} ${args}=${EMPTY}
[Documentation] Starts the tool in the SF VM's
- Execute Command on VM Instance with PublicKey Auth ${network} ${sf_vm_ip} nohup sudo python3 /tmp/vxlan_tool.py ${args} & user=ubuntu idfile=/tmp/odlsfctest
+ [Arguments] ${network} ${sf_vm_ip} ${args}=${EMPTY}
+ 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
- Execute Command on VM Instance With PublicKey Auth ${network} ${sf_vm_ip} sudo pkill python3 user=ubuntu idfile=/tmp/odlsfctest
+ [Arguments] ${network} ${sf_vm_ip}
+ OpenStackOperations.Execute Command on VM Instance
+ ... ${network}
+ ... ${sf_vm_ip}
+ ... pkill python
+ ... user=${CLOUD_IMAGE_USER}
+ ... password=${CLOUD_IMAGE_PASS}
+ ... console=${CLOULD_IMAGE_CONSOLE}
-Access Http And Check Status
- [Arguments] ${vm_ip} ${curl_command} ${ret_code} ${cmd_timeout}=30s
- ${curl_resp} OpenStackOperations.Execute Command on VM Instance @{NETWORKS}[0] @{NET1_VM_IPS}[0] ${curl_command} cmd_timeout=${cmd_timeout}
- BuiltIn.Should Contain ${curl_resp} ${ret_code}
+Check Network Reachability
+ [Arguments] ${net_name} ${source_vm_ip} ${command} ${port} ${ret_code} ${cmd_timeout}=30s
+ ${nc_resp} OpenStackOperations.Execute Command on VM Instance
+ ... ${net_name}
+ ... ${source_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}