/* | |
* 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); | |
} | |
} |