blob: b1b0c843764bfb9189a96b2c0fa1432acb40ac45 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.tuscany.sca.itest.lifecycle;
import helloworld.Helloworld;
import helloworld.HelloworldClientImplC;
import helloworld.HelloworldClientImplCE;
import helloworld.HelloworldClientImplS;
import helloworld.StatusImpl;
import junit.framework.Assert;
import org.apache.tuscany.sca.Node;
import org.apache.tuscany.sca.TuscanyRuntime;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class LifecycleTestCase {
public Node node = null;
@Before
public void setUp() throws Exception {
StatusImpl.statusString = "";
}
@After
public void tearDown() throws Exception {
}
/*
* Start up the composite and don't send any messages. No exception
* should be thrown.
*/
@Test
public void testNoExceptionNoMessageShutdown() throws Exception{
StatusImpl.statusString = "";
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
node.startComposite("HelloworldContrib", "lifecycle.composite");
// we don't send any messages in this case and just shut down directly
// stop a composite
node.stopComposite("HelloworldContrib", "lifecycle.composite");
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite and send a message. No exception
* should be thrown.
*/
@Test
public void testNoExceptionMessageShutdown() throws Exception{
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
node.startComposite("HelloworldContrib", "lifecycle.composite");
// send a message to each client
Helloworld hwCE = node.getService(Helloworld.class, "HelloworldClientCE");
System.out.println(hwCE.sayHello("name"));
Helloworld hwC = node.getService(Helloworld.class, "HelloworldClientC");
System.out.println(hwC.sayHello("name"));
Helloworld hwS = node.getService(Helloworld.class, "HelloworldClientC");
System.out.println(hwS.sayHello("name"));
// stop a composite
node.stopComposite("HelloworldContrib", "lifecycle.composite");
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplC\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientC#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientC#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplC\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
/*$self$ reference of client is not stopped here - should it be? */
}
/*
* Start up the composite. Exception thrown in constructor of composite
* scoped component with eager init set
*/
@Test
public void testConstructorExceptionShutdownCE() throws Exception{
HelloworldClientImplCE.throwTestExceptionOnConstruction = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Init method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testConstructorExceptionShutdownCE");
}
// don't need to send a message as eager init ensures that
// the component instance is created at start time
// stop a composite
try {
// not required in this test as the exception during EagerInit will cause the stop
//node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on node.stopComposite", "LifecycleTestCase.testConstructorExceptionShutdownCE");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplCE.throwTestExceptionOnConstruction = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Exception on construction - HelloworldClientImplCE\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Exception caught on node.startComposite - LifecycleTestCase.testConstructorExceptionShutdownCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite. Exception thrown in constructor of composite
* scoped component
*/
@Test
public void testConstructorExceptionShutdownC() throws Exception{
HelloworldClientImplC.throwTestExceptionOnConstruction = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Init method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testConstructorExceptionShutdownC");
}
// send a message to the appropriate client
try {
Helloworld hwCE = node.getService(Helloworld.class, "HelloworldClientC");
System.out.println(hwCE.sayHello("name"));
} catch (Exception exception) {
// the component throws an error on construction
StatusImpl.appendStatus("Exception caught on sayHello()", "LifecycleTestCase.testConstructorExceptionShutdownC");
}
// stop a composite
try {
node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on node.stopComposite", "LifecycleTestCase.testConstructorExceptionShutdownC");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplC.throwTestExceptionOnConstruction = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Exception on construction - HelloworldClientImplC\n" +
"Exception caught on sayHello() - LifecycleTestCase.testConstructorExceptionShutdownC\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite. Exception thrown in constructor of stateless
* scoped component
*/
@Test
public void testConstructorExceptionShutdownS() throws Exception{
HelloworldClientImplS.throwTestExceptionOnConstruction = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Init method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testConstructorExceptionShutdownS");
}
// send a message to the appropriate client
try {
Helloworld hwCE = node.getService(Helloworld.class, "HelloworldClientS");
System.out.println(hwCE.sayHello("name"));
} catch (Exception exception) {
// the component throws an error on construction
StatusImpl.appendStatus("Exception caught on sayHello()", "LifecycleTestCase.testConstructorExceptionShutdownS");
}
// stop a composite
try {
node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on node.stopComposite", "LifecycleTestCase.testConstructorExceptionShutdownS");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplS.throwTestExceptionOnConstruction = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Exception on construction - HelloworldClientImplS\n" +
"Exception caught on sayHello() - LifecycleTestCase.testConstructorExceptionShutdownS\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite. Exception thrown in init of composite
* scoped component with eager init
*/
@Test
public void testInitExceptionShutdownCE() throws Exception{
HelloworldClientImplCE.throwTestExceptionOnInit = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Init method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testInitExceptionShutdownCE");
}
// don't need to send a message as eager init ensures that
// the component instance is created and inited at start time
// stop a composite
try {
// not required in this test as the exception during EagerInit will cause the stop
//node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on node.stopComposite", "LifecycleTestCase.testInitExceptionShutdownCE");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplCE.throwTestExceptionOnInit = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n"+
"Implementation start - HelloworldServiceTestImpl\n"+
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n"+
"Exception on init - HelloworldClientImplCE\n"+
"Destroy - HelloworldClientImplCE\n"+
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n"+
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n"+
"Implementation stop - HelloworldServiceTestImpl\n" +
"Exception caught on node.startComposite - LifecycleTestCase.testInitExceptionShutdownCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite. Exception thrown in init of composite
* scoped component
*/
@Test
public void testInitExceptionShutdownC() throws Exception{
HelloworldClientImplC.throwTestExceptionOnInit = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Init method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testInitExceptionShutdownC");
}
// send a message to the appropriate client
try {
Helloworld hwCE = node.getService(Helloworld.class, "HelloworldClientC");
System.out.println(hwCE.sayHello("name"));
} catch (Exception exception) {
// the component throws an error on init
StatusImpl.appendStatus("Exception caught on sayHello()", "LifecycleTestCase.testInitExceptionShutdownC");
}
// stop a composite
try {
node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on node.stopComposite", "LifecycleTestCase.testInitExceptionShutdownC");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplC.throwTestExceptionOnInit = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Exception on init - HelloworldClientImplC\n" +
"Destroy - HelloworldClientImplC\n" +
"Exception caught on sayHello() - LifecycleTestCase.testInitExceptionShutdownC\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite. Exception thrown in init of stateless
* scoped component
*/
@Test
public void testInitExceptionShutdownS() throws Exception{
HelloworldClientImplS.throwTestExceptionOnInit = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Init method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testInitExceptionShutdownS");
}
// send a message to the appropriate client
try {
Helloworld hwCE = node.getService(Helloworld.class, "HelloworldClientS");
System.out.println(hwCE.sayHello("name"));
} catch (Exception exception) {
// the component throws an error on init
StatusImpl.appendStatus("Exception caught on sayHello()", "LifecycleTestCase.testInitExceptionShutdownS");
}
// stop a composite
try {
node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on node.stopComposite", "LifecycleTestCase.testInitExceptionShutdownS");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplS.throwTestExceptionOnInit = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Exception on init - HelloworldClientImplS\n" +
"Destroy - HelloworldClientImplS\n" +
"Exception caught on sayHello() - LifecycleTestCase.testInitExceptionShutdownS\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite and then stop it. Exception thrown in destory of composite
* scoped component with eager init set
*/
@Test
public void testDestroyExceptionShutdownCE() throws Exception{
HelloworldClientImplCE.throwTestExceptionOnDestroy = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Destroy method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testDestroyExceptionShutdownCE");
}
// don't need to send a message as eager init ensures that
// the component instance is created start time and hence should
// be destroyed
// stop a composite
try {
// not required in this test as the exception during EagerInit will cause the stop
//node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on node.stopComposite", "LifecycleTestCase.testDestroyExceptionShutdownCE");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplCE.throwTestExceptionOnDestroy = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Exception on destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite and then stop it. Exception thrown in destory of composite
* scoped component
*/
@Test
public void testDestroyExceptionShutdownC() throws Exception{
HelloworldClientImplC.throwTestExceptionOnDestroy = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Destroy method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testDestroyExceptionShutdownC");
}
// send a message to the appropriate client
Helloworld hwCE = node.getService(Helloworld.class, "HelloworldClientC");
System.out.println(hwCE.sayHello("name"));
// don't need to catch exception here as the component instance won't
// be destroyed until shutdown
// stop a composite
try {
node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on node.stopComposite", "LifecycleTestCase.testDestroyExceptionShutdownC");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplC.throwTestExceptionOnDestroy = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplC\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientC#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientC#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Exception on destroy - HelloworldClientImplC\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
}
/*
* Start up the composite and then stop it. Exception thrown in destory of stateless
* scoped component
*/
@Test
public void testDestroyExceptionShutdownS() throws Exception{
HelloworldClientImplS.throwTestExceptionOnDestroy = true;
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
try {
node.startComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it's thrown from the HelloworldClientImpl @Destroy method
StatusImpl.appendStatus("Exception caught on node.startComposite", "LifecycleTestCase.testDestroyExceptionShutdownS");
}
// send a message to the appropriate client
try {
Helloworld hwCE = node.getService(Helloworld.class, "HelloworldClientS");
System.out.println(hwCE.sayHello("name"));
} catch (Exception exception) {
// exception will be thrown when component instance is discarded
// after the message has been processed
}
// stop a composite
try {
node.stopComposite("HelloworldContrib", "lifecycle.composite");
} catch (Exception exception) {
// it will complain about the composite not being started
StatusImpl.appendStatus("Exception caught on sayHello()", "LifecycleTestCase.testDestroyExceptionShutdownS");
}
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
HelloworldClientImplS.throwTestExceptionOnDestroy = false;
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplS\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientS#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Exception on destroy - HelloworldClientImplS\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientS#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n",
StatusImpl.statusString);
}
/*
* Start up the composite. Send a message where the processing sends an
* exception. App exception has no material affect and the scenario is the
* same as just sending normal messages and stopping the runtime
*/
@Test
public void testAppExceptionShutdown() throws Exception{
TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
// create a Tuscany node
node = tuscanyRuntime.createNode();
// install a contribution
node.installContribution("HelloworldContrib", "target/classes", null, null);
// start a composite
node.startComposite("HelloworldContrib", "lifecycle.composite");
// send a message to each client. The last one throws and exception
Helloworld hwCE = node.getService(Helloworld.class, "HelloworldClientCE");
System.out.println(hwCE.sayHello("name"));
Helloworld hwC = node.getService(Helloworld.class, "HelloworldClientC");
System.out.println(hwC.sayHello("name"));
Helloworld hwS = node.getService(Helloworld.class, "HelloworldClientC");
System.out.println(hwS.sayHello("name"));
try {
Helloworld hw = node.getService(Helloworld.class, "HelloworldC");
hw.throwException("name");
} catch (Exception ex) {
// do nothing
StatusImpl.appendStatus("Exception caught on throwException()", "LifecycleTestCase.testAppExceptionShutdown");
}
// stop a composite
node.stopComposite("HelloworldContrib", "lifecycle.composite");
// uninstall a constribution
node.uninstallContribution("HelloworldContrib");
// stop a Tuscany node
node.stop();
// stop the runtime
tuscanyRuntime.stop();
// see what happened
System.out.println(StatusImpl.statusString);
Assert.assertEquals("Service binding start - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Implementation start - HelloworldServiceTestImpl\n" +
"Service binding start - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplCE\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Init - HelloworldClientImplC\n" +
"Reference binding start - EndpointReference: URI = HelloworldClientC#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Exception caught on throwException() - LifecycleTestCase.testAppExceptionShutdown\n" +
"Service binding stop - Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Service binding stop - Endpoint: URI = HelloworldServiceTestImpl#service-binding(Helloworld/lifecycle)\n" +
"Implementation stop - HelloworldServiceTestImpl\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientC#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplC\n" +
"Reference binding stop - EndpointReference: URI = HelloworldClientCE#reference-binding(service/lifecycle) WIRED_TARGET_FOUND_AND_MATCHED Target = Endpoint: URI = HelloworldService#service-binding(Helloworld/lifecycle)\n" +
"Destroy - HelloworldClientImplCE\n",
StatusImpl.statusString);
}
}