add tuscany test runner back into the new test layout

git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@818023 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
slaws 2009-09-23 09:43:01 +00:00
parent 4485df4bb5
commit 992895003c
5 changed files with 496 additions and 0 deletions

View file

@ -0,0 +1,153 @@
<?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-sca</artifactId>
<version>2.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>tuscany-otests-asm-tests</artifactId>
<name>Apache Tuscany SCA Specification Tests</name>
<dependencies>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-node-impl</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-node-impl-osgi</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-java-runtime</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-ws-axis2</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-otests-asm-General</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-otests-asm-General_Java</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${artifactId}</finalName>
<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>
</dependencies>
<executions>
<execution>
<id>copy-files-from-svn</id>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<ant antfile="../build.xml">
<property name="from.dir" value="../sca-assembly/Test_Client/src/main/resources"/>
<property name="to.dir" value="src/main/resources"/>
<target name="copyResourceDir"/>
</ant>
<ant antfile="../build.xml">
<property name="from.dir" value="../sca-assembly/Test_Client/src/main/java"/>
<property name="to.dir" value="src/test/java"/>
<target name="copySourceDir"/>
</ant>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/tjava</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,19 @@
# 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.
ASM_10001=Duplicate intent {http://docs.oasis-open.org/ns/opencsa/scatests/200903}Fred found in domain

View file

@ -0,0 +1,32 @@
# 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.
# OASIS SCA Assembly test properties
# The implementation type to use for Assembly test suite
# org.oasis.sca.tests.assembly.lang=BPEL
org.oasis.sca.tests.assembly.lang=Java
# The class to use as the Runtime Bridge for the SCA runtime under test
# - use client.TuscanyRuntimeBridge for the OSGi runtime
# - use tuscany.TuscanyRuntimeBridge for the Java runtime
# org.oasis.sca.tests.assembly.runtime_bridge=client.TuscanyRuntimeBridge
org.oasis.sca.tests.assembly.runtime_bridge=org.apache.tuscany.sca.otest.TuscanyRuntimeBridge
# The location of the contributions for the test suite
# %1 represents the placement of the name of each contribution into the location URI
org.oasis.sca.tests.assembly.contribution.location=../sca-assembly/%1/target/%1.zip

View file

@ -0,0 +1,128 @@
/*
* 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.otest;
import org.apache.tuscany.sca.node.Node;
import org.apache.tuscany.sca.node.equinox.launcher.Contribution;
import org.apache.tuscany.sca.node.equinox.launcher.ContributionLocationHelper;
import org.apache.tuscany.sca.node.equinox.launcher.NodeLauncher;
import client.RuntimeBridge;
import client.TestConfiguration;
/**
* An implementation of the Runtime Bridge for the Apache Tuscany SCA runtime (version 2.x)
*
*/
public class TuscanyOSGiRuntimeBridge implements RuntimeBridge {
static final String CONTRIBUTION_LOCATION_PROPKEY = "OASIS_TESTENV_CONTRIBUTION_LOCATION";
protected NodeLauncher launcher;
protected Node node;
TestConfiguration testConfiguration = null;
public TuscanyOSGiRuntimeBridge() {
}
public TestConfiguration getTestConfiguration() {
return testConfiguration;
}
public void setTestConfiguration(TestConfiguration testConfiguration) {
this.testConfiguration = testConfiguration;
}
public boolean startContribution(String contributionLocation, String[] contributionNames) throws Exception {
try {
// Tuscany specific code which starts the contribution(s) holding the test
launcher = NodeLauncher.newInstance();
Contribution[] contributions = new Contribution[contributionNames.length];
String[] contributionURIs = getContributionURIs(contributionLocation);
for (int i = 0; i < contributions.length; i++) {
contributions[i] = new Contribution(contributionNames[i], contributionURIs[i]);
} // end for
node = launcher.createNode(testConfiguration.getComposite(), contributions);
System.out.println("SCA Node API ClassLoader: " + node.getClass().getClassLoader());
// Start the node
node.start();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
throw e;
} // end try
return true;
} // end method startContribution
/**
* Gets the location of the Contributions as URIs
* @param contributionLocation - a location pattern URI, which contains one or more "%1"
* substrings, which are substituted with the name of the contribution to get the URI of
* the contribution
* @return the contribution locations as an array of Strings
*/
protected String[] getContributionURIs(String contributionLocation) throws Exception {
String[] locations;
locations = testConfiguration.getContributionNames();
if (locations != null && contributionLocation != null) {
for (int i = 0; i < locations.length; i++) {
String aLocation = contributionLocation.replaceAll("%1", locations[i]);
locations[i] = aLocation;
} // end for
} else {
if (locations == null) {
// No contribution specified - throw an Exception
throw new Exception("Unable to start SCA runtime - no contribution supplied - error");
} else {
// No contribution location supplied - throw an Exception
throw new Exception("Unable to start SCA runtime - no contribution location supplied - error");
} // end if
} // end if
return locations;
} // end getContributionURI
public void stopContribution() {
if (node != null) {
node.stop();
node.destroy();
} // end if
if (launcher != null) {
launcher.destroy();
} // end if
} // end method stopContribution
public String getContributionLocation(Class<?> testClass) {
return ContributionLocationHelper.getContributionLocation(testConfiguration.getTestClass());
} // end method getContributionLocation
public boolean checkError(String testName, Throwable exception) {
// TODO Auto-generated method stub
return true;
}
} // end class TuscanyRuntimeBridge

View file

@ -0,0 +1,164 @@
/*
* 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.otest;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.tuscany.sca.node.Contribution;
import org.apache.tuscany.sca.node.ContributionLocationHelper;
import org.apache.tuscany.sca.node.Node;
import org.apache.tuscany.sca.node.NodeFactory;
import client.RuntimeBridge;
import client.TestConfiguration;
/**
* An implementation of the Runtime Bridge for the Apache Tuscany SCA runtime (version 2.x)
*
*/
public class TuscanyRuntimeBridge implements RuntimeBridge {
static final String CONTRIBUTION_LOCATION_PROPKEY = "OASIS_TESTENV_CONTRIBUTION_LOCATION";
protected NodeFactory launcher;
protected Node node;
protected Properties expectedErrorMessages;
TestConfiguration testConfiguration = null;
public TuscanyRuntimeBridge() {
// read test error mapping
expectedErrorMessages = new Properties();
try {
InputStream propertiesStream = this.getClass().getResourceAsStream("/oasis-sca-tests-errors.properties");
expectedErrorMessages.load(propertiesStream);
} catch (IOException e) {
System.out.println("Unable to read oasis-sca-tests-errors.properties file");
}
}
public TestConfiguration getTestConfiguration() {
return testConfiguration;
}
public void setTestConfiguration(TestConfiguration testConfiguration) {
this.testConfiguration = testConfiguration;
}
public boolean startContribution(String contributionLocation, String[] contributionNames) throws Exception {
try {
// Tuscany specific code which starts the contribution(s) holding the test
launcher = NodeFactory.newInstance();
Contribution[] contributions = new Contribution[contributionNames.length];
String[] contributionURIs = getContributionURIs(contributionLocation);
for (int i = 0; i < contributions.length; i++) {
contributions[i] = new Contribution(contributionNames[i], contributionURIs[i]);
} // end for
node = launcher.createNode(testConfiguration.getComposite(), contributions);
// Start the node
node.start();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
throw e;
} // end try
return true;
} // end method startContribution
/**
* Gets the location of the Contributions as URIs
* @param contributionLocation - a location pattern URI, which contains one or more "%1"
* substrings, which are substituted with the name of the contribution to get the URI of
* the contribution
* @return the contribution locations as an array of Strings
*/
protected String[] getContributionURIs(String contributionLocation) throws Exception {
String[] locations;
locations = testConfiguration.getContributionNames();
if (locations != null && contributionLocation != null) {
for (int i = 0; i < locations.length; i++) {
String aLocation = contributionLocation.replaceAll("%1", locations[i]);
locations[i] = aLocation;
} // end for
} else {
if (locations == null) {
// No contribution specified - throw an Exception
throw new Exception("Unable to start SCA runtime - no contribution supplied - error");
} else {
// No contribution location supplied - throw an Exception
throw new Exception("Unable to start SCA runtime - no contribution location supplied - error");
} // end if
} // end if
return locations;
} // end getContributionURI
public void stopContribution() {
if (node != null) {
node.stop();
node.destroy();
} // end if
if (launcher != null) {
launcher.destroy();
} // end if
} // end method stopContribution
public String getContributionLocation(Class<?> testClass) {
return ContributionLocationHelper.getContributionLocation(testConfiguration.getTestClass());
} // end method getContributionLocation
public boolean checkError(String testName, Throwable ex){
String expectedMessage = expectedErrorMessages.getProperty(testName);
String receivedMessage = ex.getMessage();
if (expectedMessage == null){
System.out.println("Null expected error message for test " + testName);
System.out.println("Please add message to oasis-sca-tests-errors.properties");
return false;
}
if (receivedMessage == null){
System.out.println("Null received error message for test " + testName);
return false;
}
int messageStart = receivedMessage.indexOf("] - ");
if (messageStart < 0){
System.out.println("Message separator not found for test " + testName);
}
receivedMessage = receivedMessage.substring(messageStart + 4);
if (receivedMessage.startsWith(expectedMessage)){
return true;
} else {
return false;
}
}
} // end class TuscanyRuntimeBridge