From 851c040032632bb41858417071cc087e929f0208 Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Tue, 28 Jan 2020 22:11:31 -0600 Subject: [PATCH 1/9] #4034 - Create tests for prefixes --- netbox/ipam/tests/test_ordering.py | 163 +++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 netbox/ipam/tests/test_ordering.py diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py new file mode 100644 index 000000000..495f7702e --- /dev/null +++ b/netbox/ipam/tests/test_ordering.py @@ -0,0 +1,163 @@ +from django.test import TestCase + +from ipam.choices import IPAddressRoleChoices, PrefixStatusChoices +from ipam.models import Aggregate, IPAddress, Prefix, RIR, VLAN, VLANGroup, VRF + +import netaddr + + +class PrefixOrderingTestCase(TestCase): + + def _create_prefix(self, prefixes): + prefixobjects = [] + for pfx in prefixes: + status, vrf, prefix = pfx + family = 4 + if not netaddr.valid_ipv4(prefix): + family = 6 + pfx = Prefix(prefix=prefix, family=family, vrf=vrf, status=status) + prefixobjects.append(pfx) + + return prefixobjects + + def _compare_prefix(self, queryset, prefixes): + + for i, obj in enumerate(queryset): + status, vrf, prefix = prefixes[i] + self.assertEqual((obj.vrf, obj.prefix), (vrf, prefix)) + + def _compare_complex(self, queryset, prefixes): + qsprefixes, regprefixes = [], [] + for i, obj in enumerate(queryset): + qsprefixes.append(obj.prefix) + for pfx in prefixes: + regprefixes.append(pfx[2]) + return (qsprefixes, regprefixes) + + + + def test_prefix_ordering(self): + # Setup Prefixes + prefixes = ( + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/8')), + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.0/24')), + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.1.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')), + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.2.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.0/24')), + + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.16.0.0/12')), + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.16.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.0/24')), + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.17.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.0/24')), + + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('192.168.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.0/24')) + ) + Prefix.objects.bulk_create(self._create_prefix(prefixes)) + + # Test + self._compare_prefix(Prefix.objects.all(), prefixes) + + def test_prefix_vrf_ordering(self): + # Setup VRFs + vrfa = VRF(name='VRF A') + vrfb = VRF(name='VRF B') + vrfs = [vrfa, vrfb] + VRF.objects.bulk_create(vrfs) + + # Setup Prefixes + prefixes = ( + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('192.168.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.0/24')), + + (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.0.0/8')), + (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.0/24')), + (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.1.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.0/24')), + (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.2.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.0/24')), + + (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.16.0.0/12')), + (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.16.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.0/24')), + (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.17.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.0/24')), + ) + Prefix.objects.bulk_create(self._create_prefix(prefixes)) + + # Test + self._compare_prefix(Prefix.objects.all(), prefixes) + + def test_prefix_complex_ordering(self): + # Setup VRF's + vrf = VRF(name='VRF A') + vrfs = [vrf] + VRF.objects.bulk_create(vrfs) + + # Setup Prefixes + prefixes = [ + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/8')), + (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')), + (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.0.0/24')), + (PrefixStatusChoices.STATUS_CONTAINER, vrf, netaddr.IPNetwork('10.0.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.1.0/25')), + (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.1.0/24')) + ] + Prefix.objects.bulk_create(self._create_prefix(prefixes)) + + # Test + qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes) + self.assertEquals(qsprefixes, compprefixes) From f76396464f10b3bc4689c2919d357c2e4301d2ee Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Wed, 29 Jan 2020 12:52:48 -0600 Subject: [PATCH 2/9] #4034 - Create tests for addresses --- netbox/ipam/tests/test_ordering.py | 176 ++++++++++++++++++++++++++--- 1 file changed, 162 insertions(+), 14 deletions(-) diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py index 495f7702e..729d28d12 100644 --- a/netbox/ipam/tests/test_ordering.py +++ b/netbox/ipam/tests/test_ordering.py @@ -1,12 +1,20 @@ from django.test import TestCase -from ipam.choices import IPAddressRoleChoices, PrefixStatusChoices +from ipam.choices import IPAddressStatusChoices, PrefixStatusChoices from ipam.models import Aggregate, IPAddress, Prefix, RIR, VLAN, VLANGroup, VRF import netaddr class PrefixOrderingTestCase(TestCase): + vrfs = None + + def setUp(self): + vrfa = VRF(name="VRF A") + vrfb = VRF(name="VRF B") + vrfc = VRF(name="VRF C") + VRF.objects.bulk_create([vrfa, vrfb, vrfc]) + self.vrfs = (vrfa, vrfb, vrfc) def _create_prefix(self, prefixes): prefixobjects = [] @@ -86,10 +94,7 @@ class PrefixOrderingTestCase(TestCase): def test_prefix_vrf_ordering(self): # Setup VRFs - vrfa = VRF(name='VRF A') - vrfb = VRF(name='VRF B') - vrfs = [vrfa, vrfb] - VRF.objects.bulk_create(vrfs) + vrfa, vrfb, vrfc = self.vrfs # Setup Prefixes prefixes = ( @@ -139,10 +144,8 @@ class PrefixOrderingTestCase(TestCase): self._compare_prefix(Prefix.objects.all(), prefixes) def test_prefix_complex_ordering(self): - # Setup VRF's - vrf = VRF(name='VRF A') - vrfs = [vrf] - VRF.objects.bulk_create(vrfs) + # Setup VRFs + vrfa, vrfb, vrfc = self.vrfs # Setup Prefixes prefixes = [ @@ -150,14 +153,159 @@ class PrefixOrderingTestCase(TestCase): (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')), (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')), (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.0.0/24')), - (PrefixStatusChoices.STATUS_CONTAINER, vrf, netaddr.IPNetwork('10.0.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.0.1.0/25')), - (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrf, netaddr.IPNetwork('10.1.1.0/24')) + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')), + (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.1.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/25')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.0/24')), + (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24')) ] Prefix.objects.bulk_create(self._create_prefix(prefixes)) # Test qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes) self.assertEquals(qsprefixes, compprefixes) + + +class IPAddressOrderingTestCase(TestCase): + vrfs = None + + def setUp(self): + vrfa = VRF(name="VRF A") + vrfb = VRF(name="VRF B") + vrfc = VRF(name="VRF C") + VRF.objects.bulk_create([vrfa, vrfb, vrfc]) + self.vrfs = (vrfa, vrfb, vrfc) + + def _create_address(self, addresses): + addressobjects = [] + for addr in addresses: + status, vrf, address = addr + family = 4 + if not netaddr.valid_ipv4(address): + family = 6 + addressobj = IPAddress(address=address, vrf=vrf, status=status, family=family) + addressobjects.append(addressobj) + + return addressobjects + + def _compare_address(self, queryset, addresses): + + for i, obj in enumerate(queryset): + status, vrf, address = addresses[i] + self.assertEqual((obj.vrf, obj.address), (vrf, address)) + + def _compare_complex(self, queryset, addresses): + qsaddress, regaddress = [], [] + for i, obj in enumerate(queryset): + qsaddress.append(obj.address) + for addr in addresses: + regaddress.append(addr[2]) + return (qsaddress, regaddress) + + + + def test_address_ordering(self): + # Setup Addresses + addresses = ( + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.1/24')), + + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.1/24')), + + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24')) + ) + IPAddress.objects.bulk_create(self._create_address(addresses)) + + # Test + self._compare_address(IPAddress.objects.all(), addresses) + + def test_address_vrf_ordering(self): + # Setup VRFs + vrfa, vrfb, vrfc = self.vrfs + + # Setup Addresses + addresses = ( + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.1/24')), + + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.1/24')), + + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24')), + ) + IPAddress.objects.bulk_create(self._create_address(addresses)) + + # Test + self._compare_address(IPAddress.objects.all(), addresses) + + def test_address_complex_ordering(self): + # Setup VRFs + vrfa, vrfb, vrfc = self.vrfs + + # Setup addresses + addresses = [ + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/25')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')), + (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')), + ] + IPAddress.objects.bulk_create(self._create_address(addresses)) + + # Test + qsaddresses, compaddresses = self._compare_complex(IPAddress.objects.all(), addresses) + self.assertEquals(qsaddresses, compaddresses) From 4331082d82c7ffb07e334e28bff415825dc7e4a2 Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Wed, 29 Jan 2020 12:54:55 -0600 Subject: [PATCH 3/9] Remove complex ordering for IP addresses After review complex ordering does not appear to be required --- netbox/ipam/tests/test_ordering.py | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py index 729d28d12..8ee71c04f 100644 --- a/netbox/ipam/tests/test_ordering.py +++ b/netbox/ipam/tests/test_ordering.py @@ -194,15 +194,6 @@ class IPAddressOrderingTestCase(TestCase): status, vrf, address = addresses[i] self.assertEqual((obj.vrf, obj.address), (vrf, address)) - def _compare_complex(self, queryset, addresses): - qsaddress, regaddress = [], [] - for i, obj in enumerate(queryset): - qsaddress.append(obj.address) - for addr in addresses: - regaddress.append(addr[2]) - return (qsaddress, regaddress) - - def test_address_ordering(self): # Setup Addresses @@ -290,22 +281,3 @@ class IPAddressOrderingTestCase(TestCase): # Test self._compare_address(IPAddress.objects.all(), addresses) - - def test_address_complex_ordering(self): - # Setup VRFs - vrfa, vrfb, vrfc = self.vrfs - - # Setup addresses - addresses = [ - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/25')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')), - ] - IPAddress.objects.bulk_create(self._create_address(addresses)) - - # Test - qsaddresses, compaddresses = self._compare_complex(IPAddress.objects.all(), addresses) - self.assertEquals(qsaddresses, compaddresses) From 9f0fbcfc917666e89a1ea636e34c3d3b486b1920 Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Wed, 29 Jan 2020 12:55:19 -0600 Subject: [PATCH 4/9] Cleanup Imports --- netbox/ipam/tests/test_ordering.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py index 8ee71c04f..6b2d6ad08 100644 --- a/netbox/ipam/tests/test_ordering.py +++ b/netbox/ipam/tests/test_ordering.py @@ -1,7 +1,7 @@ from django.test import TestCase from ipam.choices import IPAddressStatusChoices, PrefixStatusChoices -from ipam.models import Aggregate, IPAddress, Prefix, RIR, VLAN, VLANGroup, VRF +from ipam.models import IPAddress, Prefix, VRF import netaddr From 4069103b2c827f9e281a7a77a27e340d211f6f21 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Fri, 31 Jan 2020 10:05:57 -0600 Subject: [PATCH 5/9] Fix PEP8 errors and document functions --- netbox/ipam/tests/test_ordering.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py index 6b2d6ad08..6818df399 100644 --- a/netbox/ipam/tests/test_ordering.py +++ b/netbox/ipam/tests/test_ordering.py @@ -16,6 +16,7 @@ class PrefixOrderingTestCase(TestCase): VRF.objects.bulk_create([vrfa, vrfb, vrfc]) self.vrfs = (vrfa, vrfb, vrfc) + # Function to create all prefixes def _create_prefix(self, prefixes): prefixobjects = [] for pfx in prefixes: @@ -28,22 +29,26 @@ class PrefixOrderingTestCase(TestCase): return prefixobjects + # Prefix Comparison function def _compare_prefix(self, queryset, prefixes): - + # Loop and compare each prefix for i, obj in enumerate(queryset): status, vrf, prefix = prefixes[i] self.assertEqual((obj.vrf, obj.prefix), (vrf, prefix)) + # Complex prefix comparison function def _compare_complex(self, queryset, prefixes): qsprefixes, regprefixes = [], [] + # Loop and build list of queryset prefixes to compare for i, obj in enumerate(queryset): qsprefixes.append(obj.prefix) + # Loop and build list of prefixes to compare for pfx in prefixes: regprefixes.append(pfx[2]) + + # Return two lists as a tuple return (qsprefixes, regprefixes) - - def test_prefix_ordering(self): # Setup Prefixes prefixes = ( @@ -176,8 +181,10 @@ class IPAddressOrderingTestCase(TestCase): VRF.objects.bulk_create([vrfa, vrfb, vrfc]) self.vrfs = (vrfa, vrfb, vrfc) + # Function to build all addresses def _create_address(self, addresses): addressobjects = [] + # Loop and build IPAddress object for addr in addresses: status, vrf, address = addr family = 4 @@ -188,13 +195,13 @@ class IPAddressOrderingTestCase(TestCase): return addressobjects + # Function to compare all addresses def _compare_address(self, queryset, addresses): - + # Loop and compare addresses for i, obj in enumerate(queryset): status, vrf, address = addresses[i] self.assertEqual((obj.vrf, obj.address), (vrf, address)) - def test_address_ordering(self): # Setup Addresses addresses = ( From 9fdfe998442c55f5ee0e625c8a3812e5037e04c9 Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Mon, 10 Feb 2020 21:37:40 -0600 Subject: [PATCH 6/9] Update tests Add docstrings Consolidate tests --- netbox/ipam/tests/test_ordering.py | 358 +++++++++++------------------ 1 file changed, 128 insertions(+), 230 deletions(-) diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py index 6b2d6ad08..c1707740e 100644 --- a/netbox/ipam/tests/test_ordering.py +++ b/netbox/ipam/tests/test_ordering.py @@ -5,279 +5,177 @@ from ipam.models import IPAddress, Prefix, VRF import netaddr - -class PrefixOrderingTestCase(TestCase): +class OrderingTestBase(TestCase): vrfs = None + """ + Setup the VRFs for the class as a whole + """ def setUp(self): - vrfa = VRF(name="VRF A") - vrfb = VRF(name="VRF B") - vrfc = VRF(name="VRF C") - VRF.objects.bulk_create([vrfa, vrfb, vrfc]) - self.vrfs = (vrfa, vrfb, vrfc) - - def _create_prefix(self, prefixes): - prefixobjects = [] - for pfx in prefixes: - status, vrf, prefix = pfx - family = 4 - if not netaddr.valid_ipv4(prefix): - family = 6 - pfx = Prefix(prefix=prefix, family=family, vrf=vrf, status=status) - prefixobjects.append(pfx) - - return prefixobjects - - def _compare_prefix(self, queryset, prefixes): + self.vrfs = (VRF(name="VRF A"), VRF(name="VRF B"), VRF(name="VRF C")) + VRF.objects.bulk_create(self.vrfs) + """ + Perform the comparison of the queryset object and the object used to instantiate the queryset. + """ + def _compare(self, queryset, objectset): for i, obj in enumerate(queryset): - status, vrf, prefix = prefixes[i] - self.assertEqual((obj.vrf, obj.prefix), (vrf, prefix)) + if isinstance(obj, Prefix): + self.assertEqual((obj.vrf, obj.prefix), (objectset[i]['vrf'], objectset[i]['prefix'])) + elif isinstance(obj, IPAddress): + self.assertEqual((obj.vrf, obj.address), (objectset[i]['vrf'], objectset[i]['address'])) + +class PrefixOrderingTestCase(OrderingTestBase): + + """ + This is for comparing the complex ordering test case + """ def _compare_complex(self, queryset, prefixes): qsprefixes, regprefixes = [], [] for i, obj in enumerate(queryset): qsprefixes.append(obj.prefix) for pfx in prefixes: - regprefixes.append(pfx[2]) - return (qsprefixes, regprefixes) - - - - def test_prefix_ordering(self): - # Setup Prefixes - prefixes = ( - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/8')), - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.0/24')), - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.1.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')), - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.2.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.0/24')), - - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.16.0.0/12')), - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.16.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.0/24')), - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('172.17.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.0/24')), - - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('192.168.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.0/24')) - ) - Prefix.objects.bulk_create(self._create_prefix(prefixes)) - - # Test - self._compare_prefix(Prefix.objects.all(), prefixes) + regprefixes.append(pfx['prefix']) + self.assertEquals(qsprefixes, regprefixes) + """ + This is a very basic test, which tests both prefixes without VRFs and prefixes with VRFs + """ def test_prefix_vrf_ordering(self): # Setup VRFs vrfa, vrfb, vrfc = self.vrfs # Setup Prefixes prefixes = ( - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('192.168.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.0/24')), + {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.1.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.2.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.3.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.4.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.5.0/24')}, - (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.0.0/8')), - (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.0/24')), - (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.1.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.0/24')), - (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.2.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.0/24')), + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/8')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.2.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.3.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.4.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.1.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.2.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.3.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.4.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.1.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.2.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.3.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.4.0/24')}, - (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.16.0.0/12')), - (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.16.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.0/24')), - (PrefixStatusChoices.STATUS_CONTAINER, vrfb, netaddr.IPNetwork('172.17.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.0/24')), + {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/12')}, + {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.1.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.2.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.3.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.4.0/24')}, + {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.0.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.1.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.2.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.3.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.4.0/24')}, ) - Prefix.objects.bulk_create(self._create_prefix(prefixes)) + + Prefix.objects.bulk_create([Prefix(status=args['status'], vrf=args['vrf'], family=args['family'], prefix=args['prefix']) for args in prefixes]) # Test - self._compare_prefix(Prefix.objects.all(), prefixes) + self._compare(Prefix.objects.all(), prefixes) + """ + This function tests a compex ordering of interwoven prefixes and vrfs. This is the current expected ordering of VRFs + This includes the testing of the Container status. + + The proper ordering, to get proper containerization should be: + None:10.0.0.0/8 + None:10.0.0.0/16 + VRF A:10.0.0.0/24 + VRF A:10.0.1.0/24 + VRF A:10.0.1.0/25 + None:10.1.0.0/16 + VRF A:10.1.0.0/24 + VRF A:10.1.1.0/24 + None: 192.168.0.0/16 + """ def test_prefix_complex_ordering(self): # Setup VRFs vrfa, vrfb, vrfc = self.vrfs # Setup Prefixes prefixes = [ - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/8')), - (PrefixStatusChoices.STATUS_CONTAINER, None, netaddr.IPNetwork('10.0.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.0/16')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.0/24')), - (PrefixStatusChoices.STATUS_CONTAINER, vrfa, netaddr.IPNetwork('10.0.1.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.0/25')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.0/24')), - (PrefixStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.0/24')) + {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/8')}, + {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/16')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/25')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/24')}, + {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.1.0/24')}, ] - Prefix.objects.bulk_create(self._create_prefix(prefixes)) + Prefix.objects.bulk_create([Prefix(status=args['status'], vrf=args['vrf'], family=args['family'], prefix=args['prefix']) for args in prefixes]) # Test - qsprefixes, compprefixes = self._compare_complex(Prefix.objects.all(), prefixes) - self.assertEquals(qsprefixes, compprefixes) + self._compare_complex(Prefix.objects.all(), prefixes) -class IPAddressOrderingTestCase(TestCase): - vrfs = None - - def setUp(self): - vrfa = VRF(name="VRF A") - vrfb = VRF(name="VRF B") - vrfc = VRF(name="VRF C") - VRF.objects.bulk_create([vrfa, vrfb, vrfc]) - self.vrfs = (vrfa, vrfb, vrfc) - - def _create_address(self, addresses): - addressobjects = [] - for addr in addresses: - status, vrf, address = addr - family = 4 - if not netaddr.valid_ipv4(address): - family = 6 - addressobj = IPAddress(address=address, vrf=vrf, status=status, family=family) - addressobjects.append(addressobj) - - return addressobjects - - def _compare_address(self, queryset, addresses): - - for i, obj in enumerate(queryset): - status, vrf, address = addresses[i] - self.assertEqual((obj.vrf, obj.address), (vrf, address)) - - - def test_address_ordering(self): - # Setup Addresses - addresses = ( - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.0.4.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.1.4.0/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('10.2.4.1/24')), - - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.16.4.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('172.17.4.1/24')), - - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24')) - ) - IPAddress.objects.bulk_create(self._create_address(addresses)) - - # Test - self._compare_address(IPAddress.objects.all(), addresses) - +class IPAddressOrderingTestCase(OrderingTestBase): + """ + This function tests ordering with the inclusion of vrfs + """ def test_address_vrf_ordering(self): # Setup VRFs vrfa, vrfb, vrfc = self.vrfs # Setup Addresses addresses = ( - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.0.4.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.1.4.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfa, netaddr.IPNetwork('10.2.4.1/24')), + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.0.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.1.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.2.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.3.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.4.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.0.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.1.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.2.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.3.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.4.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.0.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.1.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.2.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.3.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.4.1/24')}, - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.16.4.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, vrfb, netaddr.IPNetwork('172.17.4.1/24')), + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.0.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.1.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.2.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.3.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.4.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.0.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.1.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.2.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.3.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.4.1/24')}, - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.0.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.1.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.2.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.3.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.4.1/24')), - (IPAddressStatusChoices.STATUS_ACTIVE, None, netaddr.IPNetwork('192.168.5.1/24')), + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.0.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.1.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.2.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.3.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.4.1/24')}, + {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.5.1/24')}, ) - IPAddress.objects.bulk_create(self._create_address(addresses)) + IPAddress.objects.bulk_create([IPAddress(status=args['status'], vrf=args['vrf'], family=args['family'], address=args['address']) for args in addresses]) # Test - self._compare_address(IPAddress.objects.all(), addresses) + self._compare(IPAddress.objects.all(), addresses) From 96093d502477d317cbd7398b0bbf3c0fbcdfeef9 Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Tue, 11 Feb 2020 18:21:58 -0600 Subject: [PATCH 7/9] Fix PEP8 errors --- netbox/ipam/tests/test_ordering.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py index c1707740e..58a42fc46 100644 --- a/netbox/ipam/tests/test_ordering.py +++ b/netbox/ipam/tests/test_ordering.py @@ -5,6 +5,7 @@ from ipam.models import IPAddress, Prefix, VRF import netaddr + class OrderingTestBase(TestCase): vrfs = None @@ -97,7 +98,7 @@ class PrefixOrderingTestCase(OrderingTestBase): """ This function tests a compex ordering of interwoven prefixes and vrfs. This is the current expected ordering of VRFs This includes the testing of the Container status. - + The proper ordering, to get proper containerization should be: None:10.0.0.0/8 None:10.0.0.0/16 From 1c11278884baf621506ea84f29650272f98950d5 Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Tue, 11 Feb 2020 21:01:43 -0600 Subject: [PATCH 8/9] Fix typo in docstring --- netbox/ipam/tests/test_ordering.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py index 58a42fc46..3dffe4059 100644 --- a/netbox/ipam/tests/test_ordering.py +++ b/netbox/ipam/tests/test_ordering.py @@ -96,7 +96,7 @@ class PrefixOrderingTestCase(OrderingTestBase): self._compare(Prefix.objects.all(), prefixes) """ - This function tests a compex ordering of interwoven prefixes and vrfs. This is the current expected ordering of VRFs + This function tests a complex ordering of interwoven prefixes and vrfs. This is the current expected ordering of VRFs This includes the testing of the Container status. The proper ordering, to get proper containerization should be: From 9fb72c71bfb0224874935ee6b5b159dbfc33eff5 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 12 Feb 2020 11:26:40 -0600 Subject: [PATCH 9/9] Fixes: #4130 Corrects service name for the RQ worker service in docs/installation/upgrading.md --- netbox/ipam/tests/test_ordering.py | 240 ++++++++++++++--------------- 1 file changed, 117 insertions(+), 123 deletions(-) diff --git a/netbox/ipam/tests/test_ordering.py b/netbox/ipam/tests/test_ordering.py index 3dffe4059..153bedddc 100644 --- a/netbox/ipam/tests/test_ordering.py +++ b/netbox/ipam/tests/test_ordering.py @@ -9,174 +9,168 @@ import netaddr class OrderingTestBase(TestCase): vrfs = None - """ - Setup the VRFs for the class as a whole - """ def setUp(self): + """ + Setup the VRFs for the class as a whole + """ self.vrfs = (VRF(name="VRF A"), VRF(name="VRF B"), VRF(name="VRF C")) VRF.objects.bulk_create(self.vrfs) - """ - Perform the comparison of the queryset object and the object used to instantiate the queryset. - """ def _compare(self, queryset, objectset): + """ + Perform the comparison of the queryset object and the object used to instantiate the queryset. + """ for i, obj in enumerate(queryset): - if isinstance(obj, Prefix): - self.assertEqual((obj.vrf, obj.prefix), (objectset[i]['vrf'], objectset[i]['prefix'])) - elif isinstance(obj, IPAddress): - self.assertEqual((obj.vrf, obj.address), (objectset[i]['vrf'], objectset[i]['address'])) + self.assertEqual(obj, objectset[i]) + + def _compare_ne(self, queryset, objectset): + """ + Perform the comparison of the queryset object and the object used to instantiate the queryset. + """ + for i, obj in enumerate(queryset): + self.assertNotEqual(obj, objectset[i]) class PrefixOrderingTestCase(OrderingTestBase): - """ - This is for comparing the complex ordering test case - """ - def _compare_complex(self, queryset, prefixes): - qsprefixes, regprefixes = [], [] - for i, obj in enumerate(queryset): - qsprefixes.append(obj.prefix) - for pfx in prefixes: - regprefixes.append(pfx['prefix']) - self.assertEquals(qsprefixes, regprefixes) - - """ - This is a very basic test, which tests both prefixes without VRFs and prefixes with VRFs - """ def test_prefix_vrf_ordering(self): + """ + This is a very basic test, which tests both prefixes without VRFs and prefixes with VRFs + """ # Setup VRFs vrfa, vrfb, vrfc = self.vrfs # Setup Prefixes prefixes = ( - {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.1.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.2.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.3.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.4.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.5.0/24')}, + Prefix(status=PrefixStatusChoices.STATUS_CONTAINER, vrf=None, family=4, prefix=netaddr.IPNetwork('192.168.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=None, family=4, prefix=netaddr.IPNetwork('192.168.0.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=None, family=4, prefix=netaddr.IPNetwork('192.168.1.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=None, family=4, prefix=netaddr.IPNetwork('192.168.2.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=None, family=4, prefix=netaddr.IPNetwork('192.168.3.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=None, family=4, prefix=netaddr.IPNetwork('192.168.4.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=None, family=4, prefix=netaddr.IPNetwork('192.168.5.0/24')), - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/8')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.2.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.3.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.4.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.1.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.2.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.3.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.4.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.1.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.2.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.3.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.2.4.0/24')}, + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.0.0/8')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.0.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.1.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.2.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.3.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.4.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.1.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.1.1.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.1.2.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.1.3.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.1.4.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.2.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.2.1.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.2.2.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.2.3.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.2.4.0/24')), - {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/12')}, - {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.0.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.1.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.2.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.3.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.16.4.0/24')}, - {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.0.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.1.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.2.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.3.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "prefix": netaddr.IPNetwork('172.17.4.0/24')}, + Prefix(status=PrefixStatusChoices.STATUS_CONTAINER, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.16.0.0/12')), + Prefix(status=PrefixStatusChoices.STATUS_CONTAINER, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.16.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.16.0.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.16.1.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.16.2.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.16.3.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.16.4.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_CONTAINER, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.17.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.17.0.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.17.1.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.17.2.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.17.3.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, prefix=netaddr.IPNetwork('172.17.4.0/24')), ) - Prefix.objects.bulk_create([Prefix(status=args['status'], vrf=args['vrf'], family=args['family'], prefix=args['prefix']) for args in prefixes]) + Prefix.objects.bulk_create(prefixes) # Test self._compare(Prefix.objects.all(), prefixes) - """ - This function tests a complex ordering of interwoven prefixes and vrfs. This is the current expected ordering of VRFs - This includes the testing of the Container status. - - The proper ordering, to get proper containerization should be: - None:10.0.0.0/8 - None:10.0.0.0/16 - VRF A:10.0.0.0/24 - VRF A:10.0.1.0/24 - VRF A:10.0.1.0/25 - None:10.1.0.0/16 - VRF A:10.1.0.0/24 - VRF A:10.1.1.0/24 - None: 192.168.0.0/16 - """ def test_prefix_complex_ordering(self): + """ + This function tests a complex ordering of interwoven prefixes and vrfs. This is the current expected ordering of VRFs + This includes the testing of the Container status. + + The proper ordering, to get proper containerization should be: + None:10.0.0.0/8 + None:10.0.0.0/16 + VRF A:10.0.0.0/24 + VRF A:10.0.1.0/24 + VRF A:10.0.1.0/25 + None:10.1.0.0/16 + VRF A:10.1.0.0/24 + VRF A:10.1.1.0/24 + None: 192.168.0.0/16 + """ # Setup VRFs vrfa, vrfb, vrfc = self.vrfs # Setup Prefixes prefixes = [ - {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/8')}, - {"status": PrefixStatusChoices.STATUS_CONTAINER, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "prefix": netaddr.IPNetwork('192.168.0.0/16')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.0.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.0.1.0/25')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.0.0/24')}, - {"status": PrefixStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "prefix": netaddr.IPNetwork('10.1.1.0/24')}, + Prefix(status=PrefixStatusChoices.STATUS_CONTAINER, vrf=None, family=4, prefix=netaddr.IPNetwork('10.0.0.0/8')), + Prefix(status=PrefixStatusChoices.STATUS_CONTAINER, vrf=None, family=4, prefix=netaddr.IPNetwork('10.0.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=None, family=4, prefix=netaddr.IPNetwork('10.1.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=None, family=4, prefix=netaddr.IPNetwork('192.168.0.0/16')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.0.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.1.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.0.1.0/25')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.1.0.0/24')), + Prefix(status=PrefixStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, prefix=netaddr.IPNetwork('10.1.1.0/24')), ] - Prefix.objects.bulk_create([Prefix(status=args['status'], vrf=args['vrf'], family=args['family'], prefix=args['prefix']) for args in prefixes]) + Prefix.objects.bulk_create(prefixes) # Test - self._compare_complex(Prefix.objects.all(), prefixes) + self._compare(Prefix.objects.all(), prefixes) class IPAddressOrderingTestCase(OrderingTestBase): - """ - This function tests ordering with the inclusion of vrfs - """ + def test_address_vrf_ordering(self): + """ + This function tests ordering with the inclusion of vrfs + """ # Setup VRFs vrfa, vrfb, vrfc = self.vrfs # Setup Addresses addresses = ( - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.0.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.1.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.2.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.3.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.0.4.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.0.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.1.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.2.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.3.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.1.4.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.0.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.1.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.2.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.3.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfa, "family": 4, "address": netaddr.IPNetwork('10.2.4.1/24')}, + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.0.0.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.0.1.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.0.2.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.0.3.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.0.4.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.1.0.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.1.1.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.1.2.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.1.3.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.1.4.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.2.0.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.2.1.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.2.2.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.2.3.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfa, family=4, address=netaddr.IPNetwork('10.2.4.1/24')), - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.0.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.1.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.2.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.3.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.16.4.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.0.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.1.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.2.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.3.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": vrfb, "family": 4, "address": netaddr.IPNetwork('172.17.4.1/24')}, + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.16.0.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.16.1.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.16.2.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.16.3.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.16.4.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.17.0.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.17.1.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.17.2.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.17.3.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=vrfb, family=4, address=netaddr.IPNetwork('172.17.4.1/24')), - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.0.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.1.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.2.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.3.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.4.1/24')}, - {"status": IPAddressStatusChoices.STATUS_ACTIVE, "vrf": None, "family": 4, "address": netaddr.IPNetwork('192.168.5.1/24')}, + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=None, family=4, address=netaddr.IPNetwork('192.168.0.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=None, family=4, address=netaddr.IPNetwork('192.168.1.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=None, family=4, address=netaddr.IPNetwork('192.168.2.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=None, family=4, address=netaddr.IPNetwork('192.168.3.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=None, family=4, address=netaddr.IPNetwork('192.168.4.1/24')), + IPAddress(status=IPAddressStatusChoices.STATUS_ACTIVE, vrf=None, family=4, address=netaddr.IPNetwork('192.168.5.1/24')), ) - IPAddress.objects.bulk_create([IPAddress(status=args['status'], vrf=args['vrf'], family=args['family'], address=args['address']) for args in addresses]) + IPAddress.objects.bulk_create(addresses) # Test self._compare(IPAddress.objects.all(), addresses)