Ejemplo n.º 1
0
    def test_sorting_configs(self):
        testdata = [
            {
                "allow_threads":
                True,
                "vcpus":
                8,
                "maxsockets":
                8,
                "maxcores":
                8,
                "maxthreads":
                2,
                "sockets":
                4,
                "cores":
                2,
                "threads":
                1,
                "expect": [
                    [4, 2, 1],  # score = 2
                    [8, 1, 1],  # score = 1
                    [2, 4, 1],  # score = 1
                    [1, 8, 1],  # score = 1
                    [4, 1, 2],  # score = 1
                    [2, 2, 2],  # score = 1
                    [1, 4, 2],  # score = 1
                ]
            },
            {
                "allow_threads":
                True,
                "vcpus":
                8,
                "maxsockets":
                1024,
                "maxcores":
                1024,
                "maxthreads":
                2,
                "sockets":
                -1,
                "cores":
                4,
                "threads":
                -1,
                "expect": [
                    [2, 4, 1],  # score = 1
                    [1, 4, 2],  # score = 1
                    [8, 1, 1],  # score = 0
                    [4, 2, 1],  # score = 0
                    [1, 8, 1],  # score = 0
                    [4, 1, 2],  # score = 0
                    [2, 2, 2],  # score = 0
                ]
            },
            {
                "allow_threads": True,
                "vcpus": 8,
                "maxsockets": 1024,
                "maxcores": 1,
                "maxthreads": 2,
                "sockets": -1,
                "cores": -1,
                "threads": 2,
                "expect": [
                    [4, 1, 2],  # score = 1
                    [8, 1, 1],  # score = 0
                ]
            },
            {
                "allow_threads": False,
                "vcpus": 8,
                "maxsockets": 1024,
                "maxcores": 1,
                "maxthreads": 2,
                "sockets": -1,
                "cores": -1,
                "threads": 2,
                "expect": [
                    [8, 1, 1],  # score = 0
                ]
            },
        ]

        for topo_test in testdata:
            actual = []
            possible = hw.VirtCPUTopology.get_possible_topologies(
                topo_test["vcpus"],
                hw.VirtCPUTopology(topo_test["maxsockets"],
                                   topo_test["maxcores"],
                                   topo_test["maxthreads"]),
                topo_test["allow_threads"])

            tops = hw.VirtCPUTopology.sort_possible_topologies(
                possible,
                hw.VirtCPUTopology(topo_test["sockets"], topo_test["cores"],
                                   topo_test["threads"]))
            for topology in tops:
                actual.append(
                    [topology.sockets, topology.cores, topology.threads])

            self.assertEqual(topo_test["expect"], actual)
Ejemplo n.º 2
0
    def test_possible_configs(self):
        testdata = [
            {
                "allow_threads":
                True,
                "vcpus":
                8,
                "maxsockets":
                8,
                "maxcores":
                8,
                "maxthreads":
                2,
                "expect": [
                    [8, 1, 1],
                    [4, 2, 1],
                    [2, 4, 1],
                    [1, 8, 1],
                    [4, 1, 2],
                    [2, 2, 2],
                    [1, 4, 2],
                ]
            },
            {
                "allow_threads": False,
                "vcpus": 8,
                "maxsockets": 8,
                "maxcores": 8,
                "maxthreads": 2,
                "expect": [
                    [8, 1, 1],
                    [4, 2, 1],
                    [2, 4, 1],
                    [1, 8, 1],
                ]
            },
            {
                "allow_threads":
                True,
                "vcpus":
                8,
                "maxsockets":
                1024,
                "maxcores":
                1024,
                "maxthreads":
                2,
                "expect": [
                    [8, 1, 1],
                    [4, 2, 1],
                    [2, 4, 1],
                    [1, 8, 1],
                    [4, 1, 2],
                    [2, 2, 2],
                    [1, 4, 2],
                ]
            },
            {
                "allow_threads": True,
                "vcpus": 8,
                "maxsockets": 1024,
                "maxcores": 1,
                "maxthreads": 2,
                "expect": [
                    [8, 1, 1],
                    [4, 1, 2],
                ]
            },
            {
                "allow_threads": True,
                "vcpus": 7,
                "maxsockets": 8,
                "maxcores": 8,
                "maxthreads": 2,
                "expect": [
                    [7, 1, 1],
                    [1, 7, 1],
                ]
            },
            {
                "allow_threads": True,
                "vcpus": 8,
                "maxsockets": 2,
                "maxcores": 1,
                "maxthreads": 1,
                "expect": exception.ImageVCPULimitsRangeImpossible,
            },
            {
                "allow_threads": False,
                "vcpus": 8,
                "maxsockets": 2,
                "maxcores": 1,
                "maxthreads": 4,
                "expect": exception.ImageVCPULimitsRangeImpossible,
            },
        ]

        for topo_test in testdata:
            if type(topo_test["expect"]) == list:
                actual = []
                for topology in hw.VirtCPUTopology.get_possible_topologies(
                        topo_test["vcpus"],
                        hw.VirtCPUTopology(topo_test["maxsockets"],
                                           topo_test["maxcores"],
                                           topo_test["maxthreads"]),
                        topo_test["allow_threads"]):
                    actual.append(
                        [topology.sockets, topology.cores, topology.threads])

                self.assertEqual(topo_test["expect"], actual)
            else:
                self.assertRaises(
                    topo_test["expect"],
                    hw.VirtCPUTopology.get_possible_topologies,
                    topo_test["vcpus"],
                    hw.VirtCPUTopology(topo_test["maxsockets"],
                                       topo_test["maxcores"],
                                       topo_test["maxthreads"]),
                    topo_test["allow_threads"])