1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00
netbox-community-netbox/netbox/dcim/tests/test_natural_ordering.py

158 lines
4.1 KiB
Python
Raw Normal View History

from django.test import TestCase
from dcim.models import Device, DeviceRole, DeviceType, Interface, Manufacturer, Site
class NaturalOrderingTestCase(TestCase):
def setUp(self):
site = Site.objects.create(name='Test Site 1', slug='test-site-1')
manufacturer = Manufacturer.objects.create(name='Test Manufacturer 1', slug='test-manufacturer-1')
devicetype = DeviceType.objects.create(
manufacturer=manufacturer, model='Test Device Type 1', slug='test-device-type-1'
)
devicerole = DeviceRole.objects.create(
name='Test Device Role 1', slug='test-device-role-1', color='ff0000'
)
self.device = Device.objects.create(
device_type=devicetype, device_role=devicerole, name='Test Device 1', site=site
)
def _compare_names(self, queryset, names):
for i, obj in enumerate(queryset):
self.assertEqual(obj.name, names[i])
def test_interface_ordering_numeric(self):
INTERFACES = (
'0',
'0.1',
'0.2',
'0.10',
'0.100',
'0:1',
'0:1.1',
'0:1.2',
'0:1.10',
'0:2',
'0:2.1',
'0:2.2',
'0:2.10',
'1',
'1.1',
'1.2',
'1.10',
'1.100',
'1:1',
'1:1.1',
'1:1.2',
'1:1.10',
'1:2',
'1:2.1',
'1:2.2',
'1:2.10',
)
for name in INTERFACES:
iface = Interface(device=self.device, name=name)
iface.save()
self._compare_names(Interface.objects.filter(device=self.device), INTERFACES)
def test_interface_ordering_linux(self):
INTERFACES = (
'eth0',
'eth0.1',
'eth0.2',
'eth0.10',
'eth0.100',
'eth1',
'eth1.1',
'eth1.2',
'eth1.100',
'lo0',
)
for name in INTERFACES:
iface = Interface(device=self.device, name=name)
iface.save()
self._compare_names(Interface.objects.filter(device=self.device), INTERFACES)
def test_interface_ordering_junos(self):
INTERFACES = (
'xe-0/0/0',
'xe-0/0/1',
'xe-0/0/2',
'xe-0/0/3',
'xe-0/1/0',
'xe-0/1/1',
'xe-0/1/2',
'xe-0/1/3',
'xe-1/0/0',
'xe-1/0/1',
'xe-1/0/2',
'xe-1/0/3',
'xe-1/1/0',
'xe-1/1/1',
'xe-1/1/2',
'xe-1/1/3',
'xe-2/0/0.1',
'xe-2/0/0.2',
'xe-2/0/0.10',
'xe-2/0/0.11',
'xe-2/0/0.100',
'xe-3/0/0:1',
'xe-3/0/0:2',
'xe-3/0/0:10',
'xe-3/0/0:11',
'xe-3/0/0:100',
'xe-10/1/0',
'xe-10/1/1',
'xe-10/1/2',
'xe-10/1/3',
'ae1',
'ae2',
'ae10.1',
'ae10.10',
'irb.1',
'irb.2',
'irb.10',
'irb.100',
'lo0',
)
for name in INTERFACES:
iface = Interface(device=self.device, name=name)
iface.save()
self._compare_names(Interface.objects.filter(device=self.device), INTERFACES)
def test_interface_ordering_ios(self):
INTERFACES = (
'GigabitEthernet0/1',
'GigabitEthernet0/2',
'GigabitEthernet0/10',
'TenGigabitEthernet0/20',
'TenGigabitEthernet0/21',
'GigabitEthernet1/1',
'GigabitEthernet1/2',
'GigabitEthernet1/10',
'TenGigabitEthernet1/20',
'TenGigabitEthernet1/21',
'FastEthernet1',
'FastEthernet2',
'FastEthernet10',
)
for name in INTERFACES:
iface = Interface(device=self.device, name=name)
iface.save()
self._compare_names(Interface.objects.filter(device=self.device), INTERFACES)