You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2007/03/13 07:19:29 UTC

svn commit: r517557 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/component/scope/ test/java/org/apache/tuscany/core/component/scope/

Author: jboynes
Date: Mon Mar 12 23:19:28 2007
New Revision: 517557

URL: http://svn.apache.org/viewvc?view=rev&rev=517557
Log:
merge lifecycle scope container tests into basic test cases

Removed:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/CompositeScopeInstanceLifecycleTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInitDestroyErrorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainer.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicCompositeScopeTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicConversationalScopeTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicRequestScopeTestCase.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainer.java?view=diff&rev=517557&r1=517556&r2=517557
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainer.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainer.java Mon Mar 12 23:19:28 2007
@@ -102,6 +102,7 @@
         String conversationId = getConversationId();
         try {
             workContext.setCurrentAtomicComponent(component);
+            // FIXME this should be an InstanceWrapper and shouldn't we stop it? 
             Object instance = nonDurableStore.readRecord(component, conversationId);
             if (instance != null) {
                 nonDurableStore.removeRecord(component, conversationId);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicCompositeScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicCompositeScopeTestCase.java?view=diff&rev=517557&r1=517556&r2=517557
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicCompositeScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicCompositeScopeTestCase.java Mon Mar 12 23:19:28 2007
@@ -22,52 +22,60 @@
 
 import junit.framework.TestCase;
 import org.easymock.EasyMock;
+import org.easymock.IMocksControl;
 
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.InstanceWrapper;
 import org.apache.tuscany.spi.component.TargetResolutionException;
+import org.apache.tuscany.core.component.event.ComponentStart;
+import org.apache.tuscany.core.component.event.ComponentStop;
+import org.apache.tuscany.core.component.event.HttpSessionStart;
+import org.apache.tuscany.core.component.event.HttpSessionEnd;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class BasicCompositeScopeTestCase extends TestCase {
 
-    private CompositeScopeContainer scopeContext;
+    private CompositeScopeContainer scopeContainer;
     private AtomicComponent component;
     private InstanceWrapper wrapper;
 
     public void testWrapperCreation() throws Exception {
         EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
         EasyMock.replay(component, wrapper);
-        assertSame(wrapper, scopeContext.getWrapper(component));
+        assertSame(wrapper, scopeContainer.getWrapper(component));
         EasyMock.verify(component, wrapper);
     }
 
     public void testWrapperRetrieve() throws Exception {
         // first create a wrapper in the context's cache
         EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
         EasyMock.replay(component, wrapper);
-        assertSame(wrapper, scopeContext.getWrapper(component));
+        assertSame(wrapper, scopeContainer.getWrapper(component));
         EasyMock.verify(component, wrapper);
         EasyMock.reset(component, wrapper);
 
         // fetch again and check that the component and wrapper are not called
         EasyMock.replay(component, wrapper);
-        assertSame(wrapper, scopeContext.getWrapper(component));
+        assertSame(wrapper, scopeContainer.getWrapper(component));
         EasyMock.verify(component, wrapper);
     }
 
     public void testAssociatedWrapperRetrieve() throws Exception {
         // first create a wrapper in the context's cache
         EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
         EasyMock.replay(component, wrapper);
-        assertSame(wrapper, scopeContext.getWrapper(component));
+        assertSame(wrapper, scopeContainer.getWrapper(component));
         EasyMock.verify(component, wrapper);
         EasyMock.reset(component, wrapper);
 
         // fetch again and check that the component and wrapper are not called
         EasyMock.replay(component, wrapper);
-        assertSame(wrapper, scopeContext.getAssociatedWrapper(component));
+        assertSame(wrapper, scopeContainer.getAssociatedWrapper(component));
         EasyMock.verify(component, wrapper);
     }
 
@@ -76,7 +84,7 @@
         EasyMock.expect(component.getUri()).andReturn(uri);
         EasyMock.replay(component, wrapper);
         try {
-            scopeContext.getAssociatedWrapper(component);
+            scopeContainer.getAssociatedWrapper(component);
             fail();
         } catch (TargetResolutionException e) {
             assertEquals(uri.toString(), e.getMessage());
@@ -84,22 +92,79 @@
         EasyMock.verify(component, wrapper);
     }
 
+    @SuppressWarnings("unchecked")
     public void testWrapperReturn() throws Exception{
         EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
+        EasyMock.replay(component, wrapper);
+        assertSame(wrapper, scopeContainer.getWrapper(component));
+        scopeContainer.returnWrapper(component, wrapper);
+        EasyMock.verify(component, wrapper);
+    }
+
+    public void testLifecycleWithNoEagerInit() throws Exception {
+        EasyMock.expect(component.getInitLevel()).andReturn(0);
         EasyMock.replay(component, wrapper);
-        assertSame(wrapper, scopeContext.getWrapper(component));
-        scopeContext.returnWrapper(component, wrapper);
+        scopeContainer.onEvent(new ComponentStart(this, null));
+        scopeContainer.onEvent(new ComponentStop(this, null));
         EasyMock.verify(component, wrapper);
     }
 
+    public void testLifecycleWithEagerInit() throws Exception {
+        EasyMock.expect(component.getInitLevel()).andReturn(1);
+        EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
+        wrapper.stop();
+        EasyMock.replay(component, wrapper);
+        scopeContainer.onEvent(new ComponentStart(this, null));
+        scopeContainer.onEvent(new ComponentStop(this, null));
+        EasyMock.verify(component, wrapper);
+    }
+
+    public void testDestroyOrder() throws Exception {
+        scopeContainer = new CompositeScopeContainer(null);
+        scopeContainer.start();
+        IMocksControl control = EasyMock.createStrictControl();
+        InstanceWrapper wrapper1 = control.createMock(InstanceWrapper.class);
+        InstanceWrapper wrapper2 = control.createMock(InstanceWrapper.class);
+        InstanceWrapper wrapper3 = control.createMock(InstanceWrapper.class);
+        AtomicComponent component1 = control.createMock(AtomicComponent.class);
+        AtomicComponent component2 = control.createMock(AtomicComponent.class);
+        AtomicComponent component3 = control.createMock(AtomicComponent.class);
+
+        EasyMock.expect(component1.getInitLevel()).andStubReturn(-1);
+        EasyMock.expect(component2.getInitLevel()).andStubReturn(1);
+        EasyMock.expect(component3.getInitLevel()).andStubReturn(-1);
+
+        EasyMock.expect(component2.createInstanceWrapper()).andReturn(wrapper2);
+        wrapper2.start();
+        EasyMock.expect(component1.createInstanceWrapper()).andReturn(wrapper1);
+        wrapper1.start();
+        EasyMock.expect(component3.createInstanceWrapper()).andReturn(wrapper3);
+        wrapper3.start();
+        wrapper3.stop();
+        wrapper1.stop();
+        wrapper2.stop();
+        control.replay();
+
+        scopeContainer.register(component1);
+        scopeContainer.register(component2);
+        scopeContainer.register(component3);
+        scopeContainer.onEvent(new ComponentStart(this, null));
+        assertSame(wrapper1, scopeContainer.getWrapper(component1));
+        assertSame(wrapper2, scopeContainer.getWrapper(component2));
+        assertSame(wrapper3, scopeContainer.getWrapper(component3));
+        scopeContainer.onEvent(new ComponentStop(this, null));
+        control.verify();
+    }
     @SuppressWarnings("unchecked")
     protected void setUp() throws Exception {
         super.setUp();
-        component = EasyMock.createNiceMock(AtomicComponent.class);
-        wrapper = EasyMock.createNiceMock(InstanceWrapper.class);
+        component = EasyMock.createStrictMock(AtomicComponent.class);
+        wrapper = EasyMock.createStrictMock(InstanceWrapper.class);
 
-        scopeContext = new CompositeScopeContainer(null);
-        scopeContext.start();
-        scopeContext.register(component);
+        scopeContainer = new CompositeScopeContainer(null);
+        scopeContainer.start();
+        scopeContainer.register(component);
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicConversationalScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicConversationalScopeTestCase.java?view=diff&rev=517557&r1=517556&r2=517557
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicConversationalScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicConversationalScopeTestCase.java Mon Mar 12 23:19:28 2007
@@ -45,9 +45,13 @@
         workContext.setIdentifier(Scope.CONVERSATION, conversation);
 
         EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
+        // FIXME shouldn't stop be called when the component is removed?
+//        wrapper.stop();
         EasyMock.replay(component, wrapper);
         assertSame(wrapper, scopeContainer.getWrapper(component));
         assertSame(wrapper, scopeContainer.getWrapper(component));
+        scopeContainer.remove(component);
         EasyMock.verify(component, wrapper);
     }
 
@@ -55,9 +59,12 @@
         String conversation1 = "conv";
         String conversation2 = "conv2";
 
-        InstanceWrapper wrapper2 = EasyMock.createNiceMock(InstanceWrapper.class);
-        EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper).andReturn(wrapper2);
-        EasyMock.replay(component, wrapper);
+        InstanceWrapper wrapper2 = EasyMock.createStrictMock(InstanceWrapper.class);
+        EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
+        EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper2);
+        wrapper2.start();
+        EasyMock.replay(component, wrapper, wrapper2);
         workContext.setIdentifier(Scope.CONVERSATION, conversation1);
         assertSame(wrapper, scopeContainer.getWrapper(component));
         workContext.setIdentifier(Scope.CONVERSATION, conversation2);
@@ -67,8 +74,10 @@
 
     protected void setUp() throws Exception {
         super.setUp();
-        component = EasyMock.createNiceMock(AtomicComponent.class);
-        wrapper = EasyMock.createNiceMock(InstanceWrapper.class);
+        component = EasyMock.createStrictMock(AtomicComponent.class);
+        EasyMock.expect(component.getMaxAge()).andStubReturn(-1);
+        EasyMock.expect(component.getMaxIdleTime()).andStubReturn(-1);
+        wrapper = EasyMock.createStrictMock(InstanceWrapper.class);
 
         StoreMonitor monitor = EasyMock.createMock(StoreMonitor.class);
         monitor.start(EasyMock.isA(String.class));

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicRequestScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicRequestScopeTestCase.java?view=diff&rev=517557&r1=517556&r2=517557
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicRequestScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicRequestScopeTestCase.java Mon Mar 12 23:19:28 2007
@@ -22,23 +22,29 @@
 
 import junit.framework.TestCase;
 import org.easymock.EasyMock;
+import org.easymock.IMocksControl;
 
 import org.apache.tuscany.core.component.event.RequestEnd;
+import org.apache.tuscany.core.component.event.RequestStart;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.InstanceWrapper;
 import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.component.ScopeContainerMonitor;
+import org.apache.tuscany.spi.component.TargetDestructionException;
 import org.apache.tuscany.spi.component.TargetNotFoundException;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class BasicRequestScopeTestCase extends TestCase {
+    private ScopeContainerMonitor monitor;
+    private ScopeContainer scopeContainer;
     private AtomicComponent component;
     private InstanceWrapper wrapper;
-    private ScopeContainer scopeContainer;
 
     public void testLifecycleManagement() throws Exception {
         EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
         EasyMock.replay(component, wrapper);
         assertSame(wrapper, scopeContainer.getWrapper(component));
         assertSame(wrapper, scopeContainer.getWrapper(component));
@@ -47,6 +53,7 @@
 
     public void testGetAssociatedInstance() throws Exception {
         EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
         EasyMock.replay(component, wrapper);
         assertSame(wrapper, scopeContainer.getWrapper(component));
         assertSame(wrapper, scopeContainer.getAssociatedWrapper(component));
@@ -68,20 +75,83 @@
     }
 
     public void testRequestIsolation() throws Exception {
-        InstanceWrapper wrapper2 = EasyMock.createNiceMock(InstanceWrapper.class);
-        EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper).andReturn(wrapper2);
-        EasyMock.replay(component, wrapper);
+        IMocksControl control = EasyMock.createStrictControl();
+        InstanceWrapper wrapper1 = control.createMock(InstanceWrapper.class);
+        InstanceWrapper wrapper2 = control.createMock(InstanceWrapper.class);
+        AtomicComponent component1 = control.createMock(AtomicComponent.class);
+        AtomicComponent component2 = control.createMock(AtomicComponent.class);
+
+        EasyMock.expect(component1.createInstanceWrapper()).andReturn(wrapper1);
+        wrapper1.start();
+        wrapper1.stop();
+        EasyMock.expect(component2.createInstanceWrapper()).andReturn(wrapper2);
+        wrapper2.start();
+        wrapper2.stop();
+        control.replay();
+
+        scopeContainer.register(component1);
+        scopeContainer.register(component2);
+        scopeContainer.onEvent(new RequestStart(this));
+        assertSame(wrapper1, scopeContainer.getWrapper(component1));
+        scopeContainer.onEvent(new RequestEnd(this));
+        scopeContainer.onEvent(new RequestStart(this));
+        assertSame(wrapper2, scopeContainer.getWrapper(component2));
+        scopeContainer.onEvent(new RequestEnd(this));
+        control.verify();
+    }
+
+    public void testDestroyErrorMonitor() throws Exception {
+        TargetDestructionException ex = new TargetDestructionException("oops", "again");
+        monitor.destructionError(ex);
+        EasyMock.expect(component.createInstanceWrapper()).andReturn(wrapper);
+        wrapper.start();
+        wrapper.stop();
+        EasyMock.expectLastCall().andThrow(ex);
+        EasyMock.replay(component, wrapper, monitor);
+
+        scopeContainer.onEvent(new RequestStart(this));
         assertSame(wrapper, scopeContainer.getWrapper(component));
         scopeContainer.onEvent(new RequestEnd(this));
-        assertSame(wrapper2, scopeContainer.getWrapper(component));
-        EasyMock.verify(component, wrapper);
+        EasyMock.verify(component, wrapper, monitor);
+    }
+
+    public void testDestroyOrder() throws Exception {
+        IMocksControl control = EasyMock.createStrictControl();
+        InstanceWrapper wrapper1 = control.createMock(InstanceWrapper.class);
+        InstanceWrapper wrapper2 = control.createMock(InstanceWrapper.class);
+        InstanceWrapper wrapper3 = control.createMock(InstanceWrapper.class);
+        AtomicComponent component1 = control.createMock(AtomicComponent.class);
+        AtomicComponent component2 = control.createMock(AtomicComponent.class);
+        AtomicComponent component3 = control.createMock(AtomicComponent.class);
+
+        EasyMock.expect(component1.createInstanceWrapper()).andReturn(wrapper1);
+        wrapper1.start();
+        EasyMock.expect(component2.createInstanceWrapper()).andReturn(wrapper2);
+        wrapper2.start();
+        EasyMock.expect(component3.createInstanceWrapper()).andReturn(wrapper3);
+        wrapper3.start();
+        wrapper3.stop();
+        wrapper2.stop();
+        wrapper1.stop();
+        control.replay();
+
+        scopeContainer.register(component1);
+        scopeContainer.register(component2);
+        scopeContainer.register(component3);
+        scopeContainer.onEvent(new RequestStart(this));
+        assertSame(wrapper1, scopeContainer.getWrapper(component1));
+        assertSame(wrapper2, scopeContainer.getWrapper(component2));
+        assertSame(wrapper3, scopeContainer.getWrapper(component3));
+        scopeContainer.onEvent(new RequestEnd(this));
+        control.verify();
     }
 
     protected void setUp() throws Exception {
         super.setUp();
-        component = EasyMock.createNiceMock(AtomicComponent.class);
-        wrapper = EasyMock.createNiceMock(InstanceWrapper.class);
-        scopeContainer = new RequestScopeContainer(null, null);
+        component = EasyMock.createStrictMock(AtomicComponent.class);
+        wrapper = EasyMock.createStrictMock(InstanceWrapper.class);
+        monitor = EasyMock.createStrictMock(ScopeContainerMonitor.class);
+        scopeContainer = new RequestScopeContainer(null, monitor);
         scopeContainer.start();
 
         component.addListener(scopeContainer);



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org