mirror of https://github.com/OWASP/Nettacker.git
108 lines
3.9 KiB
Python
108 lines
3.9 KiB
Python
from unittest.mock import patch
|
|
|
|
from nettacker.core.utils import common as common_utils
|
|
from tests.common import TestCase
|
|
|
|
|
|
class TestCommon(TestCase):
|
|
def test_arrays_to_matrix(self):
|
|
(
|
|
self.assertEqual(
|
|
sorted(
|
|
common_utils.arrays_to_matrix(
|
|
{"ports": [1, 2, 3, 4, 5]},
|
|
)
|
|
),
|
|
[[1], [2], [3], [4], [5]],
|
|
),
|
|
)
|
|
|
|
self.assertEqual(
|
|
sorted(
|
|
common_utils.arrays_to_matrix(
|
|
{"x": [1, 2], "y": [3, 4], "z": [5, 6]},
|
|
)
|
|
),
|
|
[
|
|
[1, 3, 5],
|
|
[1, 3, 6],
|
|
[1, 4, 5],
|
|
[1, 4, 6],
|
|
[2, 3, 5],
|
|
[2, 3, 6],
|
|
[2, 4, 5],
|
|
[2, 4, 6],
|
|
],
|
|
)
|
|
|
|
def test_generate_target_groups_empty_list(self):
|
|
targets = []
|
|
set_hardware_usage = 3
|
|
result = common_utils.generate_target_groups(targets, set_hardware_usage)
|
|
assert result == []
|
|
|
|
def test_generate_target_groups_set_hardware_less_than_targets_total(self):
|
|
targets = [1, 2, 3, 4, 5]
|
|
set_hardware_usage = 2
|
|
result = common_utils.generate_target_groups(targets, set_hardware_usage)
|
|
assert result == [[1, 2, 3], [4, 5]]
|
|
|
|
def test_generate_target_groups_set_hardware_equal_to_targets_total(self):
|
|
targets = [1, 2, 3, 4, 5]
|
|
set_hardware_usage = 5
|
|
result = common_utils.generate_target_groups(targets, set_hardware_usage)
|
|
assert result == [[1], [2], [3], [4], [5]]
|
|
|
|
def test_generate_target_groups_set_hardware_greater_than_targets_total(self):
|
|
targets = [1, 2, 3]
|
|
set_hardware_usage = 5
|
|
result = common_utils.generate_target_groups(targets, set_hardware_usage)
|
|
assert result == [[1], [2], [3]]
|
|
|
|
def test_sort_dictionary(self):
|
|
input_dict = {
|
|
"a": 1,
|
|
"c": 3,
|
|
"d": 23,
|
|
"b": 2,
|
|
}
|
|
expected_dict = {
|
|
"a": 1,
|
|
"b": 2,
|
|
"c": 3,
|
|
"d": 23,
|
|
}
|
|
input_dict_keys = tuple(input_dict.keys())
|
|
expected_dict_keys = tuple(expected_dict.keys())
|
|
self.assertNotEqual(input_dict_keys, expected_dict_keys)
|
|
|
|
sorted_dict_keys = tuple(common_utils.sort_dictionary(input_dict).keys())
|
|
self.assertEqual(sorted_dict_keys, expected_dict_keys)
|
|
|
|
@patch("multiprocessing.cpu_count")
|
|
def test_select_maximum_cpu_core(self, cpu_count_mock):
|
|
cores_mapping = {
|
|
1: {"low": 1, "normal": 1, "high": 1, "maximum": 1},
|
|
2: {"low": 1, "normal": 1, "high": 1, "maximum": 1},
|
|
4: {"low": 1, "normal": 1, "high": 2, "maximum": 3},
|
|
6: {"low": 1, "normal": 1, "high": 3, "maximum": 5},
|
|
8: {"low": 1, "normal": 2, "high": 4, "maximum": 7},
|
|
10: {"low": 1, "normal": 2, "high": 5, "maximum": 9},
|
|
12: {"low": 1, "normal": 3, "high": 6, "maximum": 11},
|
|
16: {"low": 2, "normal": 4, "high": 8, "maximum": 15},
|
|
32: {"low": 4, "normal": 8, "high": 16, "maximum": 31},
|
|
48: {"low": 6, "normal": 12, "high": 24, "maximum": 47},
|
|
64: {"low": 8, "normal": 16, "high": 32, "maximum": 63},
|
|
}
|
|
for num_cores, levels in cores_mapping.items():
|
|
cpu_count_mock.return_value = num_cores
|
|
for level in ("low", "normal", "high", "maximum"):
|
|
self.assertEqual(
|
|
common_utils.select_maximum_cpu_core(level),
|
|
levels[level],
|
|
f"It should be {common_utils.select_maximum_cpu_core(level)} "
|
|
"of {num_cores} cores for '{level}' mode",
|
|
)
|
|
|
|
self.assertEqual(common_utils.select_maximum_cpu_core("invalid"), 1)
|