From 8654704bf1466568ced28a602f2a8b4139e7769c Mon Sep 17 00:00:00 2001 From: Monika Kairaityte Date: Tue, 10 Sep 2024 18:43:22 +0300 Subject: [PATCH] tests/integration: Automate manual 'ipam_default' test Signed-off-by: Monika Kairaityte --- .../ipam_default/docker-compose.yaml | 2 +- .../test_podman_compose_ipam_default.py | 68 +++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 tests/integration/test_podman_compose_ipam_default.py diff --git a/tests/integration/ipam_default/docker-compose.yaml b/tests/integration/ipam_default/docker-compose.yaml index 311c41b4..0c03541c 100644 --- a/tests/integration/ipam_default/docker-compose.yaml +++ b/tests/integration/ipam_default/docker-compose.yaml @@ -1,6 +1,6 @@ version: '3' -# --ipam-driver must not be pass when driver is "default" +# --ipam-driver must not be passed when driver is "default" networks: ipam_test_default: ipam: diff --git a/tests/integration/test_podman_compose_ipam_default.py b/tests/integration/test_podman_compose_ipam_default.py new file mode 100644 index 00000000..fa81c530 --- /dev/null +++ b/tests/integration/test_podman_compose_ipam_default.py @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: GPL-2.0 + +import json +import os +import unittest + +from tests.integration.test_podman_compose import podman_compose_path +from tests.integration.test_podman_compose import test_path +from tests.integration.test_utils import RunSubprocessMixin + + +def compose_yaml_path(): + return os.path.join(os.path.join(test_path(), "ipam_default"), "docker-compose.yaml") + + +class TestComposeIpamDefault(unittest.TestCase, RunSubprocessMixin): + def test_ipam_default(self): + try: + self.run_subprocess_assert_returncode( + [podman_compose_path(), "-f", compose_yaml_path(), "up", "-d"], + ) + + output, _ = self.run_subprocess_assert_returncode([ + podman_compose_path(), + "-f", + compose_yaml_path(), + "logs", + ]) + # when container is created, its command echoes 'ipamtest' + # BUG: figure out why echo is called twice + self.assertIn("ipamtest", str(output)) + + output, _ = self.run_subprocess_assert_returncode( + [ + "podman", + "inspect", + "ipam_default_testipam_1", + ], + ) + network_info = json.loads(output.decode('utf-8'))[0] + network_name = next(iter(network_info["NetworkSettings"]["Networks"].keys())) + + output, _ = self.run_subprocess_assert_returncode([ + "podman", + "ps", + "-a", + "--filter", + "network={}".format(network_name), + ]) + self.assertIn("ipam_default_testipam_1", str(output)) + + output, _ = self.run_subprocess_assert_returncode([ + "podman", + "network", + "inspect", + "ipam_default_ipam_test_default", + ]) + network_info = json.loads(output.decode('utf-8'))[0] + # bridge is the default network driver + self.assertEqual(network_info['driver'], "bridge") + self.assertEqual(network_info['ipam_options'], {'driver': 'host-local'}) + finally: + self.run_subprocess_assert_returncode([ + podman_compose_path(), + "-f", + compose_yaml_path(), + "down", + ])