示例#1
0
文件: test_api.py 项目: xroot88/quark
    def test_ordering_subnets_ip_version(self):
        """Order by ip_version primarily.

        Order by ip_version primarily, even when IPv4 is less full than IPv6
        subnet.
        """
        cidr4 = "0.0.0.0/30"  # 2 bits
        last4 = netaddr.IPNetwork(cidr4).last
        cidr6 = "fffc::/127"  # 1 bits
        last6 = netaddr.IPNetwork(cidr6).last
        with self._fixtures([
                self._create_models(cidr4, 4, last4),
                self._create_models(cidr6, 6, last6)
        ]) as net:
            subnets = db_api.subnet_find_ordered_by_most_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(subnets[0][0].ip_version, 4)
            self.assertEqual(subnets[1][0].ip_version, 6)

            subnets = db_api.subnet_find_ordered_by_least_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(subnets[0][0].ip_version, 4)
            self.assertEqual(subnets[1][0].ip_version, 6)
示例#2
0
文件: test_api.py 项目: xroot88/quark
    def test_ordering_subnets_find_allocc_when_counts_unequal_size_equal(self):
        models = []
        cidrs = ["0.0.0.0/31", "1.1.1.0/31", "2.2.2.0/31"]
        for cidr in cidrs:
            last = netaddr.IPNetwork(cidr).last
            models.append(self._create_models(cidr, 4, last))

        with self._fixtures(models) as net:
            self._create_ip_address("2.2.2.1", 4, "2.2.2.0/31", net["id"])
            self._create_ip_address("2.2.2.2", 4, "2.2.2.0/31", net["id"])
            self._create_ip_address("1.1.1.1", 4, "1.1.1.0/31", net["id"])

            subnets = db_api.subnet_find_ordered_by_most_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(len(subnets), 3)
            self.assertEqual(subnets[0][0].cidr, "2.2.2.0/31")
            self.assertEqual(subnets[0][1], 2)
            self.assertEqual(subnets[1][0].cidr, "1.1.1.0/31")
            self.assertEqual(subnets[1][1], 1)
            self.assertEqual(subnets[2][0].cidr, "0.0.0.0/31")
            self.assertEqual(subnets[2][1], 0)

            subnets = db_api.subnet_find_ordered_by_least_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(len(subnets), 3)
            self.assertEqual(subnets[0][0].cidr, "0.0.0.0/31")
            self.assertEqual(subnets[0][1], 0)
            self.assertEqual(subnets[1][0].cidr, "1.1.1.0/31")
            self.assertEqual(subnets[1][1], 1)
            self.assertEqual(subnets[2][0].cidr, "2.2.2.0/31")
            self.assertEqual(subnets[2][1], 2)
示例#3
0
    def test_ordering_subnets_ip_version(self):
        """Order by ip_version primarily.

        Order by ip_version primarily, even when IPv4 is less full than IPv6
        subnet.
        """
        cidr4 = "0.0.0.0/30"  # 2 bits
        last4 = netaddr.IPNetwork(cidr4).last
        cidr6 = "fffc::/127"  # 1 bits
        last6 = netaddr.IPNetwork(cidr6).last
        with self._fixtures([
            self._create_models(cidr4, 4, last4),
            self._create_models(cidr6, 6, last6)
        ]) as net:
            subnets = db_api.subnet_find_ordered_by_most_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(subnets[0][0].ip_version, 4)
            self.assertEqual(subnets[1][0].ip_version, 6)

            subnets = db_api.subnet_find_ordered_by_least_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(subnets[0][0].ip_version, 4)
            self.assertEqual(subnets[1][0].ip_version, 6)
示例#4
0
    def test_ordering_subnets_find_allocc_when_counts_unequal_size_equal(self):
        models = []
        cidrs = ["0.0.0.0/31", "1.1.1.0/31", "2.2.2.0/31"]
        for cidr in cidrs:
            last = netaddr.IPNetwork(cidr).last
            models.append(self._create_models(cidr, 4, last))

        with self._fixtures(models) as net:
            self._create_ip_address("2.2.2.1", 4, "2.2.2.0/31", net["id"])
            self._create_ip_address("2.2.2.2", 4, "2.2.2.0/31", net["id"])
            self._create_ip_address("1.1.1.1", 4, "1.1.1.0/31", net["id"])

            subnets = db_api.subnet_find_ordered_by_most_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(len(subnets), 3)
            self.assertEqual(subnets[0][0].cidr, "2.2.2.0/31")
            self.assertEqual(subnets[0][1], 2)
            self.assertEqual(subnets[1][0].cidr, "1.1.1.0/31")
            self.assertEqual(subnets[1][1], 1)
            self.assertEqual(subnets[2][0].cidr, "0.0.0.0/31")
            self.assertEqual(subnets[2][1], 0)

            subnets = db_api.subnet_find_ordered_by_least_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(len(subnets), 3)
            self.assertEqual(subnets[0][0].cidr, "0.0.0.0/31")
            self.assertEqual(subnets[0][1], 0)
            self.assertEqual(subnets[1][0].cidr, "1.1.1.0/31")
            self.assertEqual(subnets[1][1], 1)
            self.assertEqual(subnets[2][0].cidr, "2.2.2.0/31")
            self.assertEqual(subnets[2][1], 2)
示例#5
0
文件: test_api.py 项目: xroot88/quark
    def test_ordering_subnets_find_allocation_counts_when_count_equal(self):
        models = []
        cidrs = ["0.0.0.0/31", "1.1.1.0/31", "2.2.2.0/31"]
        for cidr in cidrs:
            last = netaddr.IPNetwork(cidr).last
            models.append(self._create_models(cidr, 4, last))

        with self._fixtures(models) as net:
            subnets = db_api.subnet_find_ordered_by_most_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(len(subnets), 3)
            for subnet in subnets:
                self.assertIn(subnet[0]["cidr"], cidrs)

            subnets = db_api.subnet_find_ordered_by_least_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(len(subnets), 3)
            for subnet in subnets:
                self.assertIn(subnet[0]["cidr"], cidrs)
示例#6
0
    def test_ordering_subnets_find_allocation_counts_when_count_equal(self):
        models = []
        cidrs = ["0.0.0.0/31", "1.1.1.0/31", "2.2.2.0/31"]
        for cidr in cidrs:
            last = netaddr.IPNetwork(cidr).last
            models.append(self._create_models(cidr, 4, last))

        with self._fixtures(models) as net:
            subnets = db_api.subnet_find_ordered_by_most_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(len(subnets), 3)
            for subnet in subnets:
                self.assertIn(subnet[0]["cidr"], cidrs)

            subnets = db_api.subnet_find_ordered_by_least_full(
                self.context, net['id'], segment_id=None,
                scope=db_api.ALL).all()
            self.assertEqual(len(subnets), 3)
            for subnet in subnets:
                self.assertIn(subnet[0]["cidr"], cidrs)