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