2 Documentation This test suite is to verify working of OF based Tunnels
3 Suite Setup OF Tunnels Start Suite
4 Suite Teardown OF Tunnels Stop Suite
5 Test Setup Genius Test Setup
6 Test Teardown Genius Test Teardown ${data_models}
8 Library OperatingSystem
9 Library RequestsLibrary
12 Resource ../../libraries/ClusterManagement.robot
13 Resource ../../libraries/DataModels.robot
14 Resource ../../libraries/Genius.robot
15 Resource ../../libraries/KarafKeywords.robot
16 Resource ../../libraries/ODLTools.robot
17 Resource ../../libraries/OVSDB.robot
18 Resource ../../libraries/Utils.robot
19 Resource ../../libraries/VpnOperations.robot
20 Resource ../../variables/Variables.robot
21 Variables ../../variables/genius/Modules.py
22 Resource ../../variables/netvirt/Variables.robot
25 ${FLOWS_FILTER_TABLE0} | grep table=0
26 ${FLOWS_FILTER_TABLE95} | grep table=95
27 ${TEP_SHOW_OF_PORTS} tep:show-ofports
30 Create and Verify OFT TEPs
31 [Documentation] Create TEPs set to use OF based Tunnels and verify.
32 CompareStream.Run_Keyword_If_Less_Than_Sodium BuiltIn.Pass Execution Test case valid only for versions Sodium and above
33 OFT Create Vteps using Auto Tunnels @{TOOLS_SYSTEM_ALL_IPS}
34 OFT Verify Vteps Created ${DPN_ID_LIST} ${TOOLS_SYSTEM_ALL_IPS}
36 Delete and Verify OFT TEPs
37 [Documentation] Delete TEPs set to use OF based Tunnels and verify.
38 CompareStream.Run_Keyword_If_Less_Than_Sodium BuiltIn.Pass Execution Test case valid only for versions Sodium and above
39 OFT Delete Vteps using Auto Tunnels @{TOOLS_SYSTEM_ALL_IPS}
40 OFT Verify Vteps Deleted ${DPN_ID_LIST} ${TOOLS_SYSTEM_ALL_IPS}
41 BuiltIn.Wait Until Keyword Succeeds 60 5 Utils.No Content From URI session ${OPERATIONAL_API}/itm-state:tunnels_state
43 Create and Verify single OFT TEPs
44 [Documentation] Create single TEPs set to use OF based Tunnels and verify.
45 CompareStream.Run_Keyword_If_Less_Than_Sodium BuiltIn.Pass Execution Test case valid only for versions Sodium and above
46 ${tools_ips} = BuiltIn.Create List @{TOOLS_SYSTEM_ALL_IPS}
47 Collections.Remove From List ${tools_ips} -1
48 ${dpn_ids} = BuiltIn.CreateList @{DPN_ID_LIST}
49 Collections.Remove From List ${dpn_ids} -1
50 OFT Create Vteps using Auto Tunnels @{tools_ips}
51 OFT Verify Vteps Created ${dpn_ids} ${tools_ips}
52 OFT Create Vteps using Auto Tunnels ${TOOLS_SYSTEM_ALL_IPS}[-1]
53 OFT Verify Vteps Created ${DPN_ID_LIST} ${TOOLS_SYSTEM_ALL_IPS}
55 Delete and Verify single OFT TEPs
56 [Documentation] Delete single TEPs set to use OF based Tunnels and verify.
57 CompareStream.Run_Keyword_If_Less_Than_Sodium BuiltIn.Pass Execution Test case valid only for versions Sodium and above
58 ${deleted_tools_ip_list} = BuiltIn.Set Variable ${TOOLS_SYSTEM_ALL_IPS}[0]
59 OFT Delete Vteps using Auto Tunnels ${deleted_tools_ip_list}
60 ${deleted_tools_ip_list} = BuiltIn.CreateList ${TOOLS_SYSTEM_ALL_IPS}[0]
61 ${deleted_dpn_id_list} = BuiltIn.CreateList ${DPN_ID_LIST}[0]
62 OFT Verify Vteps Deleted ${deleted_dpn_id_list} ${deleted_tools_ip_list}
65 OFT Create Vteps using Auto Tunnels
66 [Arguments] @{tools_ip_list}
67 [Documentation] Create VTEPs for selected tools systems in ODL using Auto Tunnels.
68 FOR ${tools_ip} IN @{tools_ip_list}
69 Utils.Run Command On Remote System And Log ${tools_ip} ${SET_LOCAL_IP}${tools_ip}
72 OFT Verify Vteps Created
73 [Arguments] ${dpn_id_list} ${tools_ip_list}
74 [Documentation] Verify if OFT VTEPs are created successfully or not for given Tools IPs and DPN-IDs.
75 ${switch_data} = BuiltIn.Create List @{dpn_id_list} @{tools_ip_list}
76 BuiltIn.Wait Until Keyword Succeeds 60 5 Genius.Get ITM ${DEFAULT_TRANSPORT_ZONE} ${switch_data}
77 ${tep_show_output} = BuiltIn.Wait Until Keyword Succeeds 60 5 KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW}
78 BuiltIn.Should Contain Any ${tep_show_output} ${DEFAULT_TRANSPORT_ZONE} VXLAN @{switch_data}
79 ${num_switches} = BuiltIn.Get Length ${dpn_id_list}
80 BuiltIn.Wait Until Keyword Succeeds 60 5 OFT Verify Tunnel Status as UP ${num_switches}
81 BuiltIn.Wait Until Keyword Succeeds 40 10 OFT OVS Verify Tunnels Created @{tools_ip_list}
82 ${tools_system_len} = BuiltIn.Get Length ${tools_ip_list}
83 FOR ${tools_system_index} IN RANGE ${tools_system_len}
84 ${tun_ip_list} = BuiltIn.CreateList @{tools_ip_list}
85 Collections.Remove From List ${tun_ip_list} ${tools_system_index}
86 ${ports_output} = Utils.Run Command On Remote System And Log ${tools_ip_list}[${tools_system_index}] sudo ovs-ofctl -Oopenflow13 dump-ports-desc ${Bridge}
87 ${port_numbers} = String.Get Regexp Matches ${ports_output} (\\d+).of.* ${1}
88 BuiltIn.Wait Until Keyword Succeeds 40 10 OFT OVS Verify Ingress Flows Created per Switch ${tools_ip_list}[${tools_system_index}] ${tun_ip_list} ${port_numbers}
91 OFT OVS Verify Tunnels Created
92 [Arguments] @{tools_ip_list}
93 [Documentation] Verify if tunnels are created in OVS for selected tools systems.
94 FOR ${tools_ip} IN @{tools_ip_list}
95 ${output} = Utils.Run Command On Remote System And Log ${tools_ip} sudo ovs-vsctl show
96 BuiltIn.Should Contain X Times ${output} local_ip="${tools_ip}", remote_ip=flow ${1}
99 OFT OVS Verify Ingress Flows Created per Switch
100 [Arguments] ${tools_ip} ${tun_src_list} ${port_numbers}
101 [Documentation] Verify if Ingress flow rules are created in OVS for a given switch.
102 ${flows_table0_output} = Utils.Run Command On Remote System And Log ${tools_ip} sudo ovs-ofctl -OOpenFlow13 dump-flows ${Bridge} ${FLOWS_FILTER_TABLE0}
103 BuiltIn.Should Not Contain ${flows_table0_output} tun_src=${tools_ip},
104 FOR ${port_number} IN @{port_numbers}
105 BuiltIn.Should Contain ${flows_table0_output} in_port=${port_number}
108 OFT OVS Verify Egress Flows Created per Switch
109 [Arguments] ${tools_ip} ${tun_dst_list} ${port_numbers}
110 [Documentation] Verify if Egress flow rules are created in OVS for a given switch.
111 ${flows_table95_output} = Utils.Run Command On Remote System And Log ${tools_ip} sudo ovs-ofctl -OOpenFlow13 dump-flows ${Bridge} ${FLOWS_FILTER_TABLE95}
112 FOR ${tun_dst} IN @{tun_dst_list}
113 ${tun_dst_hex} = BuiltIn.Evaluate hex(struct.unpack('!I',socket.inet_aton('${tun_dst}'))[0]) modules=socket,struct
114 BuiltIn.Should Contain ${flows_table95_output} load:${tun_dst_hex}->NXM_NX_TUN_IPV4_DST[]
116 FOR ${port_number} IN @{port_numbers}
117 BuiltIn.Should Contain ${flows_table95_output} output:${port_number}
120 OFT Delete Vteps using Auto Tunnels
121 [Arguments] @{tools_ip_list}
122 [Documentation] Delete VTEPs for selected tools systems in ODL using Auto Tunnel.
123 FOR ${tools_ip} IN @{tools_ip_list}
124 Utils.Run Command On Remote System And Log ${tools_ip} ${REMOVE_LOCAL_IP}
127 OFT Verify Vteps Deleted
128 [Arguments] ${dpn_id_list} ${tools_ip_list}
129 [Documentation] Verify if OFT Vteps are created successfully or not for given Tools IPs and DPN-IDs.
130 ${deleted_tep_len} = BuiltIn.Get Length ${dpn_id_list}
131 ${existing_tep_len} = BuiltIn.Evaluate ${NUM_TOOLS_SYSTEM}-${deleted_tep_len}
132 BuiltIn.Run Keyword If ${existing_tep_len} > 0 BuiltIn.Wait Until Keyword Succeeds 60 5 OFT Verify Tunnel status as UP ${existing_tep_len}
133 ${tep_show_output} = KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW}
134 ${tep_show_state_output} = KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW_STATE}
135 FOR ${tools_system_index} IN RANGE ${deleted_tep_len}
136 ${tep_show_state_output_1} = KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW_STATE}
137 BuiltIn.Log ${tools_ip_list}[${tools_system_index}]
138 BuiltIn.Should Not Contain ${tep_show_output} ${tools_ip_list}[${tools_system_index}]
139 BuiltIn.Should Not Contain ${tep_show_state_output} ${tools_ip_list}[${tools_system_index}]
140 BuiltIn.Wait Until Keyword Succeeds 60 5 Utils.No Content From URI session ${CONFIG_API}/itm-state:dpn-endpoints/DPN-TEPs-info/${dpn_id_list}[${tools_system_index}]/
141 ${dst_dpn_id_list} = BuiltIn.Create List @{DPN_ID_LIST}
142 Collections.Remove From List ${dst_dpn_id_list} ${tools_system_index}
143 BuiltIn.Wait Until Keyword Succeeds 60 5 OFT Verify Vteps Deleted at Dpn Teps State per Interface ${dpn_id_list}[${tools_system_index}] ${dst_dpn_id_list}
144 ${ovs_vsctl_output} = BuiltIn.Wait Until Keyword Succeeds 40 10 Utils.Run Command On Remote System And Log ${tools_ip_list}[${tools_system_index}] sudo ovs-vsctl show
145 BuiltIn.Should Not Contain ${ovs_vsctl_output} remote_ip=flow
146 BuiltIn.Wait Until Keyword Succeeds 40 10 OFT OVS Verify Ingress Flows Deleted per Switch ${tools_ip_list}[${tools_system_index}]
147 BuiltIn.Wait Until Keyword Succeeds 40 10 OFT OVS Verify Egress Flows Deleted per Switch ${tools_ip_list}[${tools_system_index}]
150 OFT Verify Vteps Deleted at Dpn Teps State per Interface
151 [Arguments] ${src_dpn_id} ${dst_dpn_id_list}
152 [Documentation] Verify if vteps are deleted for all src-dst intf pair at dpn-teps-state in ODL for a given src intf.
153 FOR ${dst_dpn_id} IN @{dst_dpn_id_list}
154 ${status} = BuiltIn.Run Keyword And Return Status Genius.Get Tunnel ${src_dpn_id} ${dst_dpn_id} odl-interface:tunnel-type-vxlan dpn-teps-state
155 BuiltIn.Should Be True ${status} == ${False}
158 OFT OVS Verify Ingress Flows Deleted per Switch
159 [Arguments] ${tools_ip}
160 [Documentation] Verify if Ingress flow rules are deleted in OVS for a given switch.
161 ${flows_table0_output} = Utils.Run Command On Remote System And Log ${tools_ip} sudo ovs-ofctl -OOpenFlow13 dump-flows ${Bridge} ${FLOWS_FILTER_TABLE0}
162 BuiltIn.Should Not Contain ${flows_table0_output} tun_src=
164 OFT OVS Verify Egress Flows Deleted per Switch
165 [Arguments] ${tools_ip}
166 [Documentation] Verify if Egress flow rules are deleted in OVS for a given switch.
167 ${flows_table95_output} = Utils.Run Command On Remote System And Log ${tools_ip} sudo ovs-ofctl -OOpenFlow13 dump-flows ${Bridge} ${FLOWS_FILTER_TABLE95}
168 BuiltIn.Should Not Contain ${flows_table95_output} output:
170 OF Tunnels Start Suite
171 [Documentation] Start suite for OF Tunnels.
172 ClusterManagement.ClusterManagement_Setup
173 ClusterManagement.Stop_Members_From_List_Or_All
174 FOR ${controller_index} IN RANGE ${NUM_ODL_SYSTEM}
175 Run Command On Remote System And Log ${ODL_SYSTEM_${controller_index+1}_IP} sed -i -- 's/<itm-direct-tunnels>false/<itm-direct-tunnels>true/g' ${GENIUS_IFM_CONFIG_FLAG}
176 Run Command On Remote System And Log ${ODL_SYSTEM_${controller_index+1}_IP} sed -i -- 's/<itm-of-tunnels>false/<itm-of-tunnels>true/g' ${GENIUS_IFM_CONFIG_FLAG}
178 ClusterManagement.Start_Members_From_List_Or_All
181 OF Tunnels Stop Suite
182 [Documentation] Stop suite for OF Tunnels.
183 FOR ${controller_index} IN RANGE ${NUM_ODL_SYSTEM}
184 Run Command On Remote System And Log ${ODL_SYSTEM_${controller_index+1}_IP} sed -i -- 's/<itm-direct-tunnels>true/<itm-direct-tunnels>false/g' ${GENIUS_IFM_CONFIG_FLAG}
185 Run Command On Remote System And Log ${ODL_SYSTEM_${controller_index+1}_IP} sed -i -- 's/<itm-of-tunnels>true/<itm-of-tunnels>false/g' ${GENIUS_IFM_CONFIG_FLAG}
187 ClusterManagement.Stop_Members_From_List_Or_All
188 ClusterManagement.Start_Members_From_List_Or_All
189 Genius Suite Teardown
191 OFT Verify Tunnel status as UP
192 [Arguments] ${no_of_switches}=${NUM_TOOLS_SYSTEM}
193 ${no_of_tunnels} = KarafKeywords.Issue Command On Karaf Console ${TEP_SHOW_OF_PORTS}
194 ${lines_of_state_up} = String.Get Lines Containing String ${no_of_tunnels} Up
195 ${actual_tunnel_count} = String.Get Line Count ${lines_of_state_up}
196 BuiltIn.Should Be Equal As Strings ${actual_tunnel_count} ${no_of_switches}