b8d5b01e9bc89acd6d0c037b3689025f76d1f640
[integration/test.git] / csit / suites / l2gw / 01_Configure_verify_l2gateway.robot
1 *** Settings ***
2 Documentation     Test Suite for verification of HWVTEP usecases
3 Suite Setup       BuiltIn.Run Keywords    Basic Suite Setup
4 Suite Teardown    Basic Suite Teardown
5 Test Teardown     Get L2gw Debug Info
6 Resource          ../../libraries/L2GatewayOperations.robot
7
8 *** Test Cases ***
9 TC01 Configure Hwvtep Manager OVS Manager Controller And Verify
10     L2GatewayOperations.Add Vtep Manager And Verify    ${ODL_IP}
11     L2GatewayOperations.Add Ovs Bridge Manager Controller And Verify
12
13 TC02 Create First Set Of Network Subnet And Ports
14     OpenStackOperations.Create Network    ${NET_1}    ${NET_ADDT_ARG} ${NET_1_SEGID}
15     ${output}=    OpenStackOperations.List Networks
16     Should Contain    ${output}    ${NET_1}
17     OpenStackOperations.Create SubNet    ${NET_1}    ${SUBNET_1}    ${SUBNET_RANGE1}    ${SUBNET_ADDT_ARG}
18     ${output}=    OpenStackOperations.List Subnets
19     Should Contain    ${output}    ${SUBNET_1}
20     OpenStackOperations.Create And Configure Security Group    ${SECURITY_GROUP_L2GW}
21     OpenStackOperations.Create Port    ${NET_1}    ${OVS_PORT_1}    sg=${SECURITY_GROUP_L2GW}
22     OpenStackOperations.Create Neutron Port With Additional Params    ${NET_1}    ${HWVTEP_PORT_1}    ${SECURITY_GROUP_L2GW_NONE}
23     ${port_mac}=    Get Port Mac    ${OVS_PORT_1}    #port_mac[0]
24     ${port_ip}=    Get Port Ip    ${OVS_PORT_1}    #port_ip[0]
25     Append To List    ${port_mac_list}    ${port_mac}
26     Append To List    ${port_ip_list}    ${port_ip}
27     ${port_mac}=    Get Port Mac    ${HWVTEP_PORT_1}    #port_mac[1]
28     ${port_ip}=    Get Port Ip    ${HWVTEP_PORT_1}    #port_ip[1]
29     Append To List    ${port_mac_list}    ${port_mac}
30     Append To List    ${port_ip_list}    ${port_ip}
31
32 TC03 Update Port For Hwvtep And Attach Port To Namespace
33     L2GatewayOperations.Update Port For Hwvtep    ${HWVTEP_PORT_1}
34     Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Attach Port To Hwvtep Namespace    ${port_mac_list[1]}    ${HWVTEP_NS1}    ${NS_TAP1}
35
36 TC04 Create Vms On Compute Node
37     OpenStackOperations.Create Nano Flavor
38     OpenStackOperations.Create Vm Instance With Port On Compute Node    ${OVS_PORT_1}    ${OVS_VM1_NAME}    ${OVS_IP}
39     ${vm_ip}=    Wait Until Keyword Succeeds    60s    2s    L2GatewayOperations.Verify Nova VM IP    ${OVS_VM1_NAME}
40     Log    ${vm_ip}
41     Should Contain    ${vm_ip[0]}    ${port_ip_list[0]}
42
43 TC05 Create L2Gateway And Connection And Verify
44     ${output}=    L2GatewayOperations.Create Verify L2Gateway    ${HWVTEP_BRIDGE}    ${NS_PORT1}    ${L2GW_NAME1}
45     Log    ${output}
46     ${output}=    Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Create Verify L2Gateway Connection    ${L2GW_NAME1}    ${NET_1}
47     Log    ${output}
48     Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Verify Ovs Tunnel    ${HWVTEP_IP}    ${OVS_IP}
49     ${output}=    ITM Get Tunnels
50     Log    ${output}
51     Should Contain    ${output}    physicalswitch/${HWVTEP_BRIDGE}
52     Wait Until Keyword Succeeds    30s    1s    L2GatewayOperations.Verify Vtep List    ${hwvtep_conn_id}    ${TUNNEL_TABLE}    enable="true"
53     ${phy_port_out}=    Get Vtep List    ${PHYSICAL_PORT_TABLE}
54     Validate Regexp In String    ${phy_port_out}    ${VLAN_BINDING_REGEX}    1
55     ${list}=    Create List    ${OVS_IP}    ${HWVTEP_IP}
56     Wait Until Keyword Succeeds    30s    1s    L2GatewayOperations.Verify Vtep List    ${hwvtep_conn_id}    ${PHYSICAL_LOCATOR_TABLE}    @{list}
57     Wait Until Keyword Succeeds    30s    1s    L2GatewayOperations.Verify Vtep List    ${hwvtep_conn_id}    ${UCAST_MACS_REMOTE_TABLE}    ${port_mac_list[0]}
58
59 TC06 Dhcp Ip Allocation For Hwvtep Tap Port
60     Wait Until Keyword Succeeds    180s    10s    L2GatewayOperations.Namespace Dhclient Verify    ${HWVTEP_NS1}    ${NS_TAP1}    ${port_ip_list[1]}
61
62 TC07 Verify Ping From Compute Node Vm To Hwvtep
63     ${output}=    Wait Until Keyword Succeeds    60s    10s    Execute Command on VM Instance    ${NET_1}    ${port_ip_list[0]}
64     ...    ping -c 3 ${port_ip_list[1]}
65     Log    ${output}
66     Should Not Contain    ${output}    ${PACKET_LOSS}
67     ${src_mac_list}=    Create List    ${port_mac_list[0]}
68     ${dst_mac_list}=    Create List    ${port_mac_list[1]}
69     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Elan Flow Entries    ${OVS_IP}    ${src_mac_list}    ${dst_mac_list}
70
71 TC08 Ping Verification From Namespace Tap To Ovs Vm
72     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Ping In Namespace Extra Timeout    ${HWVTEP_NS1}    ${port_mac_list[1]}    ${port_ip_list[0]}
73
74 TC09 Additional Network Subnet Port Creation
75     OpenStackOperations.Create Network    ${NET_2}    ${NET_ADDT_ARG} ${NET_2_SEGID}
76     ${output}=    OpenStackOperations.List Networks
77     Should Contain    ${output}    ${NET_2}
78     OpenStackOperations.Create SubNet    ${NET_2}    ${SUBNET_2}    ${SUBNET_RANGE2}    ${SUBNET_ADDT_ARG}
79     ${output}=    OpenStackOperations.List Subnets
80     Should Contain    ${output}    ${SUBNET_2}
81     OpenStackOperations.Create Port    ${NET_2}    ${OVS_PORT_2}    sg=${SECURITY_GROUP_L2GW}
82     OpenStackOperations.Create Neutron Port With Additional Params    ${NET_2}    ${HWVTEP_PORT_2}    ${SECURITY_GROUP_L2GW_NONE}
83     ${port_mac}=    Get Port Mac    ${OVS_PORT_2}    #port_mac[2]
84     ${port_ip}=    Get Port Ip    ${OVS_PORT_2}    #port_ip[2]
85     Append To List    ${port_mac_list}    ${port_mac}
86     Append To List    ${port_ip_list}    ${port_ip}
87     ${port_mac}=    Get Port Mac    ${HWVTEP_PORT_2}    #port_mac[3]
88     ${port_ip}=    Get Port Ip    ${HWVTEP_PORT_2}    #port_ip[3]
89     Append To List    ${port_mac_list}    ${port_mac}
90     Append To List    ${port_ip_list}    ${port_ip}
91
92 TC10 Update And Attach Second Port To Hwvtep Create L2gw Connection
93     L2GatewayOperations.Update Port For Hwvtep    ${HWVTEP_PORT_2}
94     Wait Until Keyword Succeeds    30s    2s    L2GatewayOperations.Attach Port To Hwvtep Namespace    ${port_mac_list[3]}    ${HWVTEP_NS2}    ${NS2_TAP1}
95     OpenStackOperations.Create Vm Instance With Port On Compute Node    ${OVS_PORT_2}    ${OVS_VM2_NAME}    ${OVS_IP}
96     ${vm_ip}=    Wait Until Keyword Succeeds    60s    2s    L2GatewayOperations.Verify Nova VM IP    ${OVS_VM2_NAME}
97     Log    ${vm_ip}
98     Should Contain    ${vm_ip[0]}    ${port_ip_list[2]}
99     ${output}=    L2GatewayOperations.Create Verify L2Gateway    ${HWVTEP_BRIDGE}    ${NS_PORT2}    ${L2GW_NAME2}
100     Log    ${output}
101     ${output}=    L2GatewayOperations.Create Verify L2Gateway Connection    ${L2GW_NAME2}    ${NET_2}
102     Log    ${output}
103     ${phy_port_out}=    Get Vtep List    ${PHYSICAL_PORT_TABLE}
104     Validate Regexp In String    ${phy_port_out}    ${VLAN_BINDING_REGEX}    2
105
106 TC11 Dhcp Ip Allocation And Ping Validation Within Second Network
107     Wait Until Keyword Succeeds    180s    10s    L2GatewayOperations.Namespace Dhclient Verify    ${HWVTEP_NS2}    ${NS2_TAP1}    ${port_ip_list[3]}
108     ${output}=    Wait Until Keyword Succeeds    60s    10s    Execute Command on VM Instance    ${NET_2}    ${port_ip_list[2]}
109     ...    ping -c 3 ${port_ip_list[3]}
110     Log    ${output}
111     Should Not Contain    ${output}    ${PACKET_LOSS}
112     ${src_mac_list}=    Create List    ${port_mac_list[2]}
113     ${dst_mac_list}=    Create List    ${port_mac_list[3]}
114     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Elan Flow Entries    ${OVS_IP}    ${src_mac_list}    ${dst_mac_list}
115     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Ping In Namespace Extra Timeout    ${HWVTEP_NS2}    ${port_mac_list[3]}    ${port_ip_list[2]}
116
117 TC12 Ping Between Vm In Second Network To Namespace In First Network
118     ${output}=    Wait Until Keyword Succeeds    60s    10s    Execute Command on VM Instance    ${NET_2}    ${port_ip_list[2]}
119     ...    ping -c 3 ${port_ip_list[1]}
120     Log    ${output}
121     Should Contain    ${output}    ${PACKET_LOSS}
122
123 TC13 Ping Between Namespace In Second Network To Vm In First Network
124     Wait Until Keyword Succeeds    30s    5s    L2GatewayOperations.Verify Ping Fails In Namespace    ${HWVTEP_NS2}    ${port_mac_list[3]}    ${port_ip_list[0]}
125
126 TC99 Cleanup L2Gateway Connection Itm Tunnel Port Subnet And Network
127     L2GatewayOperations.Delete L2Gateway Connection    ${L2GW_NAME1}
128     L2GatewayOperations.Delete L2Gateway Connection    ${L2GW_NAME2}
129     L2GatewayOperations.Delete L2Gateway    ${L2GW_NAME1}
130     L2GatewayOperations.Delete L2Gateway    ${L2GW_NAME2}
131     OpenStackOperations.Delete Vm Instance    ${OVS_VM1_NAME}
132     OpenStackOperations.Delete Vm Instance    ${OVS_VM2_NAME}
133     OpenStackOperations.Delete Port    ${OVS_PORT_1}
134     OpenStackOperations.Delete Port    ${OVS_PORT_2}
135     OpenStackOperations.Delete Port    ${HWVTEP_PORT_1}
136     OpenStackOperations.Delete Port    ${HWVTEP_PORT_2}
137     OpenStackOperations.Delete SubNet    ${SUBNET_1}
138     OpenStackOperations.Delete SubNet    ${SUBNET_2}
139     OpenStackOperations.Delete Network    ${NET_1}
140     OpenStackOperations.Delete Network    ${NET_2}
141
142 *** Keywords ***
143 Basic Suite Setup
144     [Documentation]    Basic Suite Setup required for the HWVTEP Test Suite
145     RequestsLibrary.Create Session    alias=session    url=http://${ODL_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
146     ${devstack_conn_id}=    SSHLibrary.Open Connection    ${OS_IP}    prompt=${DEFAULT_LINUX_PROMPT}
147     Log    ${devstack_conn_id}
148     Set Suite Variable    ${devstack_conn_id}
149     Log    ${OS_IP}
150     Log    ${OS_USER}
151     Log    ${OS_PASSWORD}
152     Wait Until Keyword Succeeds    30s    5s    Flexible SSH Login    ${OS_USER}    ${OS_PASSWORD}
153     Write Commands Until Prompt    cd ${DEVSTACK_DEPLOY_PATH}; source openrc admin admin    30s
154     ${hwvtep_conn_id}=    SSHLibrary.Open Connection    ${HWVTEP_IP}    prompt=${DEFAULT_LINUX_PROMPT}
155     Log    ${hwvtep_conn_id}
156     Set Suite Variable    ${hwvtep_conn_id}
157     Log    ${DEFAULT_USER}
158     Log    ${DEFAULT_PASSWORD}
159     Wait Until Keyword Succeeds    30s    5s    Flexible SSH Login    ${DEFAULT_USER}    ${DEFAULT_PASSWORD}
160     ${ovs_conn_id}=    SSHLibrary.Open Connection    ${OVS_IP}    prompt=${DEFAULT_LINUX_PROMPT}
161     Log    ${ovs_conn_id}
162     Set Suite Variable    ${ovs_conn_id}
163     Wait Until Keyword Succeeds    30s    5s    Flexible SSH Login    ${DEFAULT_USER}    ${DEFAULT_PASSWORD}
164     ${port_mac_list}=    Create List
165     Set Suite Variable    ${port_mac_list}
166     ${port_ip_list}=    Create List
167     Set Suite Variable    ${port_ip_list}
168
169 Basic Suite Teardown
170     Switch Connection    ${devstack_conn_id}
171     close connection
172     Switch Connection    ${hwvtep_conn_id}
173     close connection
174     Switch Connection    ${ovs_conn_id}
175     close connection