diff options
| author | Ettore Simone <ettore.simone@gmail.com> | 2026-06-15 19:08:20 +0200 |
|---|---|---|
| committer | Bertrand Lanson <bertrand.lanson@infomaniak.com> | 2026-07-01 16:37:40 +0200 |
| commit | f1a3a131e6901d51c390f187740d752743eb0eb1 (patch) | |
| tree | 0bb0051ad9d9a684d49aef862f69174bc20a6deb /tests/kolla_container_tests | |
| parent | 75a9dcd132b0a5aab69bf234dd621c9035208174 (diff) | |
| download | kolla-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/kolla_container_tests')
| -rw-r--r-- | tests/kolla_container_tests/test_podman_worker.py | 18 |
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']) |
