Skip to content

Commit

Permalink
Merge pull request #990 from p12tic/tests-single-container-up
Browse files Browse the repository at this point in the history
tests: Add integration tests for up -d with single container at a time
  • Loading branch information
p12tic committed Jul 5, 2024
2 parents c82859b + 5040a37 commit 5e0f7e5
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 0 deletions.
125 changes: 125 additions & 0 deletions tests/integration/lifetime/test_lifetime.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# 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


class TestLifetime(unittest.TestCase, RunSubprocessMixin):
def test_up_single_container(self):
"""Podman compose up should be able to start containers one after another"""

compose_path = os.path.join(test_path(), "lifetime/up_single_container/docker-compose.yml")

try:
self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"up",
"-d",
"container1",
])

self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"up",
"-d",
"container2",
])

out, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"logs",
"container1",
])

self.assertEqual(out, b"test1\n")

out, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"logs",
"container2",
])

self.assertEqual(out, b"test2\n")

finally:
out, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"down",
])

@parameterized.expand([
("no_ports", "up_single_container_many_times"),
("with_ports", "up_single_container_many_times_with_ports"),
])
def test_up_single_container_many_times(self, name, subdir):
"""Podman compose up should be able to start a container many times after it finishes
running.
"""

compose_path = os.path.join(test_path(), f"lifetime/{subdir}/docker-compose.yml")

try:
self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"up",
"-d",
"container1",
])

for _ in range(0, 3):
self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"up",
"-d",
"container2",
])

out, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"logs",
"container1",
])

self.assertEqual(out, b"test1\n")

out, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"logs",
"container2",
])

# BUG: container should be started 3 times, not 4.
self.assertEqual(out, b"test2\n" * 4)

finally:
out, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_path,
"down",
])
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: "3"
services:
container1:
image: nopush/podman-compose-test
command: ["/bin/bash", "-c", "echo test1; sleep infinity"]
container2:
image: nopush/podman-compose-test
command: ["/bin/bash", "-c", "echo test2; sleep infinity"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: "3"
services:
container1:
image: nopush/podman-compose-test
command: ["/bin/bash", "-c", "echo test1; sleep infinity"]
container2:
image: nopush/podman-compose-test
restart: never
command: ["/bin/bash", "-c", "echo test2"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: "3"
services:
container1:
image: nopush/podman-compose-test
ports: "9001:9001"
command: ["/bin/bash", "-c", "echo test1; sleep infinity"]
container2:
image: nopush/podman-compose-test
restart: never
ports: "9002:9002"
command: ["/bin/bash", "-c", "echo test2"]

0 comments on commit 5e0f7e5

Please sign in to comment.