diff options
author | Andrei Zeliankou <zelenkov@nginx.com> | 2020-10-27 04:09:52 +0000 |
---|---|---|
committer | Andrei Zeliankou <zelenkov@nginx.com> | 2020-10-27 04:09:52 +0000 |
commit | 8956e668cc3b4088a7bdd3d82ca99ac1445c8814 (patch) | |
tree | 0fa7bfbcfb2cde634ed52594159c5d79f806a98b /test/unit | |
parent | 434c3228d9bbdc31ff15be470a814344e5f13a4e (diff) | |
download | unit-8956e668cc3b4088a7bdd3d82ca99ac1445c8814.tar.gz unit-8956e668cc3b4088a7bdd3d82ca99ac1445c8814.tar.bz2 |
Tests: fixed isolation detection.
Diffstat (limited to 'test/unit')
-rw-r--r-- | test/unit/applications/lang/java.py | 12 | ||||
-rw-r--r-- | test/unit/applications/lang/node.py | 5 | ||||
-rw-r--r-- | test/unit/feature/isolation.py | 122 |
3 files changed, 112 insertions, 27 deletions
diff --git a/test/unit/applications/lang/java.py b/test/unit/applications/lang/java.py index a034d9a4..0aa1a7af 100644 --- a/test/unit/applications/lang/java.py +++ b/test/unit/applications/lang/java.py @@ -9,7 +9,7 @@ from unit.applications.proto import TestApplicationProto class TestApplicationJava(TestApplicationProto): - def load(self, script, name='app', **kwargs): + def prepare_env(self, script): app_path = option.temp_dir + '/java' web_inf_path = app_path + '/WEB-INF/' classes_path = web_inf_path + 'classes/' @@ -75,6 +75,9 @@ class TestApplicationJava(TestApplicationProto): except: pytest.fail('Cann\'t run javac process.') + def load(self, script, **kwargs): + self.prepare_env(script) + self._load_conf( { "listeners": {"*:7080": {"pass": "applications/" + script}}, @@ -83,8 +86,11 @@ class TestApplicationJava(TestApplicationProto): "unit_jars": option.current_dir + '/build', "type": 'java', "processes": {"spare": 0}, - "working_directory": script_path, - "webapp": app_path, + "working_directory": option.test_dir + + '/java/' + + script + + '/', + "webapp": option.temp_dir + '/java', } }, }, diff --git a/test/unit/applications/lang/node.py b/test/unit/applications/lang/node.py index 4aa9eb1c..98fd9ffc 100644 --- a/test/unit/applications/lang/node.py +++ b/test/unit/applications/lang/node.py @@ -7,7 +7,7 @@ from unit.applications.proto import TestApplicationProto class TestApplicationNode(TestApplicationProto): - def load(self, script, name='app.js', **kwargs): + def prepare_env(self, script): # copy application shutil.copytree( @@ -23,6 +23,9 @@ class TestApplicationNode(TestApplicationProto): public_dir(option.temp_dir + '/node') + def load(self, script, name='app.js', **kwargs): + self.prepare_env(script) + self._load_conf( { "listeners": { diff --git a/test/unit/feature/isolation.py b/test/unit/feature/isolation.py index 235177ab..7877c03a 100644 --- a/test/unit/feature/isolation.py +++ b/test/unit/feature/isolation.py @@ -3,11 +3,8 @@ import os from unit.applications.lang.go import TestApplicationGo from unit.applications.lang.java import TestApplicationJava from unit.applications.lang.node import TestApplicationNode -from unit.applications.lang.perl import TestApplicationPerl -from unit.applications.lang.php import TestApplicationPHP -from unit.applications.lang.python import TestApplicationPython -from unit.applications.lang.ruby import TestApplicationRuby from unit.applications.proto import TestApplicationProto +from conftest import option class TestFeatureIsolation(TestApplicationProto): @@ -16,40 +13,119 @@ class TestFeatureIsolation(TestApplicationProto): def check(self, available, temp_dir): test_conf = {"namespaces": {"credential": True}} - module = '' - app = 'empty' + conf = '' if 'go' in available['modules']: - module = TestApplicationGo() + TestApplicationGo().prepare_env('empty', 'app') + + conf = { + "listeners": {"*:7080": {"pass": "applications/empty"}}, + "applications": { + "empty": { + "type": "external", + "processes": {"spare": 0}, + "working_directory": option.test_dir + "/go/empty", + "executable": option.temp_dir + "/go/app", + "isolation": {"namespaces": {"credential": True}}, + }, + }, + } elif 'python' in available['modules']: - module = TestApplicationPython() + conf = { + "listeners": {"*:7080": {"pass": "applications/empty"}}, + "applications": { + "empty": { + "type": "python", + "processes": {"spare": 0}, + "path": option.test_dir + "/python/empty", + "working_directory": option.test_dir + "/python/empty", + "module": "wsgi", + "isolation": {"namespaces": {"credential": True}}, + } + }, + } elif 'php' in available['modules']: - module = TestApplicationPHP() - app = 'phpinfo' + conf = { + "listeners": {"*:7080": {"pass": "applications/phpinfo"}}, + "applications": { + "phpinfo": { + "type": "php", + "processes": {"spare": 0}, + "root": option.test_dir + "/php/phpinfo", + "working_directory": option.test_dir + "/php/phpinfo", + "index": "index.php", + "isolation": {"namespaces": {"credential": True}}, + } + }, + } elif 'ruby' in available['modules']: - module = TestApplicationRuby() + conf = { + "listeners": {"*:7080": {"pass": "applications/empty"}}, + "applications": { + "empty": { + "type": "ruby", + "processes": {"spare": 0}, + "working_directory": option.test_dir + "/ruby/empty", + "script": option.test_dir + "/ruby/empty/config.ru", + "isolation": {"namespaces": {"credential": True}}, + } + }, + } elif 'java' in available['modules']: - module = TestApplicationJava() + TestApplicationJava().prepare_env('empty') + + conf = { + "listeners": {"*:7080": {"pass": "applications/empty"}}, + "applications": { + "empty": { + "unit_jars": option.current_dir + "/build", + "type": "java", + "processes": {"spare": 0}, + "working_directory": option.test_dir + "/java/empty/", + "webapp": option.temp_dir + "/java", + "isolation": {"namespaces": {"credential": True}}, + } + }, + } elif 'node' in available['modules']: - module = TestApplicationNode() - app = 'basic' + TestApplicationNode().prepare_env('basic') + + conf = { + "listeners": {"*:7080": {"pass": "applications/basic"}}, + "applications": { + "basic": { + "type": "external", + "processes": {"spare": 0}, + "working_directory": option.temp_dir + "/node", + "executable": "app.js", + "isolation": {"namespaces": {"credential": True}}, + } + }, + } elif 'perl' in available['modules']: - module = TestApplicationPerl() - app = 'body_empty' - - if not module: + conf = { + "listeners": {"*:7080": {"pass": "applications/body_empty"}}, + "applications": { + "body_empty": { + "type": "perl", + "processes": {"spare": 0}, + "working_directory": option.test_dir + + "/perl/body_empty", + "script": option.test_dir + "/perl/body_empty/psgi.pl", + "isolation": {"namespaces": {"credential": True}}, + } + }, + } + + else: return - module.temp_dir = temp_dir - module.load(app) - - resp = module.conf(test_conf, 'applications/' + app + '/isolation') - if 'success' not in resp: + if 'success' not in self.conf(conf): return userns = self.getns('user') |