xref: /unit/test/test_java_isolation_rootfs.py (revision 2616:ab2896c980ab)
11490St.nateldemoura@f5.comimport os
21490St.nateldemoura@f5.comimport subprocess
31635Szelenkov@nginx.com
41596Szelenkov@nginx.comimport pytest
5*2616Szelenkov@nginx.com
62491Szelenkov@nginx.comfrom unit.applications.lang.java import ApplicationJava
71730Szelenkov@nginx.comfrom unit.option import option
81490St.nateldemoura@f5.com
92488Szelenkov@nginx.comprerequisites = {'modules': {'java': 'all'}, 'privileged_user': True}
102488Szelenkov@nginx.com
112491Szelenkov@nginx.comclient = ApplicationJava()
121490St.nateldemoura@f5.com
131490St.nateldemoura@f5.com
142491Szelenkov@nginx.com@pytest.fixture(autouse=True)
152491Szelenkov@nginx.comdef setup_method_fixture(temp_dir):
162491Szelenkov@nginx.com    os.makedirs(f'{temp_dir}/jars')
172491Szelenkov@nginx.com    os.makedirs(f'{temp_dir}/tmp')
182491Szelenkov@nginx.com    os.chmod(f'{temp_dir}/tmp', 0o777)
191706Smax.romanov@nginx.com
202491Szelenkov@nginx.com    try:
212491Szelenkov@nginx.com        subprocess.run(
222491Szelenkov@nginx.com            [
232491Szelenkov@nginx.com                "mount",
242491Szelenkov@nginx.com                "--bind",
252491Szelenkov@nginx.com                f'{option.current_dir}/build',
262491Szelenkov@nginx.com                f'{temp_dir}/jars',
272491Szelenkov@nginx.com            ],
282491Szelenkov@nginx.com            stderr=subprocess.STDOUT,
29*2616Szelenkov@nginx.com            check=True,
301490St.nateldemoura@f5.com        )
311490St.nateldemoura@f5.com
322491Szelenkov@nginx.com    except KeyboardInterrupt:
332491Szelenkov@nginx.com        raise
342491Szelenkov@nginx.com
352491Szelenkov@nginx.com    except subprocess.CalledProcessError:
362491Szelenkov@nginx.com        pytest.fail("Can't run mount process.")
372491Szelenkov@nginx.com
382491Szelenkov@nginx.com    yield
392491Szelenkov@nginx.com
402491Szelenkov@nginx.com    try:
412491Szelenkov@nginx.com        subprocess.run(
422491Szelenkov@nginx.com            ["umount", "--lazy", f"{option.temp_dir}/jars"],
432491Szelenkov@nginx.com            stderr=subprocess.STDOUT,
44*2616Szelenkov@nginx.com            check=True,
451490St.nateldemoura@f5.com        )
461490St.nateldemoura@f5.com
472491Szelenkov@nginx.com    except KeyboardInterrupt:
482491Szelenkov@nginx.com        raise
492491Szelenkov@nginx.com
502491Szelenkov@nginx.com    except subprocess.CalledProcessError:
512491Szelenkov@nginx.com        pytest.fail("Can't run umount process.")
522491Szelenkov@nginx.com
532491Szelenkov@nginx.com
542491Szelenkov@nginx.comdef test_java_isolation_rootfs_chroot_war(temp_dir):
552491Szelenkov@nginx.com    client.load('empty_war', isolation={'rootfs': temp_dir})
562491Szelenkov@nginx.com
572491Szelenkov@nginx.com    assert 'success' in client.conf(
582491Szelenkov@nginx.com        '"/"',
592491Szelenkov@nginx.com        '/config/applications/empty_war/working_directory',
602491Szelenkov@nginx.com    )
612491Szelenkov@nginx.com
622491Szelenkov@nginx.com    assert 'success' in client.conf(
632491Szelenkov@nginx.com        '"/jars"', 'applications/empty_war/unit_jars'
642491Szelenkov@nginx.com    )
652491Szelenkov@nginx.com    assert 'success' in client.conf(
662491Szelenkov@nginx.com        '"/java/empty.war"', 'applications/empty_war/webapp'
672491Szelenkov@nginx.com    )
682491Szelenkov@nginx.com
692491Szelenkov@nginx.com    assert client.get()['status'] == 200, 'war'
70