From 1ebfd32a5c84032e2ad65ebefd8a8b6c2fca2318 Mon Sep 17 00:00:00 2001 From: slaws Date: Wed, 27 Apr 2011 09:36:49 +0000 Subject: make the test runner a simple deamon so it can be shut down properly git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1097055 13f79535-47bb-0310-9956-ffa450edef68 --- .../itest/nodes/two-jvm-hazelcast/build.xml | 32 +++++++------ .../java/org/apache/tuscany/sca/impl/Tuscany.java | 52 ++++++++++++++++++++++ .../domain-domain1/node-nodeService/node.xml | 4 +- 3 files changed, 73 insertions(+), 15 deletions(-) (limited to 'sca-java-2.x/trunk') diff --git a/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/build.xml b/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/build.xml index 8f47af1544..684aa97ec8 100644 --- a/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/build.xml +++ b/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/build.xml @@ -19,20 +19,22 @@ - - - - - - - - + + + + + + + + - - + + + + + + diff --git a/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/src/main/java/org/apache/tuscany/sca/impl/Tuscany.java b/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/src/main/java/org/apache/tuscany/sca/impl/Tuscany.java index 748dc513ef..6915ca73d7 100644 --- a/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/src/main/java/org/apache/tuscany/sca/impl/Tuscany.java +++ b/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/src/main/java/org/apache/tuscany/sca/impl/Tuscany.java @@ -21,6 +21,9 @@ package org.apache.tuscany.sca.impl; import java.io.File; import java.io.FilenameFilter; +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; import java.net.URL; import org.apache.tuscany.sca.node.Node; @@ -35,6 +38,11 @@ public class Tuscany { public static void main(String[] args) throws Exception { String domainName = args[0]; String nodeName = args[1]; + int deamonPort = -1; + + if (args.length > 2){ + deamonPort = Integer.parseInt(args[2]); + } // find the domain directory File currentDirectory = new File("."); @@ -57,8 +65,38 @@ public class Tuscany { URL nodeConfigURL = nodeDirectory.toURI().resolve("node.xml").toURL(); Node node = nodeFactory.createNode(nodeConfigURL); + ShutdownThread shutdown = new ShutdownThread(node); + Runtime.getRuntime().addShutdownHook(shutdown); + node.start(); + // for testing we're going to set up a deamon that listens for + // a shutdown message on a specified port (well it actually just + // waits for a client to connect to the port as that's all we need + // for now). If no port is specified then just stop straight away + + if (deamonPort >= 0){ + // Its a runtime that has to act as a deamon + ServerSocket serverSocket = null; + + try { + serverSocket = new ServerSocket(deamonPort); + } catch (IOException e) { + System.out.println("Can't create a ServerSocket on port: " + deamonPort); + } + + // all we're doing here is waiting for a connection. If we wanted to implement + // a real deamon we should perhaps listen to what's coming in over the resulting socket + // and see if a shutdown has been requested + Socket clientSocket = null; + try { + clientSocket = serverSocket.accept(); + } catch (IOException e) { + System.out.println("Accept failed on port: " + deamonPort); + } + } + + node.stop(); } /** @@ -94,4 +132,18 @@ public class Tuscany { return false; } } + + private static class ShutdownThread extends Thread { + private Node node; + + public ShutdownThread(Node node) { + super(); + this.node = node; + } + + @Override + public void run() { + node.stop(); + } + } } \ No newline at end of file diff --git a/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/src/test/resources/domain-domain1/node-nodeService/node.xml b/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/src/test/resources/domain-domain1/node-nodeService/node.xml index 64009758d2..5d8620498a 100644 --- a/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/src/test/resources/domain-domain1/node-nodeService/node.xml +++ b/sca-java-2.x/trunk/testing/itest/nodes/two-jvm-hazelcast/src/test/resources/domain-domain1/node-nodeService/node.xml @@ -21,8 +21,8 @@ xmlns="http://tuscany.apache.org/xmlns/sca/1.1" xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1" uri="http://sample/nodes/TestNode2" - domain="default" - domainRegistry="tuscany:default?listen=127.0.0.1:14820"> + domain="default" + domainRegistry="tuscany:default?listen=127.0.0.1:14820"> -- cgit v1.2.3