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