Tests: improving get_application_type() and fixing its name.

This patch also enables multiversion tests running for Java.
This commit is contained in:
Max Romanov
2020-10-28 00:01:46 +03:00
parent f007ad4dcf
commit 6a00bab41e
7 changed files with 14 additions and 28 deletions

View File

@@ -75,7 +75,9 @@ def skip_alert(*alerts):
def pytest_generate_tests(metafunc): def pytest_generate_tests(metafunc):
cls = metafunc.cls cls = metafunc.cls
if not hasattr(cls, 'application_type'): if (not hasattr(cls, 'application_type')
or cls.application_type == None
or cls.application_type == 'external'):
return return
type = cls.application_type type = cls.application_type

View File

@@ -9,6 +9,8 @@ from unit.applications.proto import TestApplicationProto
class TestApplicationJava(TestApplicationProto): class TestApplicationJava(TestApplicationProto):
application_type = "java"
def prepare_env(self, script): def prepare_env(self, script):
app_path = option.temp_dir + '/java' app_path = option.temp_dir + '/java'
web_inf_path = app_path + '/WEB-INF/' web_inf_path = app_path + '/WEB-INF/'
@@ -84,7 +86,7 @@ class TestApplicationJava(TestApplicationProto):
"applications": { "applications": {
script: { script: {
"unit_jars": option.current_dir + '/build', "unit_jars": option.current_dir + '/build',
"type": 'java', "type": self.get_application_type(),
"processes": {"spare": 0}, "processes": {"spare": 0},
"working_directory": option.test_dir "working_directory": option.test_dir
+ '/java/' + '/java/'

View File

@@ -7,17 +7,13 @@ class TestApplicationPerl(TestApplicationProto):
def load(self, script, name='psgi.pl', **kwargs): def load(self, script, name='psgi.pl', **kwargs):
script_path = option.test_dir + '/perl/' + script script_path = option.test_dir + '/perl/' + script
appication_type = self.get_appication_type()
if appication_type is None:
appication_type = self.application_type
self._load_conf( self._load_conf(
{ {
"listeners": {"*:7080": {"pass": "applications/" + script}}, "listeners": {"*:7080": {"pass": "applications/" + script}},
"applications": { "applications": {
script: { script: {
"type": appication_type, "type": self.get_application_type(),
"processes": {"spare": 0}, "processes": {"spare": 0},
"working_directory": script_path, "working_directory": script_path,
"script": script_path + '/' + name, "script": script_path + '/' + name,

View File

@@ -7,17 +7,13 @@ class TestApplicationPHP(TestApplicationProto):
def load(self, script, index='index.php', **kwargs): def load(self, script, index='index.php', **kwargs):
script_path = option.test_dir + '/php/' + script script_path = option.test_dir + '/php/' + script
appication_type = self.get_appication_type()
if appication_type is None:
appication_type = self.application_type
self._load_conf( self._load_conf(
{ {
"listeners": {"*:7080": {"pass": "applications/" + script}}, "listeners": {"*:7080": {"pass": "applications/" + script}},
"applications": { "applications": {
script: { script: {
"type": appication_type, "type": self.get_application_type(),
"processes": {"spare": 0}, "processes": {"spare": 0},
"root": script_path, "root": script_path,
"working_directory": script_path, "working_directory": script_path,

View File

@@ -34,11 +34,6 @@ class TestApplicationPython(TestApplicationProto):
script_path = '/app/python/' + name script_path = '/app/python/' + name
appication_type = self.get_appication_type()
if appication_type is None:
appication_type = self.application_type
self._load_conf( self._load_conf(
{ {
"listeners": { "listeners": {
@@ -46,7 +41,7 @@ class TestApplicationPython(TestApplicationProto):
}, },
"applications": { "applications": {
name: { name: {
"type": appication_type, "type": self.get_application_type(),
"processes": {"spare": 0}, "processes": {"spare": 0},
"path": script_path, "path": script_path,
"working_directory": script_path, "working_directory": script_path,

View File

@@ -7,17 +7,13 @@ class TestApplicationRuby(TestApplicationProto):
def load(self, script, name='config.ru', **kwargs): def load(self, script, name='config.ru', **kwargs):
script_path = option.test_dir + '/ruby/' + script script_path = option.test_dir + '/ruby/' + script
appication_type = self.get_appication_type()
if appication_type is None:
appication_type = self.application_type
self._load_conf( self._load_conf(
{ {
"listeners": {"*:7080": {"pass": "applications/" + script}}, "listeners": {"*:7080": {"pass": "applications/" + script}},
"applications": { "applications": {
script: { script: {
"type": appication_type, "type": self.get_application_type(),
"processes": {"spare": 0}, "processes": {"spare": 0},
"working_directory": script_path, "working_directory": script_path,
"script": script_path + '/' + name, "script": script_path + '/' + name,

View File

@@ -7,6 +7,8 @@ from unit.control import TestControl
class TestApplicationProto(TestControl): class TestApplicationProto(TestControl):
application_type = None
def sec_epoch(self): def sec_epoch(self):
return time.mktime(time.gmtime()) return time.mktime(time.gmtime())
@@ -28,15 +30,12 @@ class TestApplicationProto(TestControl):
return found return found
def get_appication_type(self): def get_application_type(self):
current_test = ( current_test = (
os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0] os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0]
) )
if current_test in option.generated_tests: return option.generated_tests.get(current_test, self.application_type)
return option.generated_tests[current_test]
return None
def _load_conf(self, conf, **kwargs): def _load_conf(self, conf, **kwargs):
if 'applications' in conf: if 'applications' in conf: