[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