diff --git a/conf/web.xml b/conf/web.xml index ac49958c39..26867d0983 100755 --- a/conf/web.xml +++ b/conf/web.xml @@ -1,7 +1,7 @@ - @@ -14,6 +14,7 @@ /WEB-INF/classes/zstack-servlet-context.xml 1 + true @@ -47,6 +48,7 @@ UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter + true UrlRewriteFilter diff --git a/core/pom.xml b/core/pom.xml index 2f9c5be27f..0afa4e8b38 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -28,7 +28,8 @@ javax.servlet - servlet-api + javax.servlet-api + 3.1.0 provided diff --git a/header/pom.xml b/header/pom.xml index d31a8194b1..fcd0550be0 100755 --- a/header/pom.xml +++ b/header/pom.xml @@ -1,156 +1,157 @@ - - 4.0.0 - - zstack - org.zstack + + 4.0.0 + + zstack + org.zstack 5.4.0 - .. - - header - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${project.compiler.version} - - groovy-eclipse-compiler - ${project.java.version} - ${project.java.version} - lines,vars,source - true - - - - org.codehaus.groovy - groovy-eclipse-compiler - ${groovy.eclipse.compiler} - - - org.codehaus.groovy - groovy-eclipse-batch - ${groovy.eclipse.batch} - - - - - org.codehaus.mojo - aspectj-maven-plugin - ${aspectj.plugin.version} - - - - compile - test-compile - - - - - - ${project.java.version} - ${project.java.version} - ${project.java.version} - true - true - - - org.springframework - spring-aspects - - - - - - - - - - org.hibernate.javax.persistence - hibernate-jpa-2.1-api - - - org.hibernate - hibernate-search-orm - - - org.apache.avro - avro - 1.11.4 - - - org.hibernate - hibernate-search-serialization-avro - - - org.apache.avro - avro - - - - - org.hibernate - hibernate-search-backend-jgroups - - - com.google.protobuf - protobuf-java - 3.21.9 - - - org.infinispan - infinispan-directory-provider - - - com.google.protobuf - protobuf-java - - - - - com.rabbitmq - amqp-client - - - org.springframework.security - spring-security-core - - - javax.servlet - servlet-api - provided - - - org.springframework - spring-aspects - - - org.springframework - spring-tx - - - org.aspectj - aspectjrt - - - org.aspectj - aspectjweaver - - - - org.zstack - utils - ${project.version} - - - org.apache.httpcomponents - httpclient - - - org.zstack - abstraction + .. + + header + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${project.compiler.version} + + groovy-eclipse-compiler + ${project.java.version} + ${project.java.version} + lines,vars,source + true + + + + org.codehaus.groovy + groovy-eclipse-compiler + ${groovy.eclipse.compiler} + + + org.codehaus.groovy + groovy-eclipse-batch + ${groovy.eclipse.batch} + + + + + org.codehaus.mojo + aspectj-maven-plugin + ${aspectj.plugin.version} + + + + compile + test-compile + + + + + + ${project.java.version} + ${project.java.version} + ${project.java.version} + true + true + + + org.springframework + spring-aspects + + + + + + + + + + org.hibernate.javax.persistence + hibernate-jpa-2.1-api + + + org.hibernate + hibernate-search-orm + + + org.apache.avro + avro + 1.11.4 + + + org.hibernate + hibernate-search-serialization-avro + + + org.apache.avro + avro + + + + + org.hibernate + hibernate-search-backend-jgroups + + + com.google.protobuf + protobuf-java + 3.21.9 + + + org.infinispan + infinispan-directory-provider + + + com.google.protobuf + protobuf-java + + + + + com.rabbitmq + amqp-client + + + org.springframework.security + spring-security-core + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + org.springframework + spring-aspects + + + org.springframework + spring-tx + + + org.aspectj + aspectjrt + + + org.aspectj + aspectjweaver + + + + org.zstack + utils + ${project.version} + + + org.apache.httpcomponents + httpclient + + + org.zstack + abstraction 5.4.0 - - - + + + diff --git a/pom.xml b/pom.xml index 7eb089349a..245744f9eb 100755 --- a/pom.xml +++ b/pom.xml @@ -268,8 +268,8 @@ javax.servlet - servlet-api - 2.5 + javax.servlet-api + 3.1.0 provided diff --git a/portal/pom.xml b/portal/pom.xml index 8a8775d4c5..73c0b97f04 100755 --- a/portal/pom.xml +++ b/portal/pom.xml @@ -1,105 +1,106 @@ - - 4.0.0 - - zstack - org.zstack + + 4.0.0 + + zstack + org.zstack 5.4.0 - .. - - portal - - - org.zstack - utils - ${project.version} - - - org.zstack - core - ${project.version} - - - org.zstack - header - ${project.version} - - - org.zstack - search - ${project.version} - - - org.zstack - tag - ${project.version} - - - - javax.servlet - servlet-api - provided - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${project.compiler.version} - - groovy-eclipse-compiler - ${project.java.version} - ${project.java.version} - lines,vars,source - true - - - - org.codehaus.groovy - groovy-eclipse-compiler - ${groovy.eclipse.compiler} - - - org.codehaus.groovy - groovy-eclipse-batch - ${groovy.eclipse.batch} - - - - - org.codehaus.mojo - aspectj-maven-plugin - ${aspectj.plugin.version} - - - - compile - test-compile - - - - - ${project.java.version} - ${project.java.version} - ${project.java.version} - true - - - org.springframework - spring-aspects - - - org.zstack - core - - - org.zstack - header - - - - - - - + .. + + portal + + + org.zstack + utils + ${project.version} + + + org.zstack + core + ${project.version} + + + org.zstack + header + ${project.version} + + + org.zstack + search + ${project.version} + + + org.zstack + tag + ${project.version} + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${project.compiler.version} + + groovy-eclipse-compiler + ${project.java.version} + ${project.java.version} + lines,vars,source + true + + + + org.codehaus.groovy + groovy-eclipse-compiler + ${groovy.eclipse.compiler} + + + org.codehaus.groovy + groovy-eclipse-batch + ${groovy.eclipse.batch} + + + + + org.codehaus.mojo + aspectj-maven-plugin + ${aspectj.plugin.version} + + + + compile + test-compile + + + + + ${project.java.version} + ${project.java.version} + ${project.java.version} + true + + + org.springframework + spring-aspects + + + org.zstack + core + + + org.zstack + header + + + + + + + diff --git a/rest/pom.xml b/rest/pom.xml index 1a79e191c0..ba0292f640 100755 --- a/rest/pom.xml +++ b/rest/pom.xml @@ -34,7 +34,8 @@ javax.servlet - servlet-api + javax.servlet-api + 3.1.0 provided diff --git a/sdk/pom.xml b/sdk/pom.xml index 72ed68dd8a..94d50ffced 100755 --- a/sdk/pom.xml +++ b/sdk/pom.xml @@ -26,7 +26,8 @@ javax.servlet - servlet-api + javax.servlet-api + 3.1.0 provided diff --git a/search/pom.xml b/search/pom.xml index b765e61e0f..bf0a6227a2 100755 --- a/search/pom.xml +++ b/search/pom.xml @@ -1,196 +1,197 @@ - - 4.0.0 - - zstack - org.zstack + + 4.0.0 + + zstack + org.zstack 5.4.0 - .. - - search - - - org.zstack - core - ${project.version} - - - org.zstack - header - ${project.version} - - - org.zstack - utils - ${project.version} - - - - org.hibernate - hibernate-core - - - org.objenesis - objenesis - - - org.kohsuke - groovy-sandbox - 1.19 - - - org.codehaus.groovy - groovy-all - - - org.antlr - antlr4 - - - org.antlr - antlr4-runtime - - - org.antlr - antlr4-maven-plugin - - - javax.servlet - servlet-api - provided - - - - - - zql - - - - org.antlr - antlr4-maven-plugin - 4.7 - - - - true - - run-antlr - generate-sources - - - - - - org.codehaus.mojo - build-helper-maven-plugin - - - antlr-add-source - generate-sources - - - - - - - - - - - - org.antlr - antlr4-maven-plugin - 4.7 - - - run-antlr - none - - antlr4 - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${aspectj.plugin.version} - - - antlr-add-source - none - - add-source - - - - ${basedir}/target/generated-sources/antlr4 - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${project.compiler.version} - - groovy-eclipse-compiler - ${project.java.version} - ${project.java.version} - lines,vars,source - true - - - - org.codehaus.groovy - groovy-eclipse-compiler - 2.9.2-01 - - - org.codehaus.groovy - groovy-eclipse-batch - 2.4.3-01 - - - - - - org.codehaus.mojo - aspectj-maven-plugin - ${aspectj.plugin.version} - - - - compile - test-compile - - - - - ${project.java.version} - ${project.java.version} - ${project.java.version} - true - - - org.springframework - spring-aspects - - - org.zstack - core - - - org.zstack - header - - - - - - - + .. + + search + + + org.zstack + core + ${project.version} + + + org.zstack + header + ${project.version} + + + org.zstack + utils + ${project.version} + + + + org.hibernate + hibernate-core + + + org.objenesis + objenesis + + + org.kohsuke + groovy-sandbox + 1.19 + + + org.codehaus.groovy + groovy-all + + + org.antlr + antlr4 + + + org.antlr + antlr4-runtime + + + org.antlr + antlr4-maven-plugin + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + + + zql + + + + org.antlr + antlr4-maven-plugin + 4.7 + + + + true + + run-antlr + generate-sources + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + antlr-add-source + generate-sources + + + + + + + + + + + + org.antlr + antlr4-maven-plugin + 4.7 + + + run-antlr + none + + antlr4 + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + ${aspectj.plugin.version} + + + antlr-add-source + none + + add-source + + + + ${basedir}/target/generated-sources/antlr4 + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${project.compiler.version} + + groovy-eclipse-compiler + ${project.java.version} + ${project.java.version} + lines,vars,source + true + + + + org.codehaus.groovy + groovy-eclipse-compiler + 2.9.2-01 + + + org.codehaus.groovy + groovy-eclipse-batch + 2.4.3-01 + + + + + + org.codehaus.mojo + aspectj-maven-plugin + ${aspectj.plugin.version} + + + + compile + test-compile + + + + + ${project.java.version} + ${project.java.version} + ${project.java.version} + true + + + org.springframework + spring-aspects + + + org.zstack + core + + + org.zstack + header + + + + + + + diff --git a/simulator/pom.xml b/simulator/pom.xml index d2e22ea659..67ff1b0ed5 100755 --- a/simulator/pom.xml +++ b/simulator/pom.xml @@ -1,100 +1,101 @@ - - 4.0.0 - - zstack - org.zstack + + 4.0.0 + + zstack + org.zstack 5.4.0 - .. - - simulator - pom - - simulatorHeader - simulatorImpl - - - - org.zstack - core - ${project.version} - - - org.zstack - utils - ${project.version} - - - org.zstack - header - ${project.version} - - - - javax.servlet - servlet-api - provided - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${project.compiler.version} - - groovy-eclipse-compiler - ${project.java.version} - ${project.java.version} - lines,vars,source - true - - - - org.codehaus.groovy - groovy-eclipse-compiler - ${groovy.eclipse.compiler} - - - org.codehaus.groovy - groovy-eclipse-batch - ${groovy.eclipse.batch} - - - - - org.codehaus.mojo - aspectj-maven-plugin - ${aspectj.plugin.version} - - - - compile - test-compile - - - - - 1.6 - 1.6 - true - - - org.springframework - spring-aspects - - - org.zstack - core - - - org.zstack - header - - - - - - - + .. + + simulator + pom + + simulatorHeader + simulatorImpl + + + + org.zstack + core + ${project.version} + + + org.zstack + utils + ${project.version} + + + org.zstack + header + ${project.version} + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${project.compiler.version} + + groovy-eclipse-compiler + ${project.java.version} + ${project.java.version} + lines,vars,source + true + + + + org.codehaus.groovy + groovy-eclipse-compiler + ${groovy.eclipse.compiler} + + + org.codehaus.groovy + groovy-eclipse-batch + ${groovy.eclipse.batch} + + + + + org.codehaus.mojo + aspectj-maven-plugin + ${aspectj.plugin.version} + + + + compile + test-compile + + + + + 1.6 + 1.6 + true + + + org.springframework + spring-aspects + + + org.zstack + core + + + org.zstack + header + + + + + + + diff --git a/testlib/pom.xml b/testlib/pom.xml index 2c8e374fce..cc79b81126 100644 --- a/testlib/pom.xml +++ b/testlib/pom.xml @@ -25,11 +25,6 @@ mockito-core 4.11.0 - - javax.servlet - servlet-api - provided - org.eclipse.jetty jetty-webapp @@ -50,8 +45,6 @@ javaparser-core 3.0.1 - - org.zstack core @@ -220,6 +213,12 @@ org.jasig.cas.client cas-client-core + + javax.servlet + javax.servlet-api + 3.1.0 + provided + diff --git a/testlib/src/main/java/org/zstack/testlib/Test.groovy b/testlib/src/main/java/org/zstack/testlib/Test.groovy index 553d308495..1dcb02c54e 100755 --- a/testlib/src/main/java/org/zstack/testlib/Test.groovy +++ b/testlib/src/main/java/org/zstack/testlib/Test.groovy @@ -25,6 +25,7 @@ import org.zstack.sdk.ZSClient import org.zstack.testlib.collectstrategy.SubCaseCollectionStrategy import org.zstack.testlib.collectstrategy.SubCaseCollectionStrategyFactory import org.zstack.testlib.util.Retry +import org.zstack.testlib.util.TestConfigUtils import org.zstack.utils.ShellUtils import org.zstack.utils.Utils import org.zstack.utils.gson.JSONObjectUtil @@ -49,7 +50,6 @@ abstract class Test extends ApiHelper implements Retry { static Object deployer static Map apiPaths = new ConcurrentHashMap<>() - private final static long DEFAULT_MESSAGE_TIMEOUT_SECS = TimeUnit.SECONDS.toMillis(25) static Map functionForMockTestObjectFactory = new ConcurrentHashMap<>() protected List methodsOnClean = [] @@ -81,21 +81,6 @@ abstract class Test extends ApiHelper implements Retry { } } - static long getMessageTimeoutMillsConfig(){ - String msgTimeoutStr = System.getProperty("msgTimeoutMins") - - if(System.getProperty("maven.surefire.debug") != null && msgTimeoutStr == null){ - return TimeUnit.MINUTES.toMillis(30) - } - - if(msgTimeoutStr == null || msgTimeoutStr.isEmpty()){ - return DEFAULT_MESSAGE_TIMEOUT_SECS - } - - long msgTimeout = Long.parseLong(msgTimeoutStr) - return TimeUnit.MINUTES.toMillis(msgTimeout) - } - private final int PHASE_NONE = 0 private final int PHASE_SETUP = 1 private final int PHASE_ENV = 2 @@ -318,8 +303,8 @@ abstract class Test extends ApiHelper implements Retry { private void hijackService() { CloudBus bus = bean(CloudBus.class) if(bus instanceof CloudBusImpl2){ - logger.info(String.format("CloudBus message timeout: %s mills", getMessageTimeoutMillsConfig())) - ((CloudBusImpl2)bus).setDEFAULT_MESSAGE_TIMEOUT(getMessageTimeoutMillsConfig()) + logger.info(String.format("CloudBus message timeout: %s mills", TestConfigUtils.getMessageTimeoutMillisConfig())) + ((CloudBusImpl2)bus).setDEFAULT_MESSAGE_TIMEOUT(TestConfigUtils.getMessageTimeoutMillisConfig()) } def serviceId = "test.hijack.service" diff --git a/testlib/src/main/java/org/zstack/testlib/TestLibController.java b/testlib/src/main/java/org/zstack/testlib/TestLibController.java index 3b8ac96d5f..286eae91b0 100755 --- a/testlib/src/main/java/org/zstack/testlib/TestLibController.java +++ b/testlib/src/main/java/org/zstack/testlib/TestLibController.java @@ -3,18 +3,29 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.zstack.testlib.util.TestConfigUtils; +import org.zstack.utils.Utils; +import org.zstack.utils.logging.CLogger; +import javax.annotation.PreDestroy; +import javax.servlet.AsyncContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.InvocationTargetException; -import java.util.Objects; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; /** * Created by xing5 on 2017/2/12. */ @Controller public class TestLibController { + private static final CLogger logger = Utils.getLogger(TestLibController.class); + + private static final ExecutorService pool = Executors.newFixedThreadPool(32); + @RequestMapping( value = "/**", method = { @@ -28,6 +39,38 @@ public void handle(HttpServletRequest request, HttpServletResponse response) thr return; } - Test.handleHttp(request, response); + final AsyncContext asyncContext = request.startAsync(); + asyncContext.setTimeout(TestConfigUtils.getMessageTimeoutMillisConfig()); + + pool.submit(() -> { + try { + Test.handleHttp((HttpServletRequest) asyncContext.getRequest(), + (HttpServletResponse) asyncContext.getResponse()); + } catch (Throwable t) { + logger.error(t.getMessage(), t); + try { + ((HttpServletResponse) asyncContext.getResponse()).sendError(500); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } finally { + asyncContext.complete(); + } + }); + } + + @PreDestroy + public void shutdownPool() { + logger.info("Shutting down TestLibController pool"); + pool.shutdown(); + try { + if (!pool.awaitTermination(10, TimeUnit.SECONDS)) { + logger.warn("Pool did not terminate within timeout, forcing shutdown"); + pool.shutdownNow(); + } + } catch (InterruptedException e) { + pool.shutdownNow(); + Thread.currentThread().interrupt(); + } } } diff --git a/testlib/src/main/java/org/zstack/testlib/WebBeanConstructor.groovy b/testlib/src/main/java/org/zstack/testlib/WebBeanConstructor.groovy index 9d64f8d65e..6c507dd8eb 100755 --- a/testlib/src/main/java/org/zstack/testlib/WebBeanConstructor.groovy +++ b/testlib/src/main/java/org/zstack/testlib/WebBeanConstructor.groovy @@ -14,6 +14,7 @@ import org.zstack.network.service.virtualrouter.VirtualRouterGlobalProperty import org.zstack.sdk.ZSClient import org.zstack.sdk.ZSConfig import org.zstack.storage.backup.sftp.SftpBackupStorageGlobalProperty +import org.zstack.testlib.util.TestConfigUtils import org.zstack.utils.Utils import java.util.concurrent.TimeUnit @@ -85,7 +86,7 @@ class WebBeanConstructor extends BeanConstructor { .setPort(port) .setWebHook(WEB_HOOK_PATH) .setDefaultPollingInterval(100, TimeUnit.MILLISECONDS) - .setDefaultPollingTimeout(Test.getMessageTimeoutMillsConfig(), TimeUnit.MILLISECONDS) + .setDefaultPollingTimeout(TestConfigUtils.getMessageTimeoutMillisConfig(), TimeUnit.MILLISECONDS) .setReadTimeout(10, TimeUnit.MINUTES) .setWriteTimeout(10, TimeUnit.MINUTES) .build() diff --git a/testlib/src/main/java/org/zstack/testlib/util/TestConfigUtils.groovy b/testlib/src/main/java/org/zstack/testlib/util/TestConfigUtils.groovy new file mode 100644 index 0000000000..f71282c36d --- /dev/null +++ b/testlib/src/main/java/org/zstack/testlib/util/TestConfigUtils.groovy @@ -0,0 +1,29 @@ +package org.zstack.testlib.util + + +import java.util.concurrent.TimeUnit + +class TestConfigUtils { + private final static long DEFAULT_MESSAGE_TIMEOUT_SECS = TimeUnit.SECONDS.toMillis(25) + + static long getMessageTimeoutMillisConfig(){ + String msgTimeoutStr = System.getProperty("msgTimeoutMins") + + if(System.getProperty("maven.surefire.debug") != null && msgTimeoutStr == null){ + return TimeUnit.MINUTES.toMillis(30) + } + + if(msgTimeoutStr == null || msgTimeoutStr.isEmpty()){ + return DEFAULT_MESSAGE_TIMEOUT_SECS + } + + long msgTimeout + try { + msgTimeout = Long.parseLong(msgTimeoutStr) + } catch (NumberFormatException e) { + throw new RuntimeException("wrong format for msgTimeoutMins system property, it should be a number representing minutes", e) + } + + return TimeUnit.MINUTES.toMillis(msgTimeout) + } +} diff --git a/utils/pom.xml b/utils/pom.xml index 55be08113b..393c975e67 100644 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -136,7 +136,9 @@ javax.servlet - servlet-api + javax.servlet-api + 3.1.0 + provided