From 420d19daf4fe545e70b1d11ba1f67c586357f94e Mon Sep 17 00:00:00 2001 From: Songmin Li Date: Wed, 18 Dec 2024 13:21:29 +0800 Subject: [PATCH] Add integration test for default network behavior Signed-off-by: Songmin Li --- .../docker-compose_no_nets.yaml | 4 ++ .../docker-compose_no_nets_compat.yaml | 7 ++ .../docker-compose_one_net.yaml | 7 ++ .../docker-compose_one_net_compat.yaml | 10 +++ .../docker-compose_two_nets.yaml | 8 +++ .../docker-compose_two_nets_compat.yaml | 11 ++++ .../docker-compose_with_default.yaml | 9 +++ .../docker-compose_with_default_compat.yaml | 12 ++++ ...est_podman_compose_default_net_behavior.py | 65 +++++++++++++++++++ 9 files changed, 133 insertions(+) create mode 100644 tests/integration/default_net_behavior/docker-compose_no_nets.yaml create mode 100644 tests/integration/default_net_behavior/docker-compose_no_nets_compat.yaml create mode 100644 tests/integration/default_net_behavior/docker-compose_one_net.yaml create mode 100644 tests/integration/default_net_behavior/docker-compose_one_net_compat.yaml create mode 100644 tests/integration/default_net_behavior/docker-compose_two_nets.yaml create mode 100644 tests/integration/default_net_behavior/docker-compose_two_nets_compat.yaml create mode 100644 tests/integration/default_net_behavior/docker-compose_with_default.yaml create mode 100644 tests/integration/default_net_behavior/docker-compose_with_default_compat.yaml create mode 100644 tests/integration/test_podman_compose_default_net_behavior.py diff --git a/tests/integration/default_net_behavior/docker-compose_no_nets.yaml b/tests/integration/default_net_behavior/docker-compose_no_nets.yaml new file mode 100644 index 00000000..6ac63ff4 --- /dev/null +++ b/tests/integration/default_net_behavior/docker-compose_no_nets.yaml @@ -0,0 +1,4 @@ +services: + web: + image: busybox + command: httpd -f -p 8123 -h /tmp/ diff --git a/tests/integration/default_net_behavior/docker-compose_no_nets_compat.yaml b/tests/integration/default_net_behavior/docker-compose_no_nets_compat.yaml new file mode 100644 index 00000000..d25f05d3 --- /dev/null +++ b/tests/integration/default_net_behavior/docker-compose_no_nets_compat.yaml @@ -0,0 +1,7 @@ +services: + web: + image: busybox + command: httpd -f -p 8123 -h /tmp/ + +x-podman: + default_net_behavior_compat: true diff --git a/tests/integration/default_net_behavior/docker-compose_one_net.yaml b/tests/integration/default_net_behavior/docker-compose_one_net.yaml new file mode 100644 index 00000000..0e8c1d2c --- /dev/null +++ b/tests/integration/default_net_behavior/docker-compose_one_net.yaml @@ -0,0 +1,7 @@ +services: + web: + image: busybox + command: httpd -f -p 8123 -h /tmp/ + +networks: + net0: {} diff --git a/tests/integration/default_net_behavior/docker-compose_one_net_compat.yaml b/tests/integration/default_net_behavior/docker-compose_one_net_compat.yaml new file mode 100644 index 00000000..3af9dea5 --- /dev/null +++ b/tests/integration/default_net_behavior/docker-compose_one_net_compat.yaml @@ -0,0 +1,10 @@ +services: + web: + image: busybox + command: httpd -f -p 8123 -h /tmp/ + +networks: + net0: {} + +x-podman: + default_net_behavior_compat: true diff --git a/tests/integration/default_net_behavior/docker-compose_two_nets.yaml b/tests/integration/default_net_behavior/docker-compose_two_nets.yaml new file mode 100644 index 00000000..1a956a00 --- /dev/null +++ b/tests/integration/default_net_behavior/docker-compose_two_nets.yaml @@ -0,0 +1,8 @@ +services: + web: + image: busybox + command: httpd -f -p 8123 -h /tmp/ + +networks: + net0: {} + net1: {} diff --git a/tests/integration/default_net_behavior/docker-compose_two_nets_compat.yaml b/tests/integration/default_net_behavior/docker-compose_two_nets_compat.yaml new file mode 100644 index 00000000..04ec40d7 --- /dev/null +++ b/tests/integration/default_net_behavior/docker-compose_two_nets_compat.yaml @@ -0,0 +1,11 @@ +services: + web: + image: busybox + command: httpd -f -p 8123 -h /tmp/ + +networks: + net0: {} + net1: {} + +x-podman: + default_net_behavior_compat: true diff --git a/tests/integration/default_net_behavior/docker-compose_with_default.yaml b/tests/integration/default_net_behavior/docker-compose_with_default.yaml new file mode 100644 index 00000000..ab949edc --- /dev/null +++ b/tests/integration/default_net_behavior/docker-compose_with_default.yaml @@ -0,0 +1,9 @@ +services: + web: + image: busybox + command: httpd -f -p 8123 -h /tmp/ + +networks: + net0: {} + net1: {} + default: {} diff --git a/tests/integration/default_net_behavior/docker-compose_with_default_compat.yaml b/tests/integration/default_net_behavior/docker-compose_with_default_compat.yaml new file mode 100644 index 00000000..c69088f7 --- /dev/null +++ b/tests/integration/default_net_behavior/docker-compose_with_default_compat.yaml @@ -0,0 +1,12 @@ +services: + web: + image: busybox + command: httpd -f -p 8123 -h /tmp/ + +networks: + net0: {} + net1: {} + default: {} + +x-podman: + default_net_behavior_compat: true diff --git a/tests/integration/test_podman_compose_default_net_behavior.py b/tests/integration/test_podman_compose_default_net_behavior.py new file mode 100644 index 00000000..367562a6 --- /dev/null +++ b/tests/integration/test_podman_compose_default_net_behavior.py @@ -0,0 +1,65 @@ +# SPDX-License-Identifier: GPL-2.0 + +import os +import unittest + +from parameterized import parameterized + +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(scenario): + return os.path.join( + os.path.join(test_path(), "default_net_behavior"), f"docker-compose_{scenario}.yaml" + ) + + +class TestComposeDefaultNetBehavior(unittest.TestCase, RunSubprocessMixin): + @parameterized.expand([ + ('no_nets', 'default_net_behavior_default'), + ('one_net', 'default_net_behavior_net0'), + ('two_nets', 'podman'), + ('with_default', 'default_net_behavior_default'), + ('no_nets_compat', 'default_net_behavior_default'), + ('one_net_compat', 'default_net_behavior_default'), + ('two_nets_compat', 'default_net_behavior_default'), + ('with_default_compat', 'default_net_behavior_default'), + ]) + def test_nethost(self, scenario, default_net): + try: + self.run_subprocess_assert_returncode( + [podman_compose_path(), "-f", compose_yaml_path(scenario), "up", "-d"], + ) + + container_id, _ = self.run_subprocess_assert_returncode( + [ + podman_compose_path(), + "-f", + compose_yaml_path(scenario), + "ps", + "--format", + '{{.ID}}', + ], + ) + container_id = container_id.decode('utf-8').split('\n')[0] + output, _ = self.run_subprocess_assert_returncode( + [ + "podman", + "inspect", + container_id, + "--format", + "{{range $key, $value := .NetworkSettings.Networks }}{{ $key }}\n{{ end }}", + ], + ) + self.assertEqual(output.decode('utf-8').strip(), default_net) + finally: + self.run_subprocess_assert_returncode([ + podman_compose_path(), + "-f", + compose_yaml_path(scenario), + "down", + "-t", + "0", + ])