From 47c1f134a02f4d18ccc6548f33dd39bda1628502 Mon Sep 17 00:00:00 2001 From: Monika Kairaityte Date: Fri, 27 Sep 2024 13:37:53 +0300 Subject: [PATCH] tests/integration: Automate manual 'nets_test2' test Signed-off-by: Monika Kairaityte --- .../test_podman_compose_nets_test2.py | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 tests/integration/test_podman_compose_nets_test2.py diff --git a/tests/integration/test_podman_compose_nets_test2.py b/tests/integration/test_podman_compose_nets_test2.py new file mode 100644 index 00000000..48b10747 --- /dev/null +++ b/tests/integration/test_podman_compose_nets_test2.py @@ -0,0 +1,95 @@ +# SPDX-License-Identifier: GPL-2.0 + +import json +import os +import unittest + +import requests + +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(), "nets_test2"), "docker-compose.yml") + + +class TestComposeNetsTest2(unittest.TestCase, RunSubprocessMixin): + # test if port mapping works as expected + def test_nets_test2(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(), + "ps", + ]) + self.assertIn(b"nets_test2_web1_1", output) + self.assertIn(b"nets_test2_web2_1", output) + + # veikia taip pat + # kas kitaip, kai atsiranda networks: mystack: ? -> atsiranda toks networks + response = requests.get('http://localhost:8001/index.txt') + self.assertEqual(response.ok, True) + self.assertEqual(response.text, "test1\n") + + response = requests.get('http://localhost:8002/index.txt') + self.assertEqual(response.ok, True) + self.assertEqual(response.text, "test2\n") + + # inspect 1st container + output, _ = self.run_subprocess_assert_returncode([ + "podman", + "inspect", + "nets_test2_web1_1", + ]) + container_info = json.loads(output.decode('utf-8'))[0] + + # check if network got specific name from networks top-level element + network_name = list(container_info["NetworkSettings"]["Networks"].keys())[0] + self.assertEqual(network_name, "nets_test2_mystack") + + # check if Host port is the same as prodvided by the service port + port_info = list(container_info['NetworkSettings']["Ports"].values())[0] + host_port = port_info[0]["HostPort"] + self.assertEqual(host_port, "8001") + + hostname1 = container_info["Config"]["Hostname"] + self.assertEqual(hostname1, "web1") + + # inspect 2nd container + output, _ = self.run_subprocess_assert_returncode([ + "podman", + "inspect", + "nets_test2_web2_1", + ]) + container_info = json.loads(output.decode('utf-8'))[0] + + network_name = list(container_info["NetworkSettings"]["Networks"].keys())[0] + self.assertEqual(network_name, "nets_test2_mystack") + + port_info = list(container_info['NetworkSettings']["Ports"].values())[0] + host_port = port_info[0]["HostPort"] + self.assertEqual(host_port, "8002") + + hostname1 = container_info["Config"]["Hostname"] + self.assertEqual(hostname1, "web2") + finally: + self.run_subprocess_assert_returncode([ + podman_compose_path(), + "-f", + compose_yaml_path(), + "down", + "-t", + "0", + ])