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:
slaws 2009-02-04 11:51:39 +00:00
parent f6c4a20b68
commit 8ee4667047
10 changed files with 203 additions and 126 deletions

View file

@ -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>

View file

@ -69,6 +69,7 @@
-->
<module>recursive-multi-level</module>
<module>references</module>
<module>samples</module>
<module>scopes</module>
<module>services</module>
<module>wires</module>

View 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>

View 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>

View file

@ -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>

View file

@ -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>

View file

@ -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();
}
}

View file

@ -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>

View file

@ -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);
}
}

View file

@ -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>