summaryrefslogtreecommitdiffhomepage
path: root/test/test_ruby_isolation.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_ruby_isolation.py')
-rw-r--r--test/test_ruby_isolation.py69
1 files changed, 33 insertions, 36 deletions
diff --git a/test/test_ruby_isolation.py b/test/test_ruby_isolation.py
index ea208523..59c0e5f6 100644
--- a/test/test_ruby_isolation.py
+++ b/test/test_ruby_isolation.py
@@ -1,46 +1,43 @@
-import pytest
-from unit.applications.lang.ruby import TestApplicationRuby
-from unit.option import option
+from unit.applications.lang.ruby import ApplicationRuby
+prerequisites = {'modules': {'ruby': 'any'}, 'features': {'isolation': True}}
-class TestRubyIsolation(TestApplicationRuby):
- prerequisites = {'modules': {'ruby': 'any'}, 'features': ['isolation']}
+client = ApplicationRuby()
- def test_ruby_isolation_rootfs(self, is_su):
- isolation_features = option.available['features']['isolation'].keys()
- if not is_su:
- if not 'unprivileged_userns_clone' in isolation_features:
- pytest.skip('requires unprivileged userns or root')
+def test_ruby_isolation_rootfs(is_su, require, temp_dir):
+ isolation = {'rootfs': temp_dir}
- if 'user' not in isolation_features:
- pytest.skip('user namespace is not supported')
-
- if 'mnt' not in isolation_features:
- pytest.skip('mnt namespace is not supported')
-
- if 'pid' not in isolation_features:
- pytest.skip('pid namespace is not supported')
-
- isolation = {'rootfs': option.temp_dir}
-
- if not is_su:
- isolation['namespaces'] = {
- 'mount': True,
- 'credential': True,
- 'pid': True,
+ if not is_su:
+ require(
+ {
+ 'features': {
+ 'isolation': [
+ 'unprivileged_userns_clone',
+ 'user',
+ 'mnt',
+ 'pid',
+ ]
+ }
}
+ )
- self.load('status_int', isolation=isolation)
+ isolation['namespaces'] = {
+ 'mount': True,
+ 'credential': True,
+ 'pid': True,
+ }
- assert 'success' in self.conf(
- '"/ruby/status_int/config.ru"',
- 'applications/status_int/script',
- )
+ client.load('status_int', isolation=isolation)
- assert 'success' in self.conf(
- '"/ruby/status_int"',
- 'applications/status_int/working_directory',
- )
+ assert 'success' in client.conf(
+ '"/ruby/status_int/config.ru"',
+ 'applications/status_int/script',
+ )
+
+ assert 'success' in client.conf(
+ '"/ruby/status_int"',
+ 'applications/status_int/working_directory',
+ )
- assert self.get()['status'] == 200, 'status int'
+ assert client.get()['status'] == 200, 'status int'