feat: japan node ranking and leftover route detection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e60873b75a
commit
18b8ee1dd7
4 files changed
+168
No files matched your search
@@ -0,0 +1,52 @@
|
||||
import types
|
||||
import unittest
|
||||
|
||||
from mudfish_decky.routes import delete_routes, host_routes, leftover_routes
|
||||
|
||||
BEFORE = """default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.50 metric 600
|
||||
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.50 metric 600
|
||||
"""
|
||||
AFTER = BEFORE + """1.201.174.247 via 192.168.1.1 dev wlan0
|
||||
2.58.243.110 via 192.168.1.1 dev wlan0
|
||||
10.254.100.5 via 10.254.100.1 dev tap0
|
||||
"""
|
||||
|
||||
|
||||
class RoutesTest(unittest.TestCase):
|
||||
def test_host_routes_excludes_default_prefix_and_proto(self):
|
||||
self.assertEqual(host_routes(BEFORE), set())
|
||||
|
||||
def test_host_routes_normalizes_trailing_space(self):
|
||||
self.assertEqual(host_routes("1.2.3.4 via 192.168.1.1 dev wlan0 \n"),
|
||||
{"1.2.3.4 via 192.168.1.1 dev wlan0"})
|
||||
|
||||
def test_leftover_routes_only_new_non_tap(self):
|
||||
self.assertEqual(leftover_routes(host_routes(BEFORE), AFTER),
|
||||
["1.201.174.247 via 192.168.1.1 dev wlan0", "2.58.243.110 via 192.168.1.1 dev wlan0"])
|
||||
|
||||
def test_leftover_routes_none_snapshot_deletes_nothing(self):
|
||||
self.assertEqual(leftover_routes(None, AFTER), [])
|
||||
|
||||
def test_leftover_routes_keeps_preexisting_host_routes(self):
|
||||
before = host_routes(AFTER.replace("2.58.243.110", "9.9.9.9"))
|
||||
self.assertNotIn("1.201.174.247 via 192.168.1.1 dev wlan0", leftover_routes(before, AFTER))
|
||||
|
||||
def test_delete_routes_runs_ip_route_del(self):
|
||||
calls = []
|
||||
|
||||
def run(cmd, **kw):
|
||||
calls.append(cmd)
|
||||
return types.SimpleNamespace(returncode=0)
|
||||
|
||||
self.assertEqual(delete_routes(["1.2.3.4 via 192.168.1.1 dev wlan0"], run=run), 1)
|
||||
self.assertEqual(calls, [["ip", "route", "del", "1.2.3.4", "via", "192.168.1.1", "dev", "wlan0"]])
|
||||
|
||||
def test_delete_routes_counts_failures_as_not_deleted(self):
|
||||
def run(cmd, **kw):
|
||||
raise OSError("boom")
|
||||
|
||||
self.assertEqual(delete_routes(["1.2.3.4 via 192.168.1.1 dev wlan0"], run=run), 0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user