X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fopenstack%2Fextensions%2Fsfc.robot;h=0634aa340c1cd390a460d790231e38fd96b2876a;hb=4634d5bdc188c5ef1edc72cc185ebf61ec8912ae;hp=27eb9d5f729d7e99714e46d01c8db4ce037b2b92;hpb=3a9cc698b0fc2c2081cbc85de0537fd5dfa9b542;p=integration%2Ftest.git diff --git a/csit/suites/openstack/extensions/sfc.robot b/csit/suites/openstack/extensions/sfc.robot index 27eb9d5f72..0634aa340c 100644 --- a/csit/suites/openstack/extensions/sfc.robot +++ b/csit/suites/openstack/extensions/sfc.robot @@ -1,10 +1,10 @@ *** 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 Close All Connections +Suite Setup OpenStackOperations.OpenStack Suite Setup +Suite Teardown OpenStackOperations.OpenStack Suite Teardown Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing -Test Teardown Get Test Teardown Debugs +Test Teardown BuiltIn.Run Keywords OpenStackOperations.Get Test Teardown Debugs +... AND OpenStackOperations.Get Test Teardown Debugs For SFC Library SSHLibrary Library OperatingSystem Library RequestsLibrary @@ -16,21 +16,21 @@ 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 +@{NETWORKS} network_1 +@{SUBNETS} l2_subnet_1 +@{NET_1_VMS} sf1 sf2 sf3 source_vm dest_vm +@{SUBNET_CIDRS} 30.0.0.0/24 @{PORTS} p1in p1out p2in p2out p3in p3out source_vm_port ... dest_vm_port *** Test Cases *** -Create VXLAN Network (network_1) +Create VXLAN Network net_1 [Documentation] Create Network with neutron request. - Create Network @{NETWORKS_NAME}[0] + OpenStackOperations.Create Network @{NETWORKS}[0] -Create Subnets For network_1 +Create Subnets For net_1 [Documentation] Create Sub Nets for the Networks with neutron request. - Create SubNet @{NETWORKS_NAME}[0] @{SUBNETS_NAME}[0] @{SUBNETS_RANGE}[0] + OpenStackOperations.Create SubNet @{NETWORKS}[0] @{SUBNETS}[0] @{SUBNET_CIDRS}[0] Add Allow All Rules [Documentation] Allow all TCP/UDP/ICMP packets for this suite @@ -39,7 +39,7 @@ Add Allow All Rules 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} + \ OpenStackOperations.Create Port @{NETWORKS}[0] ${port} sg=${SECURITY_GROUP} Create Vm Instances [Documentation] Create Four Vm instances using flavor and image names for a network. @@ -50,93 +50,71 @@ Create Vm Instances Create Vm Instance With Port dest_vm_port dest_vm sg=${SECURITY_GROUP} Check Vm Instances Have Ip Address - [Documentation] Test case to verify that all created VMs are ready and have received their ip addresses. - ... We are polling first and longest on the last VM created assuming that if it's received it's address - ... already the other instances should have theirs already or at least shortly thereafter. - # first, ensure all VMs are in ACTIVE state. if not, we can just fail the test case and not waste time polling - # for dhcp addresses - : FOR ${vm} IN @{VM_INSTANCES} - \ Poll VM Is ACTIVE ${vm} - ${status} ${message} Run Keyword And Ignore Error Wait Until Keyword Succeeds 60s 5s Collect VM IP Addresses - ... true @{VM_INSTANCES} - ${NET1_VM_IPS} ${NET1_DHCP_IP} Collect VM IP Addresses false @{VM_INSTANCES} - ${VM_INSTANCES}= Collections.Combine Lists ${VM_INSTANCES} - ${VM_IPS}= Collections.Combine Lists ${NET1_VM_IPS} - ${LOOP_COUNT} Get Length ${VM_INSTANCES} - : FOR ${index} IN RANGE 0 ${LOOP_COUNT} - \ ${status} ${message} Run Keyword And Ignore Error Should Not Contain @{VM_IPS}[${index}] None - \ Run Keyword If '${status}' == 'FAIL' Write Commands Until Prompt nova console-log @{VM_INSTANCES}[${index}] 30s - Set Suite Variable ${NET1_VM_IPS} - Should Not Contain ${NET1_VM_IPS} None - Should Not Contain ${NET1_DHCP_IP} None - [Teardown] Run Keywords Show Debugs @{VM_INSTANCES} - ... AND Get Test Teardown Debugs + @{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 Create Flow Classifiers [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_http @{NET1_VM_IPS}[3] @{NET1_VM_IPS}[4] tcp 80 source_vm_port Create Port Pairs [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 PP1 p1in p1out + OpenStackOperations.Create SFC Port Pair PP2 p2in p2out + OpenStackOperations.Create SFC Port Pair PP3 p3in p3out 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 + 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 - Create SFC Port Chain PC1 PG1 PG2 FC_http + 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 - 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 & + 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 - \ Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo sh -c 'echo "auto eth1" >> /etc/network/interfaces' - \ Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo sh -c 'echo "iface eth1 inet dhcp" >> /etc/network/interfaces' - \ Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo /etc/init.d/S40network restart - \ Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' - \ Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[${INDEX}] sudo ip route add @{NET1_VM_IPS}[3] dev eth0 - \ 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 + : 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} Create List @{NET1_VM_IPS}[4] - Test Operations From Vm Instance network_1 @{NET1_VM_IPS}[3] ${DEST_VM_LIST} - Execute Command on VM Instance @{NETWORKS_NAME}[0] @{NET1_VM_IPS}[3] curl http://@{NET1_VM_IPS}[4] - -Delete Vm Instances In network_1 - [Documentation] Delete Vm instances using instance names in network_1. - : FOR ${VmElement} IN @{VM_INSTANCES} - \ Delete Vm Instance ${VmElement} - -Delete All SFC Objects - [Documentation] Delete all previously created SFC objects - 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 - -Delete Neutron Ports - [Documentation] Delete neutron ports that were used for SFC VMs + ${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 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 ${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 : FOR ${port} IN @{PORTS} - \ Delete Port ${port} - -Delete Sub Networks In network_1 - [Documentation] Delete Sub Nets for the Networks with neutron request. - Delete SubNet l2_subnet_1 - -Delete Networks - [Documentation] Delete Networks with neutron request. - : FOR ${NetworkElement} IN @{NETWORKS_NAME} - \ Delete Network ${NetworkElement} + \ OpenStackOperations.Delete Port ${port} + OpenStackOperations.Delete SubNet l2_subnet_1 + : FOR ${network} IN @{NETWORKS} + \ OpenStackOperations.Delete Network ${network} + OpenStackOperations.Delete SecurityGroup ${SECURITY_GROUP}