xref: /unit/test/unit/applications/lang/java.py (revision 1050)
11019Szelenkov@nginx.comimport os
21019Szelenkov@nginx.comimport shutil
31019Szelenkov@nginx.comfrom subprocess import Popen
41019Szelenkov@nginx.comfrom unit.applications.proto import TestApplicationProto
51019Szelenkov@nginx.com
61019Szelenkov@nginx.com
71019Szelenkov@nginx.comclass TestApplicationJava(TestApplicationProto):
81019Szelenkov@nginx.com    def load(self, script, name='app'):
91019Szelenkov@nginx.com
101019Szelenkov@nginx.com        app_path = self.testdir + '/java'
111019Szelenkov@nginx.com        web_inf_path = app_path + '/WEB-INF/'
121019Szelenkov@nginx.com        classes_path = web_inf_path + 'classes/'
131019Szelenkov@nginx.com
141019Szelenkov@nginx.com        script_path = self.current_dir + '/java/' + script + '/'
151019Szelenkov@nginx.com
161019Szelenkov@nginx.com        if not os.path.isdir(app_path):
171019Szelenkov@nginx.com            os.makedirs(app_path)
181019Szelenkov@nginx.com
191019Szelenkov@nginx.com        src = []
201019Szelenkov@nginx.com
211019Szelenkov@nginx.com        for f in os.listdir(script_path):
221019Szelenkov@nginx.com            if f.endswith('.java'):
231019Szelenkov@nginx.com                src.append(script_path + f)
241019Szelenkov@nginx.com                continue
251019Szelenkov@nginx.com
261019Szelenkov@nginx.com            if f.startswith('.') or f == 'Makefile':
271019Szelenkov@nginx.com                continue
281019Szelenkov@nginx.com
291019Szelenkov@nginx.com            if os.path.isdir(script_path + f):
301019Szelenkov@nginx.com                if f == 'WEB-INF':
311019Szelenkov@nginx.com                    continue
321019Szelenkov@nginx.com
331019Szelenkov@nginx.com                shutil.copytree(script_path + f, app_path + '/' + f)
341019Szelenkov@nginx.com                continue
351019Szelenkov@nginx.com
361019Szelenkov@nginx.com            if f == 'web.xml':
371019Szelenkov@nginx.com                if not os.path.isdir(web_inf_path):
381019Szelenkov@nginx.com                    os.makedirs(web_inf_path)
391019Szelenkov@nginx.com
401019Szelenkov@nginx.com                shutil.copy2(script_path + f, web_inf_path)
411019Szelenkov@nginx.com            else:
421019Szelenkov@nginx.com                shutil.copy2(script_path + f, app_path)
431019Szelenkov@nginx.com
441019Szelenkov@nginx.com        if src:
451019Szelenkov@nginx.com            if not os.path.isdir(classes_path):
461019Szelenkov@nginx.com                os.makedirs(classes_path)
471019Szelenkov@nginx.com
481019Szelenkov@nginx.com            tomcat_jar = self.pardir + '/build/tomcat-servlet-api-9.0.13.jar'
491019Szelenkov@nginx.com
501019Szelenkov@nginx.com            javac = [
511019Szelenkov@nginx.com                'javac',
521019Szelenkov@nginx.com                '-encoding',   'utf-8',
531019Szelenkov@nginx.com                '-d',          classes_path,
541019Szelenkov@nginx.com                '-classpath',  tomcat_jar,
551019Szelenkov@nginx.com            ]
561019Szelenkov@nginx.com            javac.extend(src)
571019Szelenkov@nginx.com
581019Szelenkov@nginx.com            process = Popen(javac)
591019Szelenkov@nginx.com            process.communicate()
601019Szelenkov@nginx.com
61*1050Szelenkov@nginx.com        self._load_conf(
621019Szelenkov@nginx.com            {
631041Svbart@nginx.com                "listeners": {"*:7080": {"pass": "applications/" + script}},
641019Szelenkov@nginx.com                "applications": {
651019Szelenkov@nginx.com                    script: {
661019Szelenkov@nginx.com                        "unit_jars": self.pardir + '/build',
671019Szelenkov@nginx.com                        "type": "java",
681019Szelenkov@nginx.com                        "processes": {"spare": 0},
691019Szelenkov@nginx.com                        "working_directory": script_path,
701019Szelenkov@nginx.com                        "webapp": app_path,
711019Szelenkov@nginx.com                    }
721019Szelenkov@nginx.com                },
731019Szelenkov@nginx.com            }
741019Szelenkov@nginx.com        )
75