aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEttore Simone <ettore.simone@gmail.com>2026-06-15 19:08:20 +0200
committerBertrand Lanson <bertrand.lanson@infomaniak.com>2026-07-01 16:37:40 +0200
commitf1a3a131e6901d51c390f187740d752743eb0eb1 (patch)
tree0bb0051ad9d9a684d49aef862f69174bc20a6deb /tests
parent75a9dcd132b0a5aab69bf234dd621c9035208174 (diff)
downloadkolla-ansible-f1a3a131e6901d51c390f187740d752743eb0eb1.tar.gz
kolla-ansible-f1a3a131e6901d51c390f187740d752743eb0eb1.zip
UnicodeDecodeError in PodmanWorker.compare_config
During container config comparison, podman's Docker-compat exec API inconsistently demultiplexes the 8-byte frame headers from the output stream depending on podman version, leaving binary bytes in raw_output. This will raise an "UnicodeDecodeError: 'utf-8' codec can't decode byte 0x?? in position 167: invalid start byte" Closes-Bug: 2153943 Change-Id: Ida1c017f50b9a24b88f8962d304eb015fa357211 Signed-off-by: Ettore Simone <ettore.simone@gmail.com> (cherry picked from commit c99f521356012d5bc42ab3c41a994b67657e86f0)
Diffstat (limited to 'tests')
-rw-r--r--tests/kolla_container_tests/test_podman_worker.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/kolla_container_tests/test_podman_worker.py b/tests/kolla_container_tests/test_podman_worker.py
index 55ab5c165..048a7a797 100644
--- a/tests/kolla_container_tests/test_podman_worker.py
+++ b/tests/kolla_container_tests/test_podman_worker.py
@@ -766,6 +766,24 @@ class TestImage(base.BaseTestCase):
user='root')
self.assertTrue(return_data)
+ def test_compare_config_chenged_unicode_error(self):
+ self.fake_data['params']['name'] = 'my_container'
+ self.pw = get_PodmanWorker(self.fake_data['params'])
+ my_container = construct_container(self.fake_data['containers'][0])
+ invalid_bytes = b'\x8e\xfe\xfd'
+ my_container.exec_run = mock.Mock(return_value=(1, invalid_bytes))
+ self.pw.pc.containers.get.return_value = my_container
+
+ return_data = self.pw.compare_config()
+ self.pw.pc.containers.get.assert_called_once_with(
+ self.fake_data['params']['name'])
+ my_container.exec_run.assert_called_once_with(
+ pwm.COMPARE_CONFIG_CMD,
+ user='root')
+ self.assertTrue(return_data)
+ self.assertEqual(self.pw._config_diff,
+ 'container changed during config check')
+
def test_compare_config_changed_container_exited(self):
self.fake_data['params']['name'] = 'my_container'
self.pw = get_PodmanWorker(self.fake_data['params'])