aboutsummaryrefslogtreecommitdiff
path: root/tests/kolla_container_tests
diff options
context:
space:
mode:
authorPedro Henrique <phpm13@gmail.com>2023-06-20 11:21:20 -0300
committerPedro Henrique Pereira Martins <phpm13@gmail.com>2024-06-26 12:40:32 +0000
commita086b780dc7884f441683143400c941a9400c5a5 (patch)
tree9d50aa4eea68b586e8fb981f7fbad222492abf60 /tests/kolla_container_tests
parent416851ce9d8961085a11e1921d5100139e5cd752 (diff)
downloadkolla-ansible-a086b780dc7884f441683143400c941a9400c5a5.tar.gz
kolla-ansible-a086b780dc7884f441683143400c941a9400c5a5.zip
Fix the docker container dimensions comparison for short notation
When using short notations like `1g` or `512m` to define the container dimensions, we are always getting the container to being restarted in each kolla-ansible run, even with no real changes in the container configs. Change-Id: Ic8e2dd42b95a8f5c2141a820c55642a3ed7beabd Closes-Bug: #2070494
Diffstat (limited to 'tests/kolla_container_tests')
-rw-r--r--tests/kolla_container_tests/test_docker_worker.py71
1 files changed, 70 insertions, 1 deletions
diff --git a/tests/kolla_container_tests/test_docker_worker.py b/tests/kolla_container_tests/test_docker_worker.py
index 7c7909e6a..594b5b939 100644
--- a/tests/kolla_container_tests/test_docker_worker.py
+++ b/tests/kolla_container_tests/test_docker_worker.py
@@ -1382,7 +1382,76 @@ class TestAttrComp(base.BaseTestCase):
'CpusetMems': '', 'MemorySwap': 0, 'MemoryReservation': 0,
'Ulimits': []}
self.dw = get_DockerWorker(self.fake_data['params'])
- self.assertTrue(self.dw.compare_dimensions(container_info))
+ resp = self.dw.compare_dimensions(container_info)
+ self.dw.module.fail_json.assert_not_called()
+ self.assertTrue(resp)
+
+ def test_compare_dimensions_using_short_notation_not_changed(self):
+ self.fake_data['params']['dimensions'] = {
+ 'mem_limit': '1024', 'mem_reservation': '3M',
+ 'memswap_limit': '2g'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpuPeriod': 0, 'KernelMemory': 0, 'Memory': 1024, 'CpuQuota': 0,
+ 'CpusetCpus': '', 'CpuShares': 0, 'BlkioWeight': 0,
+ 'CpusetMems': '', 'MemorySwap': 2 * 1024 * 1024 * 1024,
+ 'MemoryReservation': 3 * 1024 * 1024, 'Ulimits': []}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ resp = self.dw.compare_dimensions(container_info)
+ self.dw.module.fail_json.assert_not_called()
+ self.assertFalse(resp)
+
+ def test_compare_dimensions_key_no_more_supported(self):
+ self.fake_data['params']['dimensions'] = {
+ 'mem_limit': '1024', 'mem_reservation': '3M',
+ 'memswap_limit': '2g', 'kernel_memory': '4M'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpuPeriod': 0, 'Memory': 1024, 'CpuQuota': 0,
+ 'CpusetCpus': '', 'CpuShares': 0, 'BlkioWeight': 0,
+ 'CpusetMems': '', 'MemorySwap': 2 * 1024 * 1024 * 1024,
+ 'MemoryReservation': 3 * 1024 * 1024, 'Ulimits': []}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ self.dw.compare_dimensions(container_info)
+ expected_msg = ("The dimension [kernel_memory] is no more "
+ "supported by Docker, please remove it from "
+ "yours configs or change to the new one.")
+ self.dw.module.fail_json.assert_called_once_with(
+ failed=True, msg=expected_msg)
+
+ def test_compare_dimensions_invalid_unit(self):
+ self.fake_data['params']['dimensions'] = {
+ 'mem_limit': '1024', 'mem_reservation': '3M',
+ 'memswap_limit': '2g', 'kernel_memory': '4E'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpuPeriod': 0, 'KernelMemory': 0, 'Memory': 1024, 'CpuQuota': 0,
+ 'CpusetCpus': '', 'CpuShares': 0, 'BlkioWeight': 0,
+ 'CpusetMems': '', 'MemorySwap': 2 * 1024 * 1024 * 1024,
+ 'MemoryReservation': 3 * 1024 * 1024, 'Ulimits': []}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ self.dw.compare_dimensions(container_info)
+ expected_msg = ("The docker dimension unit [e] is "
+ "not supported for the dimension [4E]."
+ " The currently supported units are "
+ "['b', 'k', 'm', 'g'].")
+ self.dw.module.fail_json.assert_called_once_with(
+ failed=True, msg=expected_msg)
+
+ def test_compare_dimensions_using_short_notation_changed(self):
+ self.fake_data['params']['dimensions'] = {
+ 'mem_limit': '10m', 'mem_reservation': '3M',
+ 'memswap_limit': '1g'}
+ container_info = dict()
+ container_info['HostConfig'] = {
+ 'CpuPeriod': 0, 'KernelMemory': 0, 'Memory': 1024, 'CpuQuota': 0,
+ 'CpusetCpus': '', 'CpuShares': 0, 'BlkioWeight': 0,
+ 'CpusetMems': '', 'MemorySwap': 2 * 1024 * 1024 * 1024,
+ 'MemoryReservation': 3 * 1024 * 1024, 'Ulimits': []}
+ self.dw = get_DockerWorker(self.fake_data['params'])
+ resp = self.dw.compare_dimensions(container_info)
+ self.dw.module.fail_json.assert_not_called()
+ self.assertTrue(resp)
def test_compare_dimensions_neg(self):
self.fake_data['params']['dimensions'] = {