xref: /unit/test/test_java_isolation_rootfs.py (revision 2616:ab2896c980ab)
1import os
2import subprocess
3
4import pytest
5
6from unit.applications.lang.java import ApplicationJava
7from unit.option import option
8
9prerequisites = {'modules': {'java': 'all'}, 'privileged_user': True}
10
11client = ApplicationJava()
12
13
14@pytest.fixture(autouse=True)
15def setup_method_fixture(temp_dir):
16    os.makedirs(f'{temp_dir}/jars')
17    os.makedirs(f'{temp_dir}/tmp')
18    os.chmod(f'{temp_dir}/tmp', 0o777)
19
20    try:
21        subprocess.run(
22            [
23                "mount",
24                "--bind",
25                f'{option.current_dir}/build',
26                f'{temp_dir}/jars',
27            ],
28            stderr=subprocess.STDOUT,
29            check=True,
30        )
31
32    except KeyboardInterrupt:
33        raise
34
35    except subprocess.CalledProcessError:
36        pytest.fail("Can't run mount process.")
37
38    yield
39
40    try:
41        subprocess.run(
42            ["umount", "--lazy", f"{option.temp_dir}/jars"],
43            stderr=subprocess.STDOUT,
44            check=True,
45        )
46
47    except KeyboardInterrupt:
48        raise
49
50    except subprocess.CalledProcessError:
51        pytest.fail("Can't run umount process.")
52
53
54def test_java_isolation_rootfs_chroot_war(temp_dir):
55    client.load('empty_war', isolation={'rootfs': temp_dir})
56
57    assert 'success' in client.conf(
58        '"/"',
59        '/config/applications/empty_war/working_directory',
60    )
61
62    assert 'success' in client.conf(
63        '"/jars"', 'applications/empty_war/unit_jars'
64    )
65    assert 'success' in client.conf(
66        '"/java/empty.war"', 'applications/empty_war/webapp'
67    )
68
69    assert client.get()['status'] == 200, 'war'
70