Code Duplication    Length = 58-64 lines in 2 locations

tests/unit/models/test_link_protection.py 2 locations

@@ 367-430 (lines=64) @@
364
        msg = f"Failed to re-deploy {evc} after link down."
365
        log_mocked.debug.assert_called_once_with(msg)
366
367
    @patch("napps.kytos.mef_eline.models.evc.log")
368
    @patch("napps.kytos.mef_eline.models.evc.EVCDeploy.deploy_to_path")
369
    @patch("napps.kytos.mef_eline.models.evc.EVCDeploy._send_flow_mods")
370
    @patch(DEPLOY_TO_PRIMARY_PATH)
371
    @patch("napps.kytos.mef_eline.models.path.Path.status", EntityStatus.DOWN)
372
    def test_handle_link_down_case_4(
373
        self,
374
        deploy_to_mocked,
375
        _send_flow_mods_mocked,
376
        deploy_mocked,
377
        log_mocked,
378
    ):
379
        """Test if circuit with dynamic path is return success."""
380
        deploy_mocked.return_value = True
381
        deploy_to_mocked.return_value = False
382
        primary_path = [
383
            get_link_mocked(
384
                endpoint_a_port=9,
385
                endpoint_b_port=10,
386
                metadata={"s_vlan": 5},
387
                status=EntityStatus.DOWN,
388
            ),
389
            get_link_mocked(
390
                endpoint_a_port=11,
391
                endpoint_b_port=12,
392
                metadata={"s_vlan": 6},
393
                status=EntityStatus.UP,
394
            ),
395
        ]
396
        backup_path = [
397
            get_link_mocked(
398
                endpoint_a_port=9,
399
                endpoint_b_port=10,
400
                metadata={"s_vlan": 5},
401
                status=EntityStatus.DOWN,
402
            ),
403
            get_link_mocked(
404
                endpoint_a_port=13,
405
                endpoint_b_port=14,
406
                metadata={"s_vlan": 6},
407
                status=EntityStatus.UP,
408
            ),
409
        ]
410
        attributes = {
411
            "controller": get_controller_mock(),
412
            "name": "circuit_8",
413
            "uni_a": get_uni_mocked(is_valid=True),
414
            "uni_z": get_uni_mocked(is_valid=True),
415
            "primary_path": primary_path,
416
            "backup_path": backup_path,
417
            "enabled": True,
418
            "dynamic_backup_path": True,
419
        }
420
421
        evc = EVC(**attributes)
422
        evc.current_path = evc.backup_path
423
424
        deploy_to_mocked.reset_mock()
425
        current_handle_link_down = evc.handle_link_down()
426
        self.assertEqual(deploy_to_mocked.call_count, 1)
427
428
        self.assertTrue(current_handle_link_down)
429
        msg = f"{evc} deployed after link down."
430
        log_mocked.debug.assert_called_with(msg)
431
432
    @patch("napps.kytos.mef_eline.models.evc.EVCDeploy.deploy")
433
    @patch("napps.kytos.mef_eline.models.evc.LinkProtection.deploy_to")
@@ 245-302 (lines=58) @@
242
        msg = f"{self.evc} deployed after link down."
243
        log_mocked.debug.assert_called_once_with(msg)
244
245
    @patch("napps.kytos.mef_eline.models.evc.log")
246
    @patch("napps.kytos.mef_eline.models.evc.EVCDeploy.deploy")
247
    @patch(DEPLOY_TO_PRIMARY_PATH)
248
    @patch("napps.kytos.mef_eline.models.path.Path.status")
249
    def test_handle_link_down_case_2(
250
        self, path_status_mocked, deploy_to_mocked, deploy_mocked, log_mocked
251
    ):
252
        """Test if deploy_to backup path is called."""
253
        deploy_mocked.return_value = True
254
        deploy_to_mocked.return_value = True
255
        path_status_mocked.side_effect = [EntityStatus.UP, EntityStatus.DOWN]
256
        primary_path = [
257
            get_link_mocked(
258
                endpoint_a_port=7,
259
                endpoint_b_port=8,
260
                metadata={"s_vlan": 5},
261
                status=EntityStatus.UP,
262
            ),
263
            get_link_mocked(
264
                endpoint_a_port=11,
265
                endpoint_b_port=12,
266
                metadata={"s_vlan": 6},
267
                status=EntityStatus.UP,
268
            ),
269
        ]
270
        backup_path = [
271
            get_link_mocked(
272
                endpoint_a_port=7,
273
                endpoint_b_port=10,
274
                metadata={"s_vlan": 5},
275
                status=EntityStatus.DOWN,
276
            ),
277
            get_link_mocked(
278
                endpoint_a_port=15,
279
                endpoint_b_port=12,
280
                metadata={"s_vlan": 6},
281
                status=EntityStatus.UP,
282
            ),
283
        ]
284
        attributes = {
285
            "controller": get_controller_mock(),
286
            "name": "circuit_13",
287
            "uni_a": get_uni_mocked(is_valid=True),
288
            "uni_z": get_uni_mocked(is_valid=True),
289
            "primary_path": primary_path,
290
            "backup_path": backup_path,
291
            "enabled": True,
292
        }
293
294
        evc = EVC(**attributes)
295
        evc.current_path = evc.backup_path
296
        deploy_to_mocked.reset_mock()
297
        current_handle_link_down = evc.handle_link_down()
298
        self.assertEqual(deploy_mocked.call_count, 0)
299
        deploy_to_mocked.assert_called_once()
300
        self.assertTrue(current_handle_link_down)
301
        msg = f"{evc} deployed after link down."
302
        log_mocked.debug.assert_called_once_with(msg)
303
304
    @patch("napps.kytos.mef_eline.controllers.ELineController.upsert_evc")
305
    @patch("napps.kytos.mef_eline.models.evc.log")