tests/integration: Automate manual 'multicompose' test

Signed-off-by: Monika Kairaityte <monika@kibit.lt>
This commit is contained in:
Monika Kairaityte 2024-09-13 11:29:14 +03:00 committed by Povilas Kanapickas
parent da7fd4fe86
commit 0de7e13f1a
2 changed files with 101 additions and 19 deletions

View File

@ -1,19 +0,0 @@
# Multiple compose files
to make sure we get results similar to
```
docker-compose -f d1/docker-compose.yml -f d2/docker-compose.yml up -d
docker exec -ti d1_web1_1 sh -c 'set'
docker exec -ti d1_web2_1 sh -c 'set'
curl http://${d1_web1_1}:8001/index.txt
curl http://${d1_web1_1}:8002/index.txt
```
we need to verify
- project base directory and project name is `d1`
- `var12='d1/12.env'` which means `enf_file` was appended not replaced (which means that we normalize to array before merge)
- `var2='d1/2.env'` which means that paths inside `d2/docker-compose.yml` directory are relative to `d1`

View File

@ -0,0 +1,101 @@
# SPDX-License-Identifier: GPL-2.0
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(), "multicompose"), "docker-compose.yml")
class TestComposeMulticompose(unittest.TestCase, RunSubprocessMixin):
def test_multicompose(self):
try:
self.run_subprocess_assert_returncode(
[
podman_compose_path(),
"-f",
os.path.join(
os.path.join(test_path(), "multicompose"), "d1/docker-compose.yml"
),
"-f",
os.path.join(
os.path.join(test_path(), "multicompose"), "d2/docker-compose.yml"
),
"up",
"-d",
],
)
output, _ = self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
os.path.join(os.path.join(test_path(), "multicompose"), "d1/docker-compose.yml"),
"-f",
os.path.join(os.path.join(test_path(), "multicompose"), "d2/docker-compose.yml"),
"ps",
])
self.assertIn(b"d1_web1_1", output)
self.assertIn(b"d1_web2_1", output)
output, _ = self.run_subprocess_assert_returncode([
"podman",
"exec",
"-ti",
"d1_web1_1",
"sh",
"-c",
"set",
])
# checks if `enf_file` was appended, not replaced
# (which means that we normalize to array before merge)
self.assertIn(b"var12='d1/12.env'", output)
output, _ = self.run_subprocess_assert_returncode([
"podman",
"exec",
"-ti",
"d1_web2_1",
"sh",
"-c",
"set",
])
# checks if paths inside `d2/docker-compose.yml` directory are relative to `d1`
self.assertIn(b"var2='d1/2.env'", output)
output, _ = self.run_subprocess_assert_returncode([
"podman",
"exec",
"-ti",
"d1_web1_1",
"sh",
"-c",
"cat /var/www/html/index.txt",
])
self.assertIn(b"var1=d1/1.env", output)
# check if project base directory and project name is d1
output, _ = self.run_subprocess_assert_returncode([
"podman",
"exec",
"-ti",
"d1_web2_1",
"sh",
"-c",
"cat /var/www/html/index.txt",
])
self.assertIn(b"var2=d1/2.env", output)
finally:
self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
os.path.join(os.path.join(test_path(), "multicompose"), "d1/docker-compose.yml"),
"-f",
os.path.join(os.path.join(test_path(), "multicompose"), "d2/docker-compose.yml"),
"down",
"-t",
"0",
])