From: Cherian Mathew Date: Thu, 11 Jun 2015 08:50:35 +0000 (+0200) Subject: corrected merge to latest snapshot version X-Git-Tag: remoting-3.9.0~167 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/608f7100cc3dafb8fa8f43ea77f4c7e17d05438e corrected merge to latest snapshot version updated hibernate config file and test db setup testing framework with jetty and maven --- diff --git a/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF b/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF index 43256bc98..2580e87af 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF +++ b/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF @@ -205,6 +205,7 @@ Export-Package: com.google.api, net.sf.json;uses:="net.sf.json.processors,net.sf.json.util,org.apache.commons.lang.exception", org.aopalliance.aop, org.apache.commons.collections;uses:="org.apache.commons.collections.keyvalue,new org.apache.commons.collections", + org.apache.commons.collections.buffer, org.apache.commons.dbcp, org.apache.commons.io;uses:="org.apache.commons.io.filefilter", org.apache.commons.lang;uses:="org.apache.commons.lang.exception", diff --git a/eu.etaxonomy.taxeditor.cdmlib/build.properties b/eu.etaxonomy.taxeditor.cdmlib/build.properties index 9144d3177..78ed69c09 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/build.properties +++ b/eu.etaxonomy.taxeditor.cdmlib/build.properties @@ -184,21 +184,13 @@ bin.includes = META-INF/,\ lib/poi-ooxml-3.10-FINAL.jar,\ lib/poi-ooxml-schemas-3.10-FINAL.jar,\ lib/xmlbeans-2.3.0.jar,\ - lib/cdmlib-commons-3.6.1-SNAPSHOT-sources.jar,\ lib/cdmlib-commons-3.6.1-SNAPSHOT.jar,\ - lib/cdmlib-ext-3.6.1-SNAPSHOT-sources.jar,\ lib/cdmlib-ext-3.6.1-SNAPSHOT.jar,\ - lib/cdmlib-io-3.6.1-SNAPSHOT-sources.jar,\ lib/cdmlib-io-3.6.1-SNAPSHOT.jar,\ - lib/cdmlib-model-3.6.1-SNAPSHOT-sources.jar,\ lib/cdmlib-model-3.6.1-SNAPSHOT.jar,\ - lib/cdmlib-persistence-3.6.1-SNAPSHOT-sources.jar,\ lib/cdmlib-persistence-3.6.1-SNAPSHOT.jar,\ - lib/cdmlib-print-3.6.1-SNAPSHOT-sources.jar,\ lib/cdmlib-print-3.6.1-SNAPSHOT.jar,\ - lib/cdmlib-remote-3.6.1-SNAPSHOT-sources.jar,\ lib/cdmlib-remote-3.6.1-SNAPSHOT.jar,\ - lib/cdmlib-services-3.6.1-SNAPSHOT-sources.jar,\ lib/cdmlib-services-3.6.1-SNAPSHOT.jar,\ lib/swagger-annotations-1.3.5.jar diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml b/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml index 655d87e6e..e48ff8a30 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml @@ -35,6 +35,12 @@ in your hibernate configuration, using hibernate-specific configuration keys. All other properties must be defined as usual in a c3p0.properties file. This is confusing, and will hopefully be simplified some time in the future, but for now... + + DOCUMENTATION UPDATE (2015-05-22): + Hibernate's C3P0ConnectionProvider renames 7 c3p0 configuration properties, which, + if set in your hibernate configuration, will override any configuration you may have set + in a c3p0.properties file. + TODO: are points (2) and (3) still valid? I don't think so! (AK) hibernate.c3p0.acquire_increment hibernate.c3p0.idle_test_period @@ -186,6 +192,7 @@ + diff --git a/eu.etaxonomy.taxeditor.test/META-INF/MANIFEST.MF b/eu.etaxonomy.taxeditor.test/META-INF/MANIFEST.MF index 89776c1ef..7f2bd7c9d 100644 --- a/eu.etaxonomy.taxeditor.test/META-INF/MANIFEST.MF +++ b/eu.etaxonomy.taxeditor.test/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: eu.etaxonomy.taxeditor.test Bundle-SymbolicName: eu.etaxonomy.taxeditor.test;singleton:=true -Bundle-Version: 3.5.2.qualifier +Bundle-Version: 3.6.1.qualifier Bundle-ActivationPolicy: lazy Bundle-Vendor: EDIT Bundle-RequiredExecutionEnvironment: JavaSE-1.6 diff --git a/eu.etaxonomy.taxeditor.test/pom.xml b/eu.etaxonomy.taxeditor.test/pom.xml index 6bf850435..eef8eb161 100644 --- a/eu.etaxonomy.taxeditor.test/pom.xml +++ b/eu.etaxonomy.taxeditor.test/pom.xml @@ -4,7 +4,7 @@ eu.etaxonomy taxeditor-parent - 3.5.2-SNAPSHOT + 3.6.1-SNAPSHOT 4.0.0 eu.etaxonomy.taxeditor.test @@ -34,12 +34,13 @@ tycho-surefire-plugin ${tycho.version} - + - + eclipse-feature eu.etaxonomy.taxeditor.feature @@ -49,6 +50,54 @@ + + org.eclipse.jetty + jetty-maven-plugin + 9.2.9.v20150224 + + + + spring.profiles.active + remoting + + + cdm.beanDefinitionFile + ${basedir}/src/test/resources/datasources.xml + + + cdm.datasource + cdmTest + + + 9191 + jetty-cdm-server + 10 + + 9090 + + ${project.parent.basedir}/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/etc/jetty/cdmlib-remote-webapp.war + true + + + + start-jetty + pre-integration-test + + deploy-war + + + 0 + + + + stop-jetty + post-integration-test + + stop + + + + \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/api/cache/CdmClientCachingTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/api/cache/CdmClientCachingTest.java index 095262f32..806f79b95 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/api/cache/CdmClientCachingTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/api/cache/CdmClientCachingTest.java @@ -16,7 +16,6 @@ import java.util.Map; import java.util.Set; import java.util.UUID; -import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.junit.Assert; import org.junit.Before; @@ -35,7 +34,6 @@ import eu.etaxonomy.cdm.model.description.KeyStatement; import eu.etaxonomy.cdm.model.description.PolytomousKey; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest; -import eu.etaxonomy.taxeditor.httpinvoker.CDMServer; import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled; @@ -79,8 +77,7 @@ public class CdmClientCachingTest extends BaseRemotingTest { @BeforeClass public static void initializePolytomousKeyTest() { - logger.setLevel(Level.INFO); - CDMServer.getInstance().setKeepServerRunning(true); + } @Before diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/PolytomousKeyTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/PolytomousKeyTest.java index 899e02266..f945be229 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/PolytomousKeyTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/PolytomousKeyTest.java @@ -16,7 +16,6 @@ import java.util.Map; import java.util.Set; import java.util.UUID; -import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.hibernate.collection.spi.PersistentCollection; import org.junit.Assert; @@ -40,10 +39,8 @@ import eu.etaxonomy.cdm.model.description.KeyStatement; import eu.etaxonomy.cdm.model.description.PolytomousKey; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.cdm.model.media.Rights; -import eu.etaxonomy.cdm.model.name.NomenclaturalCode; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest; -import eu.etaxonomy.taxeditor.httpinvoker.CDMServer; import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher; import eu.etaxonomy.taxeditor.remoting.cache.EntityCacherDebugResult; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; @@ -83,15 +80,6 @@ public class PolytomousKeyTest extends BaseRemotingTest { @BeforeClass public static void initializePolytomousKeyTest() { - logger.setLevel(Level.INFO); - CDMServer.getInstance().setKeepServerRunning(true); - initializeController("default", - "localhost", - 8080, - "", - NomenclaturalCode.ICNAFP, - "admin", - "00000"); } @Before diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNameEditorTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNameEditorTest.java index 6f60a6f5c..ee12ee448 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNameEditorTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNameEditorTest.java @@ -29,14 +29,12 @@ import eu.etaxonomy.cdm.api.service.ITaxonService; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.name.BotanicalName; import eu.etaxonomy.cdm.model.name.HomotypicalGroup; -import eu.etaxonomy.cdm.model.name.NomenclaturalCode; import eu.etaxonomy.cdm.model.name.NonViralName; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation; -import eu.etaxonomy.taxeditor.httpinvoker.CDMServer; import eu.etaxonomy.taxeditor.operations.OperationTestBase; import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; @@ -69,15 +67,6 @@ public class TaxonNameEditorTest extends OperationTestBase { @BeforeClass public static void initializePolytomousKeyTest() { - //logger.setLevel(Level.INFO); - CDMServer.getInstance().setKeepServerRunning(true); - initializeController("default", - "localhost", - 8080, - "", - NomenclaturalCode.ICNAFP, - "admin", - "00000"); } @Before diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNavigatorTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNavigatorTest.java index 485f27241..caad4929f 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNavigatorTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/cdm/model/TaxonNavigatorTest.java @@ -9,7 +9,6 @@ */ package eu.etaxonomy.cdm.model; -import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.junit.Before; import org.junit.BeforeClass; @@ -19,8 +18,6 @@ import eu.etaxonomy.cdm.api.service.IClassificationService; import eu.etaxonomy.cdm.api.service.ITaxonNodeService; import eu.etaxonomy.cdm.api.service.ITaxonService; import eu.etaxonomy.cdm.model.common.Language; -import eu.etaxonomy.cdm.model.name.NomenclaturalCode; -import eu.etaxonomy.taxeditor.httpinvoker.CDMServer; import eu.etaxonomy.taxeditor.operations.OperationTestBase; import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; @@ -54,15 +51,6 @@ public class TaxonNavigatorTest extends OperationTestBase { @BeforeClass public static void initializePolytomousKeyTest() { - logger.setLevel(Level.INFO); - CDMServer.getInstance().setKeepServerRunning(true); - initializeController("default", - "localhost", - 8080, - "", - NomenclaturalCode.ICNAFP, - "admin", - "00000"); } diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/BaseRemotingTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/BaseRemotingTest.java index 7f566766a..420dcb5f5 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/BaseRemotingTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/BaseRemotingTest.java @@ -8,9 +8,12 @@ */ package eu.etaxonomy.taxeditor.httpinvoker; +import java.io.InputStream; import java.lang.reflect.Field; import java.util.Map; +import java.util.Properties; +import org.apache.log4j.Logger; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; @@ -48,21 +51,27 @@ import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager; */ @Transactional(TransactionMode.DISABLED) @SpringApplicationContext("file:./target/classes/eu/etaxonomy/cdm/testRemotingApplicationContext.xml") -public abstract class BaseRemotingTest extends UnitilsJUnit4 { - //private static final Logger logger = Logger.getLogger(BaseRemotingTest.class); +public class BaseRemotingTest extends UnitilsJUnit4 { + private static final Logger logger = Logger.getLogger(BaseRemotingTest.class); - private static final Resource TEST_REMOTE_APPLICATION_CONTEXT_RESOURCE = - new ClassPathResource("/eu/etaxonomy/cdm/testRemotingApplicationContext.xml"); + + public static final Resource SERVER_PROPERTIES_FILE = + new ClassPathResource("server.properties"); private static CdmApplicationRemoteController remoteApplicationController; private static ICdmRemoteSource cdmRemoteSource; private static CdmPersistentRemoteSource remotePersistentSource; - public static boolean useManagedServer = false; + public static boolean useManagedServer = true; protected static ICdmEntitySessionManager cdmEntitySessionManager; + private final static String DEFAULT_USER = "admin"; + private final static String DEFAULT_PASSWORD = "00000"; + + private static String user = DEFAULT_USER; + private static String password = DEFAULT_PASSWORD; @BeforeClass public static void initializeBaseRemotingTest() { @@ -74,7 +83,35 @@ public abstract class BaseRemotingTest extends UnitilsJUnit4 { useManagedServer = (System.getProperty("use.managed.server") == null) ? useManagedServer : Boolean.valueOf(System.getProperty("use.managed.server")); if(useManagedServer) { try { - CDMServer.getInstance().start(); + CDMServer cdmServer = CDMServer.getInstance(); + Properties prop = new Properties(); + InputStream inputStream = SERVER_PROPERTIES_FILE.getInputStream(); + + if (inputStream != null) { + prop.load(inputStream); + } + + if(prop.getProperty("httpPort") != null) { + cdmServer.setHttpPort(Integer.valueOf(prop.getProperty("httpPort"))); + } + + if(prop.getProperty("stopPort") != null) { + cdmServer.setStopPort(Integer.valueOf(prop.getProperty("stopPort"))); + } + + if(prop.getProperty("stopKey") != null) { + cdmServer.setStopKey(prop.getProperty("stopKey")); + } + + if(prop.getProperty("user") != null) { + user = prop.getProperty("user"); + } + + if(prop.getProperty("password") != null) { + password = prop.getProperty("password"); + } + + cdmServer.start(); } catch (Exception e) { e.printStackTrace(); Assert.fail("Server failed to start. Reason : " + e.getMessage()); @@ -85,8 +122,8 @@ public abstract class BaseRemotingTest extends UnitilsJUnit4 { CDMServer.getInstance().getPort(), CDMServer.getInstance().getContextPath(), NomenclaturalCode.ICNAFP, - "admin", - "00000"); + user, + password); } @@ -100,8 +137,12 @@ public abstract class BaseRemotingTest extends UnitilsJUnit4 { DatabaseUnitils.disableConstraints(); } + public static void initializeController(String sourceName, String host, int port, String contextPath, NomenclaturalCode ncode, String username, String password) { + if(remoteApplicationController != null) { + return; + } cdmRemoteSource = CdmRemoteSource.NewInstance(sourceName, host, port, contextPath, ncode); remoteApplicationController = CdmApplicationRemoteController.NewInstance(cdmRemoteSource, diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CDMServer.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CDMServer.java index cdb5abea8..a6f5fd509 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CDMServer.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CDMServer.java @@ -12,11 +12,18 @@ package eu.etaxonomy.taxeditor.httpinvoker; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.net.Socket; +import javax.management.InstanceNotFoundException; +import javax.management.MBeanException; +import javax.management.MBeanServerConnection; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import javax.management.ReflectionException; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXServiceURL; import javax.sql.DataSource; -import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; @@ -48,25 +55,14 @@ public class CDMServer { private final String name = "default"; private final String host = "127.0.0.1"; - private final int port = 9090; - private final int stopPort = 9191; - private final String stopKey = "jetty-cdm-server"; + private int httpPort = 9090; + private int stopPort = 9191; + private String stopKey = "jetty-cdm-server"; private final String contextPath = ""; - private boolean keepServerRunning = false; - public static final Resource DEFAULT_CDM_WEBAPP_RESOURCE = new ClassPathResource("/etc/jetty/cdmlib-remote-webapp.war"); - public static final Resource DEFAULT_JETTY_CONFIG_RESOURCE = - new ClassPathResource("/etc/jetty/jetty.xml"); - - public static final Resource DEFAULT_JETTY_TEMP_RESOURCE = - new ClassPathResource("/etc/jetty/temp"); - - public static final Resource DEFAULT_JETTY_TEMP_WAR_LIB_RESOURCE = - new ClassPathResource("/etc/jetty/temp/webapp/WEB-INF/lib"); - public static final Resource DEFAULT_DATASOURCE_FILE = new ClassPathResource("datasources.xml"); @@ -76,14 +72,10 @@ public class CDMServer { public static final Resource DEFAULT_JETTY_RESOURCE = new ClassPathResource("/etc/jetty/start-9.2.3.v20140905.jar"); - - private static CDMServer cdmServer = null; private static CDMServerException cdmse = null; - private void CDMServer() { - logger.setLevel(Level.INFO); - } + private void CDMServer() {} public static CDMServer getInstance() { if(cdmServer == null) { @@ -101,21 +93,26 @@ public class CDMServer { } public int getPort() { - return port; + return httpPort; } public String getContextPath() { return contextPath; } - public boolean getKeepServerRunning() { - return keepServerRunning; + public void setHttpPort(int port) { + this.httpPort = port; + } + + public void setStopPort(int stopPort) { + this.stopPort = stopPort; } - public void setKeepServerRunning(boolean keepServerRunning) { - this.keepServerRunning = keepServerRunning; + public void setStopKey(String stopKey) { + this.stopKey = stopKey; } + public static boolean isRunningInEclipse() { return (System.getProperty("sun.java.command") != null && System.getProperty("sun.java.command").startsWith("org.eclipse.jdt.internal.junit.runner.RemoteTestRunner")); @@ -129,10 +126,9 @@ public class CDMServer { return sb.toString(); } - private String getStartServerArgs() { + private String getStartServerArgs() throws IOException { StringBuilder sb = new StringBuilder(); - sb.append(" --port "); - sb.append(port); + sb.append(" --port " + httpPort); return sb.toString(); } @@ -154,6 +150,7 @@ public class CDMServer { return sb.toString(); } + public void start() throws CDMServerException { /** @@ -163,22 +160,15 @@ public class CDMServer { * has started but incorrectly, in which case we try to force stop it (if we can) * and start a new server. */ - if(isRunning(1)) { - logger.info("[CDM-Server] Server already running @ " + host + ":" + port ); + if(isStarted(1)) { + logger.info("[CDM-Server] Server already running @ " + host + ":" + httpPort ); return; - } else if (isAvailable(1)){ - logger.info("[CDM-Server] Server available, but not started correctly @ " + host + ":" + port ); - logger.info("[CDM-Server] .... trying to force stop server @ " + host + ":" + port ); - try { - stop(true); - } catch (Exception e) { - throw new CDMServerException("CDM Server could not be stopped : " + e.getMessage()); - } } Thread t = new Thread() { @Override public void run() { + StringBuffer output = new StringBuffer(); try{ Process p; @@ -193,19 +183,25 @@ public class CDMServer { logger.info("[CDM-Server] Starting server with Command : " + command); p = Runtime.getRuntime().exec(command); - BufferedReader reader = + BufferedReader inpReader = new BufferedReader(new InputStreamReader(p.getInputStream())); + BufferedReader errReader = + new BufferedReader(new InputStreamReader(p.getErrorStream())); + String line = ""; - while ((line = reader.readLine())!= null) { - logger.info("[CDM-Server] Start : " + line); + while ((line = inpReader.readLine())!= null) { + logger.info("[CDM-Server Start] : " + line); + } + + while ((line = errReader.readLine())!= null) { + logger.info("[CDM-Server Start] : " + line); } } catch (Exception e) { e.printStackTrace(); cdmse = new CDMServerException(e); } - } }; @@ -213,8 +209,8 @@ public class CDMServer { cdmse = null; t.start(); - if(isRunning(60)) { - logger.info("[CDM-Server] Started Server @ " + host + ":" + port ); + if(isStarted(50)) { + logger.info("[CDM-Server] Server running @ " + host + ":" + httpPort ); } else { logger.info("[CDM-Server] Server not started within given interval"); // making sure to kill server if it is not started correctly @@ -228,50 +224,11 @@ public class CDMServer { } - public boolean isAvailable(int checkingIntervals) throws CDMServerException { - int intervalsCount = 0; - do { - try { - Socket s = new Socket(host, port); - logger.info("[CDM-Server] Available @ " + host + ":" + port ); - return true; - } catch (IOException ioe) { - } - try { - Thread.sleep(1000); - } catch (InterruptedException ie) { - throw new CDMServerException("Error checking CDM Server status", ie); - } - intervalsCount++; - } while (intervalsCount < checkingIntervals); - - return false; - } - - public boolean isStopped(int checkingIntervals) throws CDMServerException { - int intervalsCount = 0; - do { - try { - Socket s = new Socket(host, port); - } catch (IOException ioe) { - return true; - } - try { - Thread.sleep(1000); - } catch (InterruptedException ie) { - throw new CDMServerException("Error checking CDM Server status", ie); - } - intervalsCount++; - } while (intervalsCount < checkingIntervals); - - return false; - } - - public boolean isRunning(int checkingIntervals) throws CDMServerException { + public boolean isStarted(int checkingIntervals) throws CDMServerException { CdmRemoteSourceBase crsb = new CdmRemoteSourceBase("local-cdm-server", host, - port, + httpPort, contextPath, null); int intervalsCount = 0; @@ -282,7 +239,7 @@ public class CDMServer { } boolean check = crsb.checkConnection(); if(check) { - logger.info("[CDM-Server] Running @ " + host + ":" + port ); + logger.info("[CDM-Server] Running @ " + host + ":" + httpPort ); return true; } } catch (Exception e) { @@ -301,19 +258,16 @@ public class CDMServer { public void stop() throws Exception { stop(false); } + public void stop(boolean force) throws Exception { if(!force) { - if(!getInstance().isAvailable(1)) { - logger.info("[CDM-Server] Server already stopped @ " + host + ":" + port ); - return; - } - - if(getInstance().getKeepServerRunning()) { - logger.info("[CDM-Server] Server @ " + host + ":" + port + " is set to keep running"); + if(!getInstance().isStarted(1)) { + logger.info("[CDM-Server] Server already stopped @ " + host + ":" + httpPort ); return; } } + Thread t = new Thread() { @Override public void run() { @@ -324,15 +278,25 @@ public class CDMServer { + getStopServerArgs() + " --stop "; logger.info("[CDM-Server] Stop Command : " + command); p = Runtime.getRuntime().exec(command); - p.waitFor(); - BufferedReader reader = + + BufferedReader inpReader = new BufferedReader(new InputStreamReader(p.getInputStream())); + + BufferedReader errReader = + new BufferedReader(new InputStreamReader(p.getErrorStream())); + String line = ""; - while ((line = reader.readLine())!= null) { - logger.info("CDM-Server Stop : " + line + "\n"); + while ((line = inpReader.readLine())!= null) { + logger.info("[CDM-Server Stop] : " + line); + } + + while ((line = errReader.readLine())!= null) { + logger.info("[CDM-Server Stop] : " + line); } + logger.info("CDM-Server Stopped : "); } catch (Exception e) { - e.printStackTrace(); + logger.info("[CDM-Server] Could not stop @ " + host + ":" + httpPort + ". Please kill it manually"); + } } @@ -341,10 +305,32 @@ public class CDMServer { t.setDaemon(true); t.start(); - if(isStopped(5)) { - logger.info("[CDM-Server] Stopped Server @ " + host + ":" + port ); - } else { - logger.info("[CDM-Server] Could not stop @ " + host + ":" + port + ". Please kill it manually"); + } + + public static void stopServerViaJMX(int jmxPort) throws CDMServerException { + String JMX_URL = "service:jmx:rmi:///jndi/rmi://localhost:" + jmxPort + "/jmxrmi"; + logger.warn("Shutting down Jetty instance ... "); + + try { + JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(JMX_URL), null); + connector.connect(null); + MBeanServerConnection connection = connector.getMBeanServerConnection(); + ObjectName objectName = new ObjectName("org.eclipse.jetty.server:type=server,id=0"); + connection.invoke(objectName, "stop", null, null); + logger.warn("Shutdown command sent"); + } catch (InstanceNotFoundException e) { + throw new CDMServerException(e); + } catch (MBeanException e) { + throw new CDMServerException(e); + } catch (ReflectionException e) { + throw new CDMServerException(e); + } catch (IOException e) { + throw new CDMServerException(e); + } catch (MalformedObjectNameException e) { + throw new CDMServerException(e); } + + + } } diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CdmServerTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CdmServerTest.java index 816b18b05..bca8d3530 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CdmServerTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CdmServerTest.java @@ -9,14 +9,12 @@ */ package eu.etaxonomy.taxeditor.httpinvoker; -import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.junit.Assert; -import org.junit.Ignore; import org.junit.Test; import org.unitils.UnitilsJUnit4; -import eu.etaxonomy.taxeditor.lazyloading.AbstractLazyInitializerTest; +import eu.etaxonomy.taxeditor.remoting.server.CDMServerException; /** * @author cmathew @@ -27,13 +25,17 @@ public class CdmServerTest extends UnitilsJUnit4 { private static final Logger logger = Logger.getLogger(CdmServerTest.class); + @Test + public void startCdmServer() throws CDMServerException { + CDMServer.getInstance().start(); + } + @Test public void stopCdmServer() { - Logger.getRootLogger().setLevel(Level.INFO); - CDMServer.getInstance().setKeepServerRunning(false); try { CDMServer.getInstance().stop(true); } catch (Exception e) { + e.printStackTrace(); Assert.fail("Server could not be stopped. Reason : " + e.getMessage()); } } diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/lazyloading/CdmEntityCacherTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/lazyloading/CdmEntityCacherTest.java index d935013bf..663993475 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/lazyloading/CdmEntityCacherTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/lazyloading/CdmEntityCacherTest.java @@ -11,7 +11,6 @@ package eu.etaxonomy.taxeditor.lazyloading; import java.util.UUID; -import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.hibernate.collection.spi.PersistentCollection; import org.junit.Assert; @@ -26,7 +25,6 @@ import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.description.PolytomousKey; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest; -import eu.etaxonomy.taxeditor.httpinvoker.CDMServer; /** * @author cmathew @@ -49,10 +47,6 @@ public class CdmEntityCacherTest extends BaseRemotingTest { @BeforeClass public static void initializePolytomousKeyTest() { - logger.setLevel(Level.INFO); - CDMServer.getInstance().setKeepServerRunning(true); - - //initializeController("default", "127.0.0.1", 8080, "", NomenclaturalCode.ICNAFP); } @Test diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/service/ServiceInterceptorTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/service/ServiceInterceptorTest.java index 6e94ef56b..85e6549d8 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/service/ServiceInterceptorTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/service/ServiceInterceptorTest.java @@ -12,22 +12,20 @@ import eu.etaxonomy.cdm.api.service.ITermService; import eu.etaxonomy.cdm.model.common.DefinedTermBase; import eu.etaxonomy.cdm.model.common.TermType; import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest; -import eu.etaxonomy.taxeditor.httpinvoker.CDMServer; public class ServiceInterceptorTest extends BaseRemotingTest { - + private static final Logger logger = Logger.getLogger(ServiceInterceptorTest.class); ITermService termService = getRemoteApplicationController().getTermService(); - + @BeforeClass - public static void initializeServiceInterceptorTest() { - CDMServer.getInstance().setKeepServerRunning(true); + public static void initializeServiceInterceptorTest() { } - + @Test public void termServiceInterceptorTest() { List> terms = termService.listByTermType(TermType.Language, null, null, null, null); Assert.assertEquals(terms.size(),CdmCacher.getDefaultCache().getSize()); - // TO DO : get the static termTypeMap from TermServiceRequestExecutor and check the size + // TO DO : get the static termTypeMap from TermServiceRequestExecutor and check the size } } diff --git a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManagerTest.java b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManagerTest.java index 92c00fe36..d8b046401 100644 --- a/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManagerTest.java +++ b/eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManagerTest.java @@ -14,7 +14,6 @@ import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.description.PolytomousKey; import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest; -import eu.etaxonomy.taxeditor.httpinvoker.CDMServer; public class CdmEntitySessionManagerTest extends BaseRemotingTest { @@ -31,8 +30,6 @@ public class CdmEntitySessionManagerTest extends BaseRemotingTest { @BeforeClass public static void initializeCdmEntitySessionManagerTest() { - CDMServer.getInstance().setKeepServerRunning(true); - //initializeController("default", "127.0.0.1", 8080, "", NomenclaturalCode.ICNAFP); } @Before diff --git a/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db b/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db index e59bba4e3..638ef7abf 100644 Binary files a/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db and b/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db differ diff --git a/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.trace.db b/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.trace.db index ed16291f5..a5338e269 100644 Binary files a/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.trace.db and b/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.trace.db differ diff --git a/eu.etaxonomy.taxeditor.test/src/test/resources/server.properties b/eu.etaxonomy.taxeditor.test/src/test/resources/server.properties new file mode 100644 index 000000000..5b20cc495 --- /dev/null +++ b/eu.etaxonomy.taxeditor.test/src/test/resources/server.properties @@ -0,0 +1,5 @@ +httpPort=9090 +stopPort=9191 +stopKey=jetty-cdm-server +user=admin +password=00000 diff --git a/pom.xml b/pom.xml index 2e34d58d9..abec18c89 100644 --- a/pom.xml +++ b/pom.xml @@ -425,4 +425,5 @@ +