Change binding-ws-calculator/build.xml to look similar to the way our build files used to look. Relies on launcher.jar to run the sample. Add itest/sample to run the samples automatically. Error handling not working yet. This also relies on distribution/all generating a dir distro to test against. Currently this runs as part of the main build but I see Raymond has now separated distributions from features so we could have this be a distribution test stage.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@740702 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f6c4a20b68
commit
8ee4667047
10 changed files with 203 additions and 126 deletions
|
@ -60,6 +60,26 @@
|
|||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>distribution-package</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>src/main/assembly/dir.xml</descriptor>
|
||||
</descriptors>
|
||||
<tarLongFileMode>gnu</tarLongFileMode>
|
||||
<finalName>apache-tuscany-sca-all-2.0-SNAPSHOT</finalName>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
-->
|
||||
<module>recursive-multi-level</module>
|
||||
<module>references</module>
|
||||
<module>samples</module>
|
||||
<module>scopes</module>
|
||||
<module>services</module>
|
||||
<module>wires</module>
|
||||
|
|
38
java/sca/itest/samples/build.xml
Normal file
38
java/sca/itest/samples/build.xml
Normal file
|
@ -0,0 +1,38 @@
|
|||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<project name="itest-samples" default="run">
|
||||
|
||||
<echo>${JAVA_HOME}</echo>
|
||||
<!--
|
||||
compile and run each sample as though the user were running
|
||||
samples from the binary distribution. Here we use ant targets
|
||||
in the first instance but for some tests we may want to run
|
||||
jars directly and fire up webapp containers and deploy wars. In other cases
|
||||
we may need to run two samples together to provide reference and
|
||||
service sides of the sample.
|
||||
-->
|
||||
<target name="run">
|
||||
<ant antfile="../../samples/implementation-java-calculator/build.xml"
|
||||
dir="../../samples/implementation-java-calculator"/>
|
||||
|
||||
<ant antfile="../../samples/binding-ws-calculator/build.xml"
|
||||
dir="../../samples/binding-ws-calculator"/>
|
||||
</target>
|
||||
|
||||
</project>
|
80
java/sca/itest/samples/pom.xml
Normal file
80
java/sca/itest/samples/pom.xml
Normal file
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-itest</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>itest-samples</artifactId>
|
||||
<name>Apache Tuscany SCA Samples Integration Tests</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-distribution-all</artifactId>
|
||||
<type>pom</type>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.3</version>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>ant</groupId>
|
||||
<artifactId>ant-trax</artifactId>
|
||||
<version>1.6.5</version>
|
||||
</dependency>
|
||||
<!-- this JDk dependency is a workaround for Maven bug - http://jira.codehaus.org/browse/MNG-1323 -->
|
||||
<dependency>
|
||||
<groupId>sun.jdk</groupId>
|
||||
<artifactId>tools</artifactId>
|
||||
<version>1.6</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${java.home}/../lib/tools.jar</systemPath>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<executions>
|
||||
<execution>
|
||||
<id>run-samples</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<ant antfile="./build.xml" target="run"/>
|
||||
</tasks>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -17,17 +17,52 @@
|
|||
* under the License.
|
||||
-->
|
||||
<project name="binding-ws-calculator" default="run">
|
||||
<import file="../build-common.xml"/>
|
||||
|
||||
<property name="sample.name" value="${ant.project.name}"/>
|
||||
<property name="sample.root" value="."/>
|
||||
<property name="sample.jar" value="${sample.root}/target/sample-${sample.name}.jar" />
|
||||
<property name="sample.composite" value="Calculator.composite"/>
|
||||
<property name="jar.name" value="sample-binding-ws-calculator.jar" />
|
||||
<property name="main.class" value="sample.SampleClientImpl" />
|
||||
|
||||
<target name="init">
|
||||
<delete quiet="true" includeemptydirs="true">
|
||||
<fileset dir="target"/>
|
||||
</delete>
|
||||
<mkdir dir="target/classes"/>
|
||||
</target>
|
||||
|
||||
<target name="compile" depends="common-jar-compile"/>
|
||||
|
||||
<target name="run" depends="common-run-jse"/>
|
||||
|
||||
<target name="clean" depends="common-clean"/>
|
||||
<target name="compile" depends="init">
|
||||
<javac srcdir="src/main/java"
|
||||
destdir="target/classes"
|
||||
debug="on"
|
||||
source="1.5"
|
||||
target="1.5">
|
||||
<classpath>
|
||||
<pathelement location="../../modules/tuscany-sca-api-2.0-SNAPSHOT.jar"/>
|
||||
<pathelement location="../../modules/tuscany-node-api-2.0-SNAPSHOT.jar"/>
|
||||
<pathelement location="../../modules/sca-api/target/tuscany-sca-api-2.0-SNAPSHOT.jar"/>
|
||||
<pathelement location="../../modules/node-api/target/tuscany-node-api-2.0-SNAPSHOT.jar"/>
|
||||
</classpath>
|
||||
</javac>
|
||||
<copy todir="target/classes">
|
||||
<fileset dir="src/main/resources"/>
|
||||
</copy>
|
||||
<jar destfile="target/${jar.name}" basedir="target/classes">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="${main.class}" />
|
||||
</manifest>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
<target name="run" depends="compile">
|
||||
<java classname="org.apache.tuscany.sca.launcher.LauncherMain"
|
||||
fork="true"
|
||||
inputstring="q">
|
||||
<jvmarg value="-Djava.util.logging.config.file=${sample.root}/../../logging.properties"/>
|
||||
<classpath>
|
||||
<pathelement location="../../distribution/all/target/apache-tuscany-sca-all-2.0-SNAPSHOT-dir.dir/tuscany-sca-2.0-SNAPSHOT/bin/launcher.jar"/>
|
||||
<pathelement location="../../bin/launcher.jar"/>
|
||||
</classpath>
|
||||
<arg value="unmanaged"/>
|
||||
<arg value="target/${jar.name}"/>
|
||||
</java>
|
||||
</target>
|
||||
|
||||
</project>
|
||||
|
|
|
@ -57,6 +57,13 @@
|
|||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-distribution-ejava</artifactId>
|
||||
<type>pom</type>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
|
@ -70,7 +77,6 @@
|
|||
<finalName>${artifactId}</finalName>
|
||||
|
||||
<plugins>
|
||||
<!-- temporarily skip tests as binding.ws doesn't work yet -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
/*
|
||||
* 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 calculator;
|
||||
|
||||
import org.oasisopen.sca.annotation.EagerInit;
|
||||
import org.oasisopen.sca.annotation.Init;
|
||||
import org.oasisopen.sca.annotation.Reference;
|
||||
import org.oasisopen.sca.annotation.Scope;
|
||||
|
||||
/**
|
||||
* This client program shows how to create an SCA runtime, start it,
|
||||
* and locate and invoke a SCA component
|
||||
*/
|
||||
@Scope("COMPOSITE") @EagerInit
|
||||
public class CalculatorClient {
|
||||
|
||||
private CalculatorService calculatorService;
|
||||
|
||||
@Reference
|
||||
public void setCalculatorService(CalculatorService calculatorService) {
|
||||
this.calculatorService = calculatorService;
|
||||
}
|
||||
|
||||
@Init
|
||||
public void calculate() {
|
||||
// The calls cannot be done in the same thread as the services are starting
|
||||
// Fork a new thread
|
||||
Thread thread = new Thread() {
|
||||
public void run() {
|
||||
// Calculate
|
||||
try {
|
||||
Thread.sleep(3000);
|
||||
System.out.println("SCA API ClassLoader: " + print(Reference.class.getClassLoader()));
|
||||
System.out.println("3 + 2=" + calculatorService.add(3, 2));
|
||||
System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
|
||||
System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
|
||||
System.out.println("3 / 2=" + calculatorService.divide(3, 2));
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
};
|
||||
thread.start();
|
||||
}
|
||||
|
||||
private static String print(ClassLoader cl) {
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (; cl != null;) {
|
||||
buf.append(cl.toString());
|
||||
buf.append(' ');
|
||||
cl = cl.getParent();
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -22,6 +22,11 @@
|
|||
xmlns:sample="http://sample"
|
||||
name="Calculator">
|
||||
|
||||
<component name="SampleClient">
|
||||
<implementation.java class="calculator.CalculatorClientImpl"/>
|
||||
<reference name="calculatorService" target="CalculatorServiceComponent" />
|
||||
</component>
|
||||
|
||||
<component name="CalculatorServiceComponent">
|
||||
<implementation.java class="calculator.CalculatorServiceImpl"/>
|
||||
<reference name="addService" >
|
||||
|
@ -51,9 +56,4 @@
|
|||
<implementation.java class="calculator.DivideServiceImpl"/>
|
||||
</component>
|
||||
|
||||
<component name="CalculatorClient">
|
||||
<implementation.java class="calculator.CalculatorClient"/>
|
||||
<reference name="calculatorService" target="CalculatorServiceComponent" />
|
||||
</component>
|
||||
|
||||
</composite>
|
||||
|
|
|
@ -27,48 +27,15 @@ import org.junit.Assert;
|
|||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import sample.SampleClientImpl;
|
||||
|
||||
/**
|
||||
* This shows how to test the Calculator composition.
|
||||
* Test the Calculator composition.
|
||||
*/
|
||||
public class CalculatorTestCase {
|
||||
|
||||
private static NodeLauncher launcher;
|
||||
private static Node node;
|
||||
private static String status = "Sample Success";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
setUpBeforeClass();
|
||||
tearDownAfterClass();
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void setUpBeforeClass() throws Exception {
|
||||
launcher = NodeLauncher.newInstance();
|
||||
String location = ContributionLocationHelper.getContributionLocation(CalculatorClient.class);
|
||||
node = launcher.createNode("Calculator.composite", new Contribution("test", location));
|
||||
|
||||
try {
|
||||
node.start();
|
||||
} catch (Exception ex) {
|
||||
status = ex.toString();
|
||||
System.out.println(status);
|
||||
}
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void tearDownAfterClass() throws Exception {
|
||||
Thread.sleep(30000);
|
||||
if (node != null) {
|
||||
node.stop();
|
||||
node.destroy();
|
||||
}
|
||||
if (launcher != null) {
|
||||
launcher.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSample() throws Exception {
|
||||
Assert.assertEquals("Sample Success", status);
|
||||
SampleClientImpl.main(null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,9 @@
|
|||
<import file="${distro.root}/features/build-path.xml"/>
|
||||
|
||||
<target name="common-init">
|
||||
<delete quiet="true" includeemptydirs="true">
|
||||
<fileset dir="target"/>
|
||||
</delete>
|
||||
<mkdir dir="${sample.root}/target/classes"/>
|
||||
</target>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue