[jboss-svn-commits] JBoss Common SVN: r4534 - in arquillian/trunk/impl-base/src: main/java/org/jboss/arquillian/impl/handler and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 17 15:25:52 EDT 2010
Author: aslak
Date: 2010-06-17 15:25:52 -0400 (Thu, 17 Jun 2010)
New Revision: 4534
Modified:
arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/context/ClientProfileBuilder.java
arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/handler/ContainerRestarter.java
arquillian/trunk/impl-base/src/test/java/org/jboss/arquillian/impl/handler/ContainerRestarterTestCase.java
Log:
ARQ-182 Handler that will force a restart pr N number of deployments. N is controlled using the engine/maxDeploymentsBeforeRestart element in arquillian.xml. Default is to not force a restart.
Modified: arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/context/ClientProfileBuilder.java
===================================================================
--- arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/context/ClientProfileBuilder.java 2010-06-17 18:25:15 UTC (rev 4533)
+++ arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/context/ClientProfileBuilder.java 2010-06-17 19:25:52 UTC (rev 4534)
@@ -22,6 +22,7 @@
import org.jboss.arquillian.impl.handler.ArchiveGenerator;
import org.jboss.arquillian.impl.handler.ContainerCreator;
import org.jboss.arquillian.impl.handler.ContainerDeployer;
+import org.jboss.arquillian.impl.handler.ContainerRestarter;
import org.jboss.arquillian.impl.handler.ContainerStarter;
import org.jboss.arquillian.impl.handler.ContainerStopper;
import org.jboss.arquillian.impl.handler.ContainerTestExecuter;
@@ -58,6 +59,7 @@
context.register(BeforeSuite.class, new ContainerCreator());
context.register(BeforeSuite.class, new ContainerStarter());
+ context.register(BeforeClass.class, new ContainerRestarter());
context.register(AfterSuite.class, new ContainerStopper());
}
@@ -73,12 +75,12 @@
context.register(BeforeClass.class, new ActivateRunModeTypeDeployment());
context.register(BeforeClass.class, new ArchiveGenerator());
+ context.register(BeforeClass.class, new ArchiveDeploymentExporter());
context.register(BeforeClass.class, new ContainerDeployer());
context.register(AfterClass.class, new ContainerUndeployer());
context.register(BeforeClass.class, new ActivateRunModeTypeClient());
-
- context.register(BeforeClass.class, new ArchiveDeploymentExporter());
+
}
/* (non-Javadoc)
Modified: arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/handler/ContainerRestarter.java
===================================================================
--- arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/handler/ContainerRestarter.java 2010-06-17 18:25:15 UTC (rev 4533)
+++ arquillian/trunk/impl-base/src/main/java/org/jboss/arquillian/impl/handler/ContainerRestarter.java 2010-06-17 19:25:52 UTC (rev 4534)
@@ -16,6 +16,7 @@
*/
package org.jboss.arquillian.impl.handler;
+import org.jboss.arquillian.spi.Configuration;
import org.jboss.arquillian.spi.Context;
import org.jboss.arquillian.spi.DeployableContainer;
import org.jboss.arquillian.spi.event.container.AfterStart;
@@ -43,8 +44,6 @@
*/
public class ContainerRestarter implements EventHandler<SuiteEvent>
{
- private static final int MAX_DEPLOYMENTS_BEFORE_RESTART = 5;
-
private int deploymentCount = 0;
/* (non-Javadoc)
@@ -52,19 +51,26 @@
*/
public void callback(Context context, SuiteEvent event) throws Exception
{
- if(deploymentCount == getMaxDeployments(context) -1)
+ if(shouldRestart(context))
{
new ContainerStopper().callback(context, event);
new ContainerStarter().callback(context, event);
-
- deploymentCount = 0;
}
- deploymentCount++;
}
- private int getMaxDeployments(Context context)
+ private boolean shouldRestart(Context context)
{
- //context.get(Configuration.class).getMaxDeploymentsBeforeRestart();
- return MAX_DEPLOYMENTS_BEFORE_RESTART;
+ Configuration configuration = context.get(Configuration.class);
+ int maxDeployments = configuration == null ? -1:configuration.getMaxDeploymentsBeforeRestart();
+ if(maxDeployments > -1)
+ {
+ if((maxDeployments -1 ) == deploymentCount)
+ {
+ deploymentCount = 0;
+ return true;
+ }
+ }
+ deploymentCount++;
+ return false;
}
}
Modified: arquillian/trunk/impl-base/src/test/java/org/jboss/arquillian/impl/handler/ContainerRestarterTestCase.java
===================================================================
--- arquillian/trunk/impl-base/src/test/java/org/jboss/arquillian/impl/handler/ContainerRestarterTestCase.java 2010-06-17 18:25:15 UTC (rev 4533)
+++ arquillian/trunk/impl-base/src/test/java/org/jboss/arquillian/impl/handler/ContainerRestarterTestCase.java 2010-06-17 19:25:52 UTC (rev 4534)
@@ -18,6 +18,7 @@
import org.jboss.arquillian.impl.context.ClassContext;
import org.jboss.arquillian.impl.context.SuiteContext;
+import org.jboss.arquillian.spi.Configuration;
import org.jboss.arquillian.spi.DeployableContainer;
import org.jboss.arquillian.spi.ServiceLoader;
import org.jboss.arquillian.spi.event.container.AfterStart;
@@ -56,7 +57,11 @@
@Test
public void shouldRestartContainerForEveryX() throws Exception
{
+ Configuration configuration = new Configuration();
+ configuration.setMaxDeploymentsBeforeRestart(5);
+
ClassContext context = new ClassContext(new SuiteContext(serviceLoader));
+ context.add(Configuration.class, configuration);
context.add(DeployableContainer.class, container);
context.register(BeforeStart.class, eventHandler);
context.register(AfterStart.class, eventHandler);
@@ -78,4 +83,34 @@
Mockito.verify(eventHandler, Mockito.times(8)).callback(
Mockito.any(SuiteContext.class), Mockito.any(ContainerEvent.class));
}
+
+ @Test
+ public void shouldNotForceRestartIfMaxDeploymentsNotSet() throws Exception
+ {
+ Configuration configuration = new Configuration();
+ configuration.setMaxDeploymentsBeforeRestart(-1);
+
+ ClassContext context = new ClassContext(new SuiteContext(serviceLoader));
+ context.add(Configuration.class, configuration);
+ context.add(DeployableContainer.class, container);
+ context.register(BeforeStart.class, eventHandler);
+ context.register(AfterStart.class, eventHandler);
+ context.register(BeforeStop.class, eventHandler);
+ context.register(AfterStop.class, eventHandler);
+
+ ContainerRestarter handler = new ContainerRestarter();
+
+ for(int i = 0; i < 10; i++)
+ {
+ handler.callback(context, new SuiteEvent());
+ }
+
+ // verify that the container was restarted twice
+ Mockito.verify(container, Mockito.times(0)).stop(context);
+ Mockito.verify(container, Mockito.times(0)).start(context);
+
+ // verify that all the events where fired (2 times restart * 4(2 start + 2 stop))
+ Mockito.verify(eventHandler, Mockito.times(0)).callback(
+ Mockito.any(SuiteContext.class), Mockito.any(ContainerEvent.class));
+ }
}
More information about the jboss-svn-commits
mailing list