summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime')
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/ClassLoaderReleaseTestCase.java66
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DeployerTestCase.java96
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DomainCompositeTestCase.java71
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DynamicTestCase.java116
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/NodeXMLTestCase.java48
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/PerfTest.java74
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TuscanyRuntimeTestCase.java190
-rw-r--r--sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TwoNodesTestCase.java52
8 files changed, 713 insertions, 0 deletions
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/ClassLoaderReleaseTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/ClassLoaderReleaseTestCase.java
new file mode 100644
index 0000000000..4488458f5a
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/ClassLoaderReleaseTestCase.java
@@ -0,0 +1,66 @@
+/*
+ * 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.runtime;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.junit.Test;
+
+public class ClassLoaderReleaseTestCase {
+
+ @Test
+ public void testInstallDeployable() throws IOException, ActivationException{
+ File f = copyFile("src/test/resources/sample-helloworld.jar");
+ Node node = TuscanyRuntime.runComposite(null, f.toURI().toURL().toString());
+ // this delete should fail on Windows as the jar is locked, but the doesn't seem to happen in 'nix
+ boolean b = f.delete();
+ if (!b) {
+ Map<String, List<String>> scuris = node.getStartedCompositeURIs();
+ node.stopCompositeAndUninstallUnused(scuris.keySet().iterator().next(), scuris.get(scuris.keySet().iterator().next()).get(0));
+ Assert.assertTrue(f.delete());
+ }
+ }
+
+ private File copyFile(String fileName) throws IOException {
+ File f = new File(fileName);
+ File newFile = File.createTempFile(getClass().getName(), ".jar");
+ InputStream in = new FileInputStream(f);
+ OutputStream out = new FileOutputStream(newFile);
+ byte[] buf = new byte[1024];
+ int len;
+ while ((len = in.read(buf)) > 0) {
+ out.write(buf, 0, len);
+ }
+ in.close();
+ out.close();
+ return newFile;
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DeployerTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DeployerTestCase.java
new file mode 100644
index 0000000000..f32ff81625
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DeployerTestCase.java
@@ -0,0 +1,96 @@
+/*
+ * 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.runtime;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.deployment.Deployer;
+import org.apache.tuscany.sca.monitor.Monitor;
+import org.apache.tuscany.sca.monitor.ValidationException;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchDomainException;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class DeployerTestCase {
+
+ @Test
+ public void testInstalledContribution() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException, MalformedURLException {
+ TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
+ Node node = tuscanyRuntime.createNode("myDomain");
+
+ Deployer deployer = tuscanyRuntime.getDeployer();
+ Monitor monitor = deployer.createMonitor();
+ Contribution contribution = deployer.loadContribution(URI.create("foo"), new File("src/test/resources/sample-helloworld-nodeployable.jar").toURI().toURL(), monitor);
+ monitor.analyzeProblems();
+
+ node.installContribution(contribution, null);
+ List<String> ics = node.getInstalledContributionURIs();
+ Assert.assertEquals(1, ics.size());
+ Assert.assertEquals("foo", ics.get(0));
+ }
+
+ @Test
+ public void testAddDeploymentComposite() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException, MalformedURLException, XMLStreamException {
+ TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
+ Node node = tuscanyRuntime.createNode("myDomain");
+
+ node.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null);
+
+ Deployer deployer = tuscanyRuntime.getDeployer();
+ Monitor monitor = deployer.createMonitor();
+ Composite composite = deployer.loadXMLDocument(new File("src/test/resources/helloworld2.composite").toURI().toURL(), monitor);
+ monitor.analyzeProblems();
+ String cmpuri = node.addDeploymentComposite("foo", composite);
+ node.startComposite("foo", cmpuri);
+ Map<String, List<String>> dcs = node.getStartedCompositeURIs();
+ Assert.assertEquals(1, dcs.size());
+ Assert.assertEquals("helloworld2.composite", dcs.get("foo").get(0));
+ }
+
+ @Test
+ public void testAddDeploymentCompositeXML() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException, MalformedURLException, XMLStreamException, FileNotFoundException {
+ TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
+ Node node = tuscanyRuntime.createNode("myDomain");
+
+ node.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null);
+
+ String cmpuri = node.addDeploymentComposite("foo", new FileReader(new File("src/test/resources/helloworld2.composite")));
+ node.startComposite("foo", cmpuri);
+ Map<String, List<String>> dcs = node.getStartedCompositeURIs();
+ Assert.assertEquals(1, dcs.size());
+ Assert.assertEquals("helloworld2.composite", dcs.get("foo").get(0));
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DomainCompositeTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DomainCompositeTestCase.java
new file mode 100644
index 0000000000..a4fbf5fd42
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DomainCompositeTestCase.java
@@ -0,0 +1,71 @@
+/*
+ * 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.runtime;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.xml.Utils;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.impl.NodeImpl;
+import org.apache.tuscany.sca.monitor.ValidationException;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchDomainException;
+import org.oasisopen.sca.NoSuchServiceException;
+
+public class DomainCompositeTestCase {
+
+ @Test
+ public void localOnlyDomain() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("DomainCompositeTestCase");
+ testIt(node);
+ }
+
+ @Ignore("TUSCANY-3953")
+ @Test
+ public void distributedDomain() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ TuscanyRuntime runtime = TuscanyRuntime.newInstance();
+ try {
+ Node node = runtime.createNode("uri:DomainCompositeTestCase");
+ testIt(node);
+ } finally { runtime.stop(); }
+ }
+
+ private void testIt(Node node) throws ContributionReadException, ActivationException, ValidationException {
+ node.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null);
+ node.startComposite("helloworld", "helloworld.composite");
+
+ Composite dc = node.getDomainComposite();
+ Assert.assertEquals("DomainCompositeTestCase", dc.getName().getLocalPart());
+ Assert.assertEquals(1, dc.getIncludes().size());
+ Composite c = dc.getIncludes().get(0);
+ Assert.assertEquals("helloworld", c.getName().getLocalPart());
+
+// String s = node.getDomainLevelCompositeAsString();
+ System.out.println(Utils.modelToXML(node.getDomainComposite(), true, ((NodeImpl)node).getExtensionPointRegistry()));
+// Assert.assertTrue(s.contains(":helloworld\""));
+
+ node.stopComposite("helloworld", "helloworld.composite");
+ Assert.assertEquals(0, node.getDomainComposite().getIncludes().size());
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DynamicTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DynamicTestCase.java
new file mode 100644
index 0000000000..f05771e129
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/DynamicTestCase.java
@@ -0,0 +1,116 @@
+/*
+ * 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.runtime;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Component;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.implementation.java.IntrospectionException;
+import org.apache.tuscany.sca.implementation.java.JavaImplementation;
+import org.apache.tuscany.sca.implementation.java.JavaImplementationFactory;
+import org.apache.tuscany.sca.monitor.ValidationException;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchDomainException;
+import org.oasisopen.sca.NoSuchServiceException;
+
+/**
+ * Shows how to create and run composites dynamically
+ */
+public class DynamicTestCase {
+
+ @Test
+ public void testInstalledContribution() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException, MalformedURLException, ClassNotFoundException, IntrospectionException, IllegalArgumentException, InvocationTargetException,
+ IllegalAccessException {
+
+ // get the various factories that will be needed
+ TuscanyRuntime tuscanyRuntime = TuscanyRuntime.newInstance();
+ ExtensionPointRegistry extensionPoints = tuscanyRuntime.getExtensionPointRegistry();
+ FactoryExtensionPoint modelFactories = extensionPoints.getExtensionPoint(FactoryExtensionPoint.class);
+
+ // Create a contribution
+ ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
+ Contribution contribution = contributionFactory.createContribution();
+ contribution.setURI("testContribution");
+ ModelResolverExtensionPoint modelResolvers = extensionPoints.getExtensionPoint(ModelResolverExtensionPoint.class);
+ ModelResolver modelResolver = new ExtensibleModelResolver(contribution, modelResolvers, modelFactories);
+ contribution.setModelResolver(modelResolver);
+ contribution.setClassLoader(new URLClassLoader(new URL[] {new File("src/test/resources/sample-helloworld.jar").toURI().toURL()}));
+
+ // Create a composite
+ AssemblyFactory assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+ Composite composite = assemblyFactory.createComposite();
+ composite.setURI("testComposite");
+ composite.setName(new QName("testComposite"));
+
+ // create a component
+ Component component = assemblyFactory.createComponent();
+ component.setName("testComponent");
+ JavaImplementationFactory javaImplementationFactory = modelFactories.getFactory(JavaImplementationFactory.class);
+ JavaImplementation javaImplementation = javaImplementationFactory.createJavaImplementation(contribution.getClassLoader().loadClass("sample.HelloworldImpl"));
+ javaImplementation.setJavaClass(contribution.getClassLoader().loadClass("sample.HelloworldImpl"));
+ component.setImplementation(javaImplementation);
+
+ // add the component to the composite
+ composite.getComponents().add(component);
+
+ // add the composite to the contribution
+ contribution.addComposite(composite);
+
+ // Now run the composite with a Tuscany Node
+ Node node = tuscanyRuntime.createNode();
+ node.installContribution(contribution, null);
+ node.startComposite(contribution.getURI(), composite.getURI());
+
+ // test that the service has started and can be invoked
+ testService(node, contribution.getClassLoader());
+
+ node.stop();
+ tuscanyRuntime.stop();
+ }
+
+ private void testService(Node node, ClassLoader classLoader) throws ClassNotFoundException, NoSuchServiceException, NoSuchDomainException, IllegalArgumentException, InvocationTargetException, IllegalAccessException {
+ Class<?> interfaze = classLoader.loadClass("sample.Helloworld");
+ Object clientProxy = node.getService(interfaze, "testComponent/Helloworld");
+ Method m = interfaze.getMethods()[0]; // the helloworld interface just has a single method "sayHello"
+ Object response = m.invoke(clientProxy, new Object[] {"Ariana"});
+ Assert.assertEquals("Hello Ariana", response);
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/NodeXMLTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/NodeXMLTestCase.java
new file mode 100644
index 0000000000..c7041fa5b4
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/NodeXMLTestCase.java
@@ -0,0 +1,48 @@
+/*
+ * 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.runtime;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.monitor.ValidationException;
+import org.junit.Test;
+
+public class NodeXMLTestCase {
+
+ @Test
+ public void testHelloworldXML() throws ContributionReadException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNodeFromXML("src/test/resources/helloworldNode.xml");
+ Assert.assertEquals("helloworld", node.getDomainName());
+ List<String> cs = node.getInstalledContributionURIs();
+ Assert.assertEquals(1, cs.size());
+ Assert.assertEquals("sample-helloworld", cs.get(0));
+ Map<String, List<String>> startedComposites = node.getStartedCompositeURIs();
+ Assert.assertEquals(1, startedComposites.size());
+ Assert.assertEquals("helloworld.composite", startedComposites.get("sample-helloworld").get(0));
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/PerfTest.java b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/PerfTest.java
new file mode 100644
index 0000000000..97b3755f2e
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/PerfTest.java
@@ -0,0 +1,74 @@
+/*
+ * 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.runtime;
+
+import java.util.Properties;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.monitor.ValidationException;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchDomainException;
+import org.oasisopen.sca.NoSuchServiceException;
+
+import sample.Helloworld;
+
+public class PerfTest {
+
+ @Test
+ public void testStopStart() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ Properties config = new Properties();
+ config.setProperty(RuntimeProperties.QUIET_LOGGING, "true");
+ Node node = TuscanyRuntime.newInstance(config).createNode();
+ node.installContribution(null, "src/test/resources/sample-helloworld.jar", null, null);
+
+ validate(node);
+
+ int count = 3000;
+ long start = System.currentTimeMillis();
+ for (int i=0; i<count; i++) {
+ node.startComposite("sample-helloworld", "helloworld.composite");
+ node.stopComposite("sample-helloworld", "helloworld.composite");
+ }
+ long total = System.currentTimeMillis() - start;
+ System.out.println(count + " = " + total + " = " + total / (double)count);
+
+ // test it still works
+ validate(node);
+ }
+
+ private void validate(Node node) throws ActivationException, ValidationException, NoSuchServiceException, ContributionReadException {
+ node.startComposite("sample-helloworld", "helloworld.composite");
+
+ Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+
+ node.stopComposite("sample-helloworld", "helloworld.composite");
+ try {
+ node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.fail();
+ } catch (NoSuchServiceException e) {
+ // expected as there is no deployables
+ }
+ }
+
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TuscanyRuntimeTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TuscanyRuntimeTestCase.java
new file mode 100644
index 0000000000..27292bbc08
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TuscanyRuntimeTestCase.java
@@ -0,0 +1,190 @@
+/*
+ * 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.runtime;
+
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.monitor.ValidationException;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchDomainException;
+import org.oasisopen.sca.NoSuchServiceException;
+
+import sample.Helloworld;
+
+public class TuscanyRuntimeTestCase {
+
+ @Test
+ public void testInstallDeployable() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null);
+ node.startComposite("helloworld", "helloworld.composite");
+
+ Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+ }
+
+ @Test
+ public void testStopStart() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null);
+ node.startComposite("helloworld", "helloworld.composite");
+
+ Map<String, List<String>> ci = node.getStartedCompositeURIs();
+ Assert.assertEquals(1, ci.size());
+
+ Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+
+ node.stopComposite("helloworld", "helloworld.composite");
+ try {
+ node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.fail();
+ } catch (NoSuchServiceException e) {
+ // expected as there is no deployables
+ }
+
+ node.startComposite("helloworld", "helloworld.composite");
+ helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+ }
+
+ @Test
+ @Ignore("Depdends on itest/T3558 which isn't in the build?")
+ public void testInstallWithDependent() throws NoSuchServiceException, ContributionReadException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("store", "../../testing/itest/T3558/src/test/resources/sample-store.jar", null, null);
+ node.installContribution("store-client", "../../testing/itest/T3558/src/test/resources/sample-store-client.jar", null, null);
+ node.startComposite("store", "store.composite");
+ node.startComposite("store-client", "store-client.composite");
+
+ Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+ }
+
+ @Test
+ public void testInstallNoDeployable() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("helloworld", "src/test/resources/sample-helloworld-nodeployable.jar", null, null);
+
+ try {
+ node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.fail();
+ } catch (NoSuchServiceException e) {
+ // expected as there is no deployables
+ }
+
+ node.startComposite("helloworld", "helloworld.composite");
+ Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+ }
+
+ @Test
+ public void testGetInstalledContributions() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("foo", "src/test/resources/sample-helloworld-nodeployable.jar", null, null);
+ List<String> ics = node.getInstalledContributionURIs();
+ Assert.assertEquals(1, ics.size());
+ Assert.assertEquals("foo", ics.get(0));
+ }
+
+ @Test
+ public void testGetDeployedCompostes() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, MalformedURLException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("foo", "src/test/resources/sample-helloworld.jar", null, null);
+ List<String> dcs = node.startDeployables("foo");
+ Assert.assertEquals(1, dcs.size());
+ Assert.assertEquals("helloworld.composite", dcs.get(0));
+ }
+
+ @Test
+ public void testRemoveComposte() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, MalformedURLException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("foo", "src/test/resources/sample-helloworld.jar", null, null);
+ List<String> dcs = node.startDeployables("foo");
+ Assert.assertEquals(1, dcs.size());
+ Map<String, List<String>> dcsx = node.getStartedCompositeURIs();
+ Assert.assertEquals(1, dcsx.size());
+ node.stopComposite("foo", "helloworld.composite");
+ dcsx = node.getStartedCompositeURIs();
+ Assert.assertEquals(0, dcsx.size());
+ }
+
+ @Test
+ public void testInstallWithMetaData() throws ContributionReadException, ActivationException, ValidationException, NoSuchServiceException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ node.installContribution("helloworld", "src/test/resources/sample-helloworld-nodeployable.jar", "src/test/resources/sca-contribution-generated.xml", null);
+ node.startComposite("helloworld", "helloworld.composite");
+
+ Map<String, List<String>> dcs = node.getStartedCompositeURIs();
+ Assert.assertEquals(1, dcs.size());
+ Assert.assertEquals("helloworld.composite", dcs.get("helloworld").get(0));
+
+ Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+ }
+
+ @Test
+ public void testURI() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ Node node = TuscanyRuntime.newInstance().createNode("default");
+ String uri = node.installContribution("src/test/resources/sample-helloworld.jar");
+ Assert.assertEquals("sample-helloworld", uri);
+ }
+
+ @Test
+ public void testStaticCreate() {
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "src/test/resources/sample-helloworld.jar");
+ List<String> cs = node.getInstalledContributionURIs();
+ Assert.assertEquals(1, cs.size());
+ Map<String, List<String>> dcs = node.getStartedCompositeURIs();
+ Assert.assertEquals(1, dcs.size());
+ Assert.assertEquals("helloworld.composite", dcs.get("sample-helloworld").get(0));
+ }
+
+ @Test
+ public void testStaticCreateWithNullComposite() {
+ Node node = TuscanyRuntime.runComposite(null, "src/test/resources/sample-helloworld.jar");
+ List<String> cs = node.getInstalledContributionURIs();
+ Assert.assertEquals(1, cs.size());
+ Map<String, List<String>> dcs = node.getStartedCompositeURIs();
+ Assert.assertEquals(1, dcs.size());
+ Assert.assertEquals("helloworld.composite", dcs.get("sample-helloworld").get(0));
+ }
+ @Test
+ public void testRunComposite() throws NoSuchServiceException {
+ Node node = TuscanyRuntime.runComposite("helloworld.composite", "src/test/resources/sample-helloworld.jar");
+ Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+ }
+
+ @Test
+ public void testRunCompositeSharedRuntime() throws NoSuchServiceException {
+ Node node = TuscanyRuntime.runComposite(URI.create("default"), "helloworld.composite", "src/test/resources/sample-helloworld.jar");
+ Helloworld helloworldService = node.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+ }
+}
diff --git a/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TwoNodesTestCase.java b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TwoNodesTestCase.java
new file mode 100644
index 0000000000..9c5a702d78
--- /dev/null
+++ b/sca-java-2.x/tags/2.0.1-RC1/modules/domain-node/src/test/java/org/apache/tuscany/sca/runtime/TwoNodesTestCase.java
@@ -0,0 +1,52 @@
+/*
+ * 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.runtime;
+
+import junit.framework.Assert;
+
+import org.apache.tuscany.sca.Node;
+import org.apache.tuscany.sca.TuscanyRuntime;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.monitor.ValidationException;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.oasisopen.sca.NoSuchDomainException;
+import org.oasisopen.sca.NoSuchServiceException;
+
+import sample.Helloworld;
+
+@Ignore("TUSCANY-3953")
+public class TwoNodesTestCase {
+
+ @Test
+ public void testInstallDeployable() throws NoSuchServiceException, NoSuchDomainException, ContributionReadException, ActivationException, ValidationException {
+ TuscanyRuntime runtime = TuscanyRuntime.newInstance();
+ try {
+ Node node1 = runtime.createNode("uri:TwoNodesTestCase?multicast=off&bind=127.0.0.1:44331");
+ node1.installContribution("helloworld", "src/test/resources/sample-helloworld.jar", null, null);
+ node1.startComposite("helloworld", "helloworld.composite");
+
+ Node node2 = TuscanyRuntime.newInstance().createNode("uri:TwoNodesTestCase?multicast=off&bind=127.0.0.1:44332&wka=127.0.0.1:44331");
+
+ Helloworld helloworldService = node2.getService(Helloworld.class, "HelloworldComponent");
+ Assert.assertEquals("Hello petra", helloworldService.sayHello("petra"));
+ } finally { runtime.stop(); }
+ }
+
+}