[jboss-cvs] JBossAS SVN: r75703 - projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jul 11 11:58:00 EDT 2008


Author: alesj
Date: 2008-07-11 11:58:00 -0400 (Fri, 11 Jul 2008)
New Revision: 75703

Modified:
   projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/BadDependencyInfoTestCase.java
Log:
Add new test + more state assertions.

Modified: projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/BadDependencyInfoTestCase.java
===================================================================
--- projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/BadDependencyInfoTestCase.java	2008-07-11 15:45:13 UTC (rev 75702)
+++ projects/microcontainer/trunk/dependency/src/tests/org/jboss/test/dependency/controller/test/BadDependencyInfoTestCase.java	2008-07-11 15:58:00 UTC (rev 75703)
@@ -24,7 +24,9 @@
 import java.lang.reflect.Method;
 
 import junit.framework.Test;
+import org.jboss.dependency.plugins.AbstractController;
 import org.jboss.dependency.plugins.AbstractControllerContext;
+import org.jboss.dependency.plugins.AbstractDependencyItem;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.dependency.spi.DependencyInfo;
@@ -95,6 +97,61 @@
       }
    }
 
+   public void testDependencyItemMethodsOnMeResolved() throws Throwable
+   {
+      ControllerContext bean = createControllerContext("bean");
+      Method[] methods = DependencyItem.class.getDeclaredMethods();
+      for(int i = numberOfInvocations; i >= 0; i--)
+      {
+         for (Method method : methods)
+         {
+            for(ControllerState whenRequired : getStateModel())
+            {
+               ControllerContext context = createControllerContext(method.getName());
+               DependencyInfo info = context.getDependencyInfo();
+               info.addDependsOnMe(ProxyDependencyItem.createDependencyInfo(method, i, whenRequired));
+               DependencyItem beanDependency = new AbstractDependencyItem("bean", context.getName(), whenRequired, null);
+               bean.getDependencyInfo().addIDependOn(beanDependency);
+               ControllerState previous = getStateModel().getPreviousState(whenRequired);
+               if (previous == null)
+                  previous = ControllerState.INSTALLED;
+               install(bean);
+               assertEquals(previous, bean.getState());
+               install(context);
+               ControllerState state = context.getState();
+               assertTrue(context.getName().toString(), ControllerState.ERROR.equals(state) || ControllerState.INSTALLED.equals(state));
+               if (ControllerState.INSTALLED.equals(state))
+                  assertEquals(ControllerState.INSTALLED, bean.getState());
+               else
+                  assertEquals(previous, bean.getState());                  
+               uninstall(context);
+               if (beanDependency.isResolved())
+               {
+                  Throwable t = context.getError();
+                  if (t != null)
+                  {
+                     StackTraceElement[] elements = t.getStackTrace();
+                     for(StackTraceElement trace : elements)
+                     {
+                        // we failed in uninstall - cannot unwind dependencies
+                        if (trace.getClassName().equals(AbstractController.class.getName()) && "uninstallContext".equals(trace.getMethodName()))
+                        {
+                           previous = ControllerState.INSTALLED;
+                           break;
+                        }
+                     }
+                  }
+                  else if (ControllerState.INSTALLED.equals(previous))
+                     previous = ControllerState.NOT_INSTALLED;
+               }
+               assertEquals(context.toString(), previous, bean.getState());
+               uninstall(bean);
+               bean.getDependencyInfo().removeIDependOn(beanDependency);
+            }
+         }
+      }
+   }
+
    public void testDependencyItemMethodsOnThem() throws Throwable
    {
       Method[] methods = DependencyItem.class.getDeclaredMethods();
@@ -134,6 +191,11 @@
                assertEquals(bean.getName().toString(), ControllerState.INSTALLED, bean.getState());
                assertTrue(context.getName().toString(), ControllerState.ERROR.equals(context.getState()) || ControllerState.INSTALLED.equals(context.getState()));
                uninstall(bean);
+               ControllerState previous = getStateModel().getPreviousState(whenRequired);
+               if (previous == null)
+                  previous = ControllerState.INSTALLED;
+               if (ControllerState.ERROR.equals(context.getState()) == false)
+                  assertEquals(previous, context.getState());
                uninstall(context);
             }
          }




More information about the jboss-cvs-commits mailing list