From 7600814772c19847f632fd298c1c5be973cfeebc Mon Sep 17 00:00:00 2001 From: Pavel Patsey Date: Sun, 19 Jan 2025 01:24:08 +0300 Subject: [PATCH] add test merge_nodes recursion vs cycle --- tests/cidr4_data_for_tests.py | 488 ++++++++++++++++++++++++++++++++++ tests/test_cidr4_merger.py | 17 +- 2 files changed, 504 insertions(+), 1 deletion(-) create mode 100644 tests/cidr4_data_for_tests.py diff --git a/tests/cidr4_data_for_tests.py b/tests/cidr4_data_for_tests.py new file mode 100644 index 0000000..1e5bf85 --- /dev/null +++ b/tests/cidr4_data_for_tests.py @@ -0,0 +1,488 @@ +test_cidr4_data = """ +4.78.139.0/24 +23.101.24.0/24 +23.202.231.0/24 +23.217.138.0/24 +23.225.141.0/24 +23.234.30.0/24 +31.13.64.0/24 +31.13.67.0/24 +31.13.68.0/22 +31.13.73.0/24 +31.13.75.0/24 +31.13.76.0/24 +31.13.80.0/21 +31.13.88.0/24 +31.13.90.0/23 +31.13.92.0/24 +31.13.94.0/23 +31.13.96.0/24 +31.13.106.0/24 +31.13.112.0/24 +37.152.2.0/24 +38.121.72.0/24 +39.109.122.0/24 +43.226.16.0/24 +43.245.104.0/24 +45.54.28.0/24 +45.77.186.0/24 +45.114.11.0/24 +45.253.131.0/24 +46.61.154.0/24 +46.134.216.0/24 +47.88.58.0/24 +49.231.55.0/24 +50.23.209.0/24 +50.87.93.0/24 +50.117.117.0/24 +52.58.1.0/24 +52.175.9.0/24 +54.89.135.0/24 +54.144.128.0/24 +54.234.18.0/24 +58.63.233.0/24 +59.18.44.0/24 +59.18.46.0/24 +59.24.3.0/24 +59.188.250.0/24 +61.91.8.0/24 +61.205.119.0/24 +62.0.80.0/24 +64.13.192.0/24 +64.53.242.0/24 +64.233.160.0/21 +64.233.168.0/22 +64.233.176.0/20 +65.49.26.0/24 +65.49.68.0/24 +66.102.1.0/24 +66.220.146.0/23 +66.220.148.0/23 +67.15.100.0/24 +67.15.129.0/24 +67.228.102.0/24 +67.228.235.0/24 +67.230.169.0/24 +69.30.25.0/24 +69.50.221.0/24 +69.63.176.0/24 +69.63.178.0/24 +69.63.180.0/23 +69.63.184.0/24 +69.63.186.0/23 +69.63.190.0/24 +69.162.134.0/24 +69.171.224.0/24 +69.171.227.0/24 +69.171.228.0/23 +69.171.234.0/24 +69.171.242.0/24 +69.171.247.0/24 +69.197.153.0/24 +74.86.3.0/24 +74.86.12.0/24 +74.86.17.0/24 +74.86.118.0/24 +74.86.142.0/24 +74.86.151.0/24 +74.86.226.0/24 +74.86.228.0/24 +74.125.1.0/24 +74.125.2.0/24 +74.125.8.0/24 +74.125.10.0/23 +74.125.13.0/24 +74.125.20.0/23 +74.125.23.0/24 +74.125.24.0/24 +74.125.26.0/24 +74.125.28.0/24 +74.125.31.0/24 +74.125.68.0/22 +74.125.90.0/24 +74.125.96.0/24 +74.125.100.0/24 +74.125.102.0/23 +74.125.104.0/24 +74.125.106.0/24 +74.125.110.0/23 +74.125.124.0/24 +74.125.126.0/23 +74.125.128.0/20 +74.125.153.0/24 +74.125.154.0/23 +74.125.159.0/24 +74.125.164.0/24 +74.125.170.0/24 +74.125.172.0/23 +74.125.192.0/23 +74.125.195.0/24 +74.125.196.0/22 +74.125.200.0/22 +74.125.204.0/23 +74.125.206.0/24 +75.126.33.0/24 +75.126.115.0/24 +75.126.124.0/24 +75.126.135.0/24 +75.126.150.0/24 +75.126.164.0/24 +77.37.252.0/24 +77.120.15.0/24 +80.87.199.0/24 +81.23.20.0/24 +81.23.23.0/24 +81.192.13.0/24 +81.192.191.0/24 +88.191.249.0/24 +90.201.124.0/24 +92.87.232.0/24 +93.179.102.0/24 +94.24.232.0/24 +94.31.189.0/24 +95.59.170.0/24 +96.44.137.0/24 +98.159.108.0/24 +103.39.76.0/24 +103.42.176.0/24 +103.56.16.0/24 +103.73.161.0/24 +103.97.3.0/24 +103.97.176.0/24 +103.200.30.0/23 +103.214.168.0/24 +103.226.246.0/24 +103.228.130.0/24 +103.230.123.0/24 +103.240.180.0/24 +103.240.182.0/24 +103.246.246.0/24 +103.252.114.0/23 +104.16.251.0/24 +104.16.252.0/24 +104.23.124.0/23 +104.31.142.0/24 +104.244.43.0/24 +104.244.45.0/24 +104.244.46.0/24 +107.181.166.0/24 +108.160.161.0/24 +108.160.162.0/23 +108.160.165.0/24 +108.160.166.0/23 +108.160.169.0/24 +108.160.170.0/24 +108.160.172.0/23 +108.177.8.0/21 +108.177.96.0/23 +108.177.98.0/24 +108.177.103.0/24 +108.177.104.0/24 +108.177.111.0/24 +108.177.112.0/24 +108.177.119.0/24 +108.177.120.0/22 +108.177.125.0/24 +108.177.126.0/23 +109.224.41.0/24 +110.164.8.0/24 +111.243.214.0/24 +113.108.239.0/24 +113.171.242.0/24 +114.4.7.0/24 +114.43.24.0/24 +115.126.100.0/24 +116.89.243.0/24 +118.98.30.0/24 +118.98.36.0/24 +118.98.106.0/24 +118.107.180.0/24 +118.184.26.0/24 +118.184.78.0/24 +118.193.202.0/24 +118.193.240.0/24 +119.28.87.0/24 +120.232.233.0/24 +120.232.234.0/24 +120.233.71.0/24 +120.253.250.0/24 +120.253.253.0/24 +120.253.255.0/24 +121.78.42.0/24 +122.10.85.0/24 +122.154.76.0/24 +122.248.226.0/24 +122.252.245.0/24 +124.11.210.0/24 +128.121.146.0/24 +128.121.243.0/24 +128.242.240.0/24 +128.242.245.0/24 +128.242.250.0/24 +130.211.15.0/24 +142.250.0.0/23 +142.250.4.0/24 +142.250.8.0/22 +142.250.12.0/23 +142.250.27.0/24 +142.250.28.0/24 +142.250.30.0/23 +142.250.64.0/20 +142.250.80.0/23 +142.250.96.0/21 +142.250.105.0/24 +142.250.107.0/24 +142.250.110.0/23 +142.250.112.0/22 +142.250.123.0/24 +142.250.125.0/24 +142.250.126.0/24 +142.250.128.0/24 +142.250.136.0/24 +142.250.138.0/24 +142.250.141.0/24 +142.250.142.0/24 +142.250.145.0/24 +142.250.147.0/24 +142.250.148.0/23 +142.250.150.0/24 +142.250.152.0/23 +142.250.157.0/24 +142.250.158.0/23 +142.250.176.0/20 +142.250.192.0/21 +142.250.200.0/23 +142.250.203.0/24 +142.250.204.0/22 +142.250.217.0/24 +142.250.218.0/23 +142.251.0.0/23 +142.251.2.0/24 +142.251.4.0/23 +142.251.6.0/24 +142.251.8.0/23 +142.251.10.0/24 +142.251.12.0/24 +142.251.15.0/24 +142.251.16.0/24 +142.251.18.0/24 +142.251.31.0/24 +142.251.32.0/22 +142.251.36.0/23 +142.251.39.0/24 +142.251.40.0/22 +142.251.45.0/24 +142.251.46.0/23 +142.251.107.0/24 +142.251.111.0/24 +142.251.112.0/24 +142.251.116.0/23 +142.251.120.0/24 +142.251.128.0/23 +142.251.130.0/24 +142.251.132.0/22 +142.251.140.0/22 +142.251.161.0/24 +142.251.162.0/23 +142.251.164.0/22 +142.251.168.0/24 +142.251.170.0/23 +142.251.172.0/22 +142.251.176.0/22 +142.251.180.0/24 +142.251.182.0/23 +142.251.184.0/22 +142.251.188.0/24 +142.251.208.0/23 +142.251.211.0/24 +142.251.214.0/23 +142.251.216.0/24 +142.251.218.0/24 +142.251.220.0/22 +145.255.14.0/24 +148.163.48.0/24 +150.107.3.0/24 +154.0.29.0/24 +154.83.14.0/23 +154.85.102.0/24 +154.92.16.0/24 +156.233.67.0/24 +157.240.0.0/22 +157.240.6.0/23 +157.240.8.0/22 +157.240.12.0/23 +157.240.15.0/24 +157.240.16.0/23 +157.240.18.0/24 +157.240.20.0/23 +159.65.107.0/24 +159.106.121.0/24 +159.138.20.0/24 +162.125.1.0/24 +162.125.2.0/24 +162.125.6.0/23 +162.125.8.0/24 +162.125.17.0/24 +162.125.18.0/24 +162.125.32.0/24 +162.125.34.0/24 +162.125.80.0/24 +162.125.82.0/23 +162.220.12.0/24 +168.143.162.0/24 +168.143.171.0/24 +172.217.0.0/19 +172.217.129.0/24 +172.217.130.0/24 +172.217.133.0/24 +172.217.135.0/24 +172.217.160.0/20 +172.217.192.0/22 +172.217.197.0/24 +172.217.203.0/24 +172.217.204.0/24 +172.217.212.0/24 +172.217.214.0/23 +172.217.218.0/23 +172.217.222.0/24 +172.253.58.0/24 +172.253.62.0/23 +172.253.112.0/21 +172.253.120.0/24 +172.253.122.0/23 +172.253.124.0/22 +173.194.4.0/23 +173.194.12.0/24 +173.194.22.0/24 +173.194.28.0/23 +173.194.31.0/24 +173.194.49.0/24 +173.194.51.0/24 +173.194.54.0/23 +173.194.59.0/24 +173.194.65.0/24 +173.194.66.0/23 +173.194.68.0/23 +173.194.70.0/24 +173.194.73.0/24 +173.194.74.0/24 +173.194.76.0/22 +173.194.135.0/24 +173.194.150.0/24 +173.194.154.0/24 +173.194.161.0/24 +173.194.162.0/23 +173.194.164.0/24 +173.194.166.0/23 +173.194.174.0/23 +173.194.178.0/24 +173.194.182.0/23 +173.194.184.0/23 +173.194.187.0/24 +173.194.188.0/24 +173.194.190.0/23 +173.194.192.0/19 +173.208.182.0/24 +173.231.12.0/24 +173.234.53.0/24 +173.236.182.0/24 +173.236.212.0/24 +173.244.209.0/24 +173.244.217.0/24 +173.252.88.0/24 +173.252.105.0/24 +173.252.108.0/24 +173.252.248.0/24 +173.255.209.0/24 +173.255.213.0/24 +174.36.196.0/24 +174.36.228.0/24 +174.37.54.0/24 +174.37.154.0/24 +174.37.175.0/24 +174.37.243.0/24 +178.151.230.0/24 +178.176.156.0/24 +179.60.193.0/24 +180.163.150.0/23 +182.50.139.0/24 +182.79.251.0/24 +184.72.1.0/24 +184.173.136.0/24 +185.45.6.0/23 +185.60.216.0/24 +185.60.218.0/23 +185.158.208.0/24 +186.208.210.0/24 +187.7.116.0/24 +190.5.235.0/24 +192.133.77.0/24 +192.178.24.0/23 +192.178.27.0/24 +192.178.48.0/23 +192.178.50.0/24 +192.178.52.0/24 +192.178.54.0/24 +192.178.56.0/23 +192.178.128.0/24 +192.178.130.0/24 +193.109.164.0/24 +194.78.0.0/24 +196.49.8.0/24 +198.27.124.0/24 +198.44.185.0/24 +199.16.156.0/24 +199.16.158.0/24 +199.59.148.0/23 +199.59.150.0/24 +199.96.58.0/23 +199.96.61.0/24 +199.96.62.0/23 +199.193.116.0/24 +201.0.223.0/24 +202.53.137.0/24 +202.160.128.0/23 +202.160.130.0/24 +202.169.173.0/24 +202.182.98.0/24 +203.66.182.0/24 +203.111.254.0/24 +203.113.51.0/24 +203.113.189.0/24 +203.208.39.0/24 +203.208.40.0/23 +203.208.43.0/24 +203.208.49.0/24 +203.208.50.0/24 +203.233.96.0/24 +204.79.197.0/24 +205.186.152.0/24 +208.31.254.0/24 +208.43.170.0/24 +208.43.237.0/24 +208.77.47.0/24 +208.101.21.0/24 +208.101.60.0/24 +209.85.144.0/22 +209.85.165.0/24 +209.85.200.0/22 +209.85.224.0/24 +209.85.226.0/24 +209.85.232.0/22 +209.95.56.0/24 +210.56.51.0/24 +210.139.253.0/24 +210.209.84.0/24 +211.104.160.0/24 +212.113.52.0/24 +213.59.210.0/24 +216.58.192.0/20 +216.58.208.0/21 +216.58.217.0/24 +216.58.220.0/22 +216.239.32.0/24 +216.239.34.0/24 +216.239.36.0/24 +216.239.38.0/24 +220.181.174.0/24 +""" diff --git a/tests/test_cidr4_merger.py b/tests/test_cidr4_merger.py index 24a56a0..c891934 100644 --- a/tests/test_cidr4_merger.py +++ b/tests/test_cidr4_merger.py @@ -13,13 +13,15 @@ from cidr4_merger import ( make_groups, make_parent, merge_neighbors, + merge_nodes_cycle, merge_nodes_deprecated, merge_nodes_recursion, - merge_nodes_cycle, reduce_nodes, sort_nodes, ) +from .cidr4_data_for_tests import test_cidr4_data + def test_true(): assert True @@ -378,3 +380,16 @@ def test_merge_nodes_cycle(): ) assert exc_info.type is Cidr4MergerError assert str(exc_info.value) == "The top of the tree has no parent!" + + +def test_merge_nodes_recursion_vs_cycle(): + required_len = 20 + + test_data = test_cidr4_data.strip().splitlines() + test_nodes = list(map(cidr4_to_node, test_data)) + test_nodes = sort_nodes(test_nodes) + + merged_nodes_recursion = merge_nodes_recursion(test_nodes, required_len) + merged_nodes_cycle = merge_nodes_cycle(test_nodes, required_len) + + assert merged_nodes_recursion == merged_nodes_cycle