Different applications cannot reuse the same rootfs path if not using namespaces because of globally visible builtin mount points.
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
import pytest
|
|
|
|
from unit.applications.lang.python import TestApplicationPython
|
|
from unit.feature.isolation import TestFeatureIsolation
|
|
|
|
|
|
class TestPythonIsolation(TestApplicationPython):
|
|
prerequisites = {'modules': {'python': 'any'}}
|
|
|
|
def test_python_isolation_chroot(self, is_su, temp_dir):
|
|
if not is_su:
|
|
pytest.skip('requires root')
|
|
|
|
isolation = {
|
|
'rootfs': temp_dir,
|
|
}
|
|
|
|
self.load('ns_inspect', isolation=isolation)
|
|
|
|
assert (
|
|
self.getjson(url='/?path=' + temp_dir)['body']['FileExists']
|
|
== False
|
|
), 'temp_dir does not exists in rootfs'
|
|
|
|
assert (
|
|
self.getjson(url='/?path=/proc/self')['body']['FileExists']
|
|
== True
|
|
), 'no /proc/self'
|
|
|
|
assert (
|
|
self.getjson(url='/?path=/dev/pts')['body']['FileExists'] == False
|
|
), 'no /dev/pts'
|
|
|
|
assert (
|
|
self.getjson(url='/?path=/sys/kernel')['body']['FileExists']
|
|
== False
|
|
), 'no /sys/kernel'
|
|
|
|
ret = self.getjson(url='/?path=/app/python/ns_inspect')
|
|
|
|
assert (
|
|
ret['body']['FileExists'] == True
|
|
), 'application exists in rootfs'
|