@@ 278-341 (lines=64) @@ | ||
275 | msg = f"Failed to re-deploy {evc} after link down." |
|
276 | log_mocked.debug.assert_called_once_with(msg) |
|
277 | ||
278 | @patch("napps.kytos.mef_eline.models.evc.log") |
|
279 | @patch("napps.kytos.mef_eline.models.evc.EVCDeploy.deploy_to_path") |
|
280 | @patch("napps.kytos.mef_eline.models.evc.EVCDeploy._send_flow_mods") |
|
281 | @patch(DEPLOY_TO_PRIMARY_PATH) |
|
282 | @patch("napps.kytos.mef_eline.models.path.Path.status", EntityStatus.DOWN) |
|
283 | async def test_handle_link_down_case_4( |
|
284 | self, |
|
285 | deploy_to_mocked, |
|
286 | _send_flow_mods_mocked, |
|
287 | deploy_mocked, |
|
288 | log_mocked, |
|
289 | ): |
|
290 | """Test if circuit with dynamic path is return success.""" |
|
291 | deploy_mocked.return_value = True |
|
292 | deploy_to_mocked.return_value = False |
|
293 | primary_path = [ |
|
294 | get_link_mocked( |
|
295 | endpoint_a_port=9, |
|
296 | endpoint_b_port=10, |
|
297 | metadata={"s_vlan": 5}, |
|
298 | status=EntityStatus.DOWN, |
|
299 | ), |
|
300 | get_link_mocked( |
|
301 | endpoint_a_port=11, |
|
302 | endpoint_b_port=12, |
|
303 | metadata={"s_vlan": 6}, |
|
304 | status=EntityStatus.UP, |
|
305 | ), |
|
306 | ] |
|
307 | backup_path = [ |
|
308 | get_link_mocked( |
|
309 | endpoint_a_port=9, |
|
310 | endpoint_b_port=10, |
|
311 | metadata={"s_vlan": 5}, |
|
312 | status=EntityStatus.DOWN, |
|
313 | ), |
|
314 | get_link_mocked( |
|
315 | endpoint_a_port=13, |
|
316 | endpoint_b_port=14, |
|
317 | metadata={"s_vlan": 6}, |
|
318 | status=EntityStatus.UP, |
|
319 | ), |
|
320 | ] |
|
321 | attributes = { |
|
322 | "controller": get_controller_mock(), |
|
323 | "name": "circuit_8", |
|
324 | "uni_a": get_uni_mocked(is_valid=True), |
|
325 | "uni_z": get_uni_mocked(is_valid=True), |
|
326 | "primary_path": primary_path, |
|
327 | "backup_path": backup_path, |
|
328 | "enabled": True, |
|
329 | "dynamic_backup_path": True, |
|
330 | } |
|
331 | ||
332 | evc = EVC(**attributes) |
|
333 | evc.current_path = evc.backup_path |
|
334 | ||
335 | deploy_to_mocked.reset_mock() |
|
336 | current_handle_link_down = evc.handle_link_down() |
|
337 | assert deploy_to_mocked.call_count == 1 |
|
338 | ||
339 | assert current_handle_link_down |
|
340 | msg = f"{evc} deployed after link down." |
|
341 | log_mocked.debug.assert_called_with(msg) |
|
342 | ||
343 | @patch("napps.kytos.mef_eline.models.evc.EVCDeploy.deploy") |
|
344 | async def test_handle_link_up_case_1( |
|
@@ 152-209 (lines=58) @@ | ||
149 | msg = f"{self.evc} deployed after link down." |
|
150 | log_mocked.debug.assert_called_once_with(msg) |
|
151 | ||
152 | @patch("napps.kytos.mef_eline.models.evc.log") |
|
153 | @patch("napps.kytos.mef_eline.models.evc.EVCDeploy.deploy") |
|
154 | @patch(DEPLOY_TO_PRIMARY_PATH) |
|
155 | @patch("napps.kytos.mef_eline.models.path.Path.status") |
|
156 | async def test_handle_link_down_case_2( |
|
157 | self, path_status_mocked, deploy_to_mocked, deploy_mocked, log_mocked |
|
158 | ): |
|
159 | """Test if deploy_to backup path is called.""" |
|
160 | deploy_mocked.return_value = True |
|
161 | deploy_to_mocked.return_value = True |
|
162 | path_status_mocked.side_effect = [EntityStatus.UP, EntityStatus.DOWN] |
|
163 | primary_path = [ |
|
164 | get_link_mocked( |
|
165 | endpoint_a_port=7, |
|
166 | endpoint_b_port=8, |
|
167 | metadata={"s_vlan": 5}, |
|
168 | status=EntityStatus.UP, |
|
169 | ), |
|
170 | get_link_mocked( |
|
171 | endpoint_a_port=11, |
|
172 | endpoint_b_port=12, |
|
173 | metadata={"s_vlan": 6}, |
|
174 | status=EntityStatus.UP, |
|
175 | ), |
|
176 | ] |
|
177 | backup_path = [ |
|
178 | get_link_mocked( |
|
179 | endpoint_a_port=7, |
|
180 | endpoint_b_port=10, |
|
181 | metadata={"s_vlan": 5}, |
|
182 | status=EntityStatus.DOWN, |
|
183 | ), |
|
184 | get_link_mocked( |
|
185 | endpoint_a_port=15, |
|
186 | endpoint_b_port=12, |
|
187 | metadata={"s_vlan": 6}, |
|
188 | status=EntityStatus.UP, |
|
189 | ), |
|
190 | ] |
|
191 | attributes = { |
|
192 | "controller": get_controller_mock(), |
|
193 | "name": "circuit_13", |
|
194 | "uni_a": get_uni_mocked(is_valid=True), |
|
195 | "uni_z": get_uni_mocked(is_valid=True), |
|
196 | "primary_path": primary_path, |
|
197 | "backup_path": backup_path, |
|
198 | "enabled": True, |
|
199 | } |
|
200 | ||
201 | evc = EVC(**attributes) |
|
202 | evc.current_path = evc.backup_path |
|
203 | deploy_to_mocked.reset_mock() |
|
204 | current_handle_link_down = evc.handle_link_down() |
|
205 | assert deploy_mocked.call_count == 0 |
|
206 | deploy_to_mocked.assert_called_once() |
|
207 | assert current_handle_link_down |
|
208 | msg = f"{evc} deployed after link down." |
|
209 | log_mocked.debug.assert_called_once_with(msg) |
|
210 | ||
211 | # pylint: disable=too-many-arguments |
|
212 | @patch("napps.kytos.mef_eline.models.evc.EVCDeploy.remove_current_flows") |