@@ 2059-2100 (lines=42) @@ | ||
2056 | content={"1": "FailoverEvent1"} |
|
2057 | ) |
|
2058 | ||
2059 | @patch("napps.kytos.mef_eline.main.emit_event") |
|
2060 | @patch("napps.kytos.mef_eline.main.send_flow_mods_http") |
|
2061 | def test_execute_swap_to_failover_exception( |
|
2062 | self, |
|
2063 | send_flow_mods_mock: MagicMock, |
|
2064 | emit_main_mock: MagicMock, |
|
2065 | ): |
|
2066 | """Test handle_link_down method when an exception occurs.""" |
|
2067 | evc1 = MagicMock(id="1") |
|
2068 | good_path = MagicMock(id="GoodPath") |
|
2069 | bad_path = MagicMock(id="BadPath") |
|
2070 | evc1.current_path = bad_path |
|
2071 | evc1.failover_path = good_path |
|
2072 | evc2 = MagicMock(id="2") |
|
2073 | ||
2074 | self.napp.prepare_swap_to_failover_flow = { |
|
2075 | evc1: {"1": ["Flow1"]}, |
|
2076 | evc2: None |
|
2077 | }.get |
|
2078 | ||
2079 | self.napp.prepare_swap_to_failover_event = { |
|
2080 | evc1: "FailoverEvent1", |
|
2081 | }.get |
|
2082 | ||
2083 | send_flow_mods_mock.side_effect = FlowModException( |
|
2084 | "Flowmod failed to send" |
|
2085 | ) |
|
2086 | ||
2087 | success, failure = self.napp.execute_swap_to_failover([evc1, evc2]) |
|
2088 | ||
2089 | assert success == [] |
|
2090 | assert failure == [evc1, evc2] |
|
2091 | ||
2092 | send_flow_mods_mock.assert_called_with( |
|
2093 | {"1": ["Flow1"]}, |
|
2094 | "install" |
|
2095 | ) |
|
2096 | ||
2097 | assert evc1.current_path == bad_path |
|
2098 | assert evc1.failover_path == good_path |
|
2099 | ||
2100 | emit_main_mock.assert_not_called() |
|
2101 | ||
2102 | @patch("napps.kytos.mef_eline.main.emit_event") |
|
2103 | @patch("napps.kytos.mef_eline.main.send_flow_mods_http") |
|
@@ 2016-2056 (lines=41) @@ | ||
2013 | evc6.as_dict(), |
|
2014 | ]) |
|
2015 | ||
2016 | @patch("napps.kytos.mef_eline.main.emit_event") |
|
2017 | @patch("napps.kytos.mef_eline.main.send_flow_mods_http") |
|
2018 | def test_execute_swap_to_failover( |
|
2019 | self, |
|
2020 | send_flow_mods_mock: MagicMock, |
|
2021 | emit_main_mock: MagicMock, |
|
2022 | ): |
|
2023 | """Test execute_swap_to_failover method.""" |
|
2024 | evc1 = MagicMock(id="1") |
|
2025 | good_path = MagicMock(id="GoodPath") |
|
2026 | bad_path = MagicMock(id="BadPath") |
|
2027 | evc1.current_path = bad_path |
|
2028 | evc1.failover_path = good_path |
|
2029 | evc2 = MagicMock(id="2") |
|
2030 | ||
2031 | self.napp.prepare_swap_to_failover_flow = { |
|
2032 | evc1: {"1": ["Flow1"]}, |
|
2033 | evc2: None |
|
2034 | }.get |
|
2035 | ||
2036 | self.napp.prepare_swap_to_failover_event = { |
|
2037 | evc1: "FailoverEvent1", |
|
2038 | }.get |
|
2039 | ||
2040 | success, failure = self.napp.execute_swap_to_failover([evc1, evc2]) |
|
2041 | ||
2042 | assert success == [evc1] |
|
2043 | assert failure == [evc2] |
|
2044 | ||
2045 | send_flow_mods_mock.assert_called_with( |
|
2046 | {"1": ["Flow1"]}, |
|
2047 | "install" |
|
2048 | ) |
|
2049 | ||
2050 | assert evc1.current_path == good_path |
|
2051 | assert evc1.failover_path == bad_path |
|
2052 | ||
2053 | emit_main_mock.assert_called_with( |
|
2054 | self.napp.controller, |
|
2055 | "failover_link_down", |
|
2056 | content={"1": "FailoverEvent1"} |
|
2057 | ) |
|
2058 | ||
2059 | @patch("napps.kytos.mef_eline.main.emit_event") |