On Tue, Jun 1, 2010 at 3:57 PM, Simon Laws <[email protected]> wrote: > On Tue, Jun 1, 2010 at 1:41 PM, <[email protected]> wrote: >> Author: antelder >> Date: Tue Jun 1 12:41:18 2010 >> New Revision: 950041 >> >> URL: http://svn.apache.org/viewvc?rev=950041&view=rev >> Log: >> Add testrunner for JMS testsuite >> >> Added: >> tuscany/otest/newlayout/tuscany-jms-test-runner/ >> tuscany/otest/newlayout/tuscany-jms-test-runner/pom.xml >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/main/ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/main/resources/ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/java/ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/ >> >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/oasis-sca-tests.properties >> >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/tuscany-oasis-sca-tests-errors.properties >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/ >> >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/ >> >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/ >> >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/ >> >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyOSGiRuntimeBridge.java >> >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java >> >> Added: tuscany/otest/newlayout/tuscany-jms-test-runner/pom.xml >> URL: >> http://svn.apache.org/viewvc/tuscany/otest/newlayout/tuscany-jms-test-runner/pom.xml?rev=950041&view=auto >> ============================================================================== >> --- tuscany/otest/newlayout/tuscany-jms-test-runner/pom.xml (added) >> +++ tuscany/otest/newlayout/tuscany-jms-test-runner/pom.xml Tue Jun 1 >> 12:41:18 2010 >> @@ -0,0 +1,195 @@ >> +<?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-sca-jms-tests</artifactId> >> + <name>Apache Tuscany SCA Specification Tests for JMS Binding</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-launcher-equinox</artifactId> >> + <version>2.0-SNAPSHOT</version> >> + </dependency> >> + >> + <dependency> >> + <groupId>org.apache.tuscany.sca</groupId> >> + <artifactId>tuscany-deployment</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-runtime-axis2</artifactId> >> + <version>2.0-SNAPSHOT</version> >> + </dependency> >> + >> + <dependency> >> + <groupId>org.apache.tuscany.sca</groupId> >> + <artifactId>tuscany-binding-jms-runtime</artifactId> >> + <version>2.0-SNAPSHOT</version> >> + </dependency> >> + <dependency> >> + <groupId>org.apache.activemq</groupId> >> + <artifactId>activemq-all</artifactId> >> + <version>5.2.0</version> >> + </dependency> >> + >> + <dependency> >> + <groupId>org.apache.tuscany.sca</groupId> >> + <artifactId>tuscany-host-jetty</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-jms/Test_Client_BJM/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-jms/Test_Client_BJM/src/main/java"/> >> + <property name="to.dir" >> value="src/test/java"/> >> + <target name="copySourceDir"/> >> + </ant> >> + <ant antfile="../build.xml"> >> + <property name="from.dir" >> value="../sca-assembly/Test_Client/src/main/java/testClient"/> >> + <property name="to.dir" >> value="src/test/java/testClient"/> >> + <target name="copySourceDir"/> >> + </ant> >> + <ant antfile="../build.xml"> >> + <property name="from.file" >> value="../sca-assembly/Test_Client/src/main/java/client/BaseJAXWSTestRunner.java"/> >> + <property name="to.file" >> value="src/test/java/client/BaseJAXWSTestRunner.java"/> >> + <target name="copyFile"/> >> + </ant> >> + <ant antfile="../build.xml"> >> + <property name="from.file" >> value="../sca-assembly/Test_Client/src/main/java/client/RuntimeBridge.java"/> >> + <property name="to.file" >> value="src/test/java/client/RuntimeBridge.java"/> >> + <target name="copyFile"/> >> + </ant> >> + <ant antfile="../build.xml"> >> + <property name="from.file" >> value="../sca-assembly/Test_Client/src/main/java/client/TestConfiguration.java"/> >> + <property name="to.file" >> value="src/test/java/client/TestConfiguration.java"/> >> + <target name="copyFile"/> >> + </ant> >> + <ant antfile="../build.xml"> >> + <property name="from.file" >> value="../sca-assembly/Test_Client/src/main/java/client/TuscanyRuntimeBridge.java"/> >> + <property name="to.file" >> value="src/test/java/client/TuscanyRuntimeBridge.java"/> >> + <target name="copyFile"/> >> + </ant> >> + <ant antfile="../build.xml"> >> + <property name="from.file" >> value="../sca-assembly/Test_Client/src/main/resources/TestClient.wsdl"/> >> + <property name="to.file" >> value="src/main/resources/TestClient.wsdl"/> >> + <target name="copyFile"/> >> + </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> >> >> Added: >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/oasis-sca-tests.properties >> URL: >> http://svn.apache.org/viewvc/tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/oasis-sca-tests.properties?rev=950041&view=auto >> ============================================================================== >> --- >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/oasis-sca-tests.properties >> (added) >> +++ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/oasis-sca-tests.properties >> Tue Jun 1 12:41:18 2010 >> @@ -0,0 +1,30 @@ >> +# 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 >> +#org.oasis.sca.tests.assembly.runtime_bridge=org.apache.tuscany.sca.otest.TuscanyOSGiRuntimeBridge >> +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-jms/%1/target/%1.zip >> + >> >> Added: >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/tuscany-oasis-sca-tests-errors.properties >> URL: >> http://svn.apache.org/viewvc/tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/tuscany-oasis-sca-tests-errors.properties?rev=950041&view=auto >> ============================================================================== >> --- >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/tuscany-oasis-sca-tests-errors.properties >> (added) >> +++ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/resources/tuscany-oasis-sca-tests-errors.properties >> Tue Jun 1 12:41:18 2010 >> @@ -0,0 +1,17 @@ >> +# 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. >> + >> >> Added: >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyOSGiRuntimeBridge.java >> URL: >> http://svn.apache.org/viewvc/tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyOSGiRuntimeBridge.java?rev=950041&view=auto >> ============================================================================== >> --- >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyOSGiRuntimeBridge.java >> (added) >> +++ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyOSGiRuntimeBridge.java >> Tue Jun 1 12:41:18 2010 >> @@ -0,0 +1,150 @@ >> +/* >> + * 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 static org.junit.Assert.assertEquals; >> +import static org.junit.Assert.fail; >> + >> +import java.io.IOException; >> +import java.io.InputStream; >> +import java.util.Properties; >> + >> +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; >> + protected Properties expectedErrorMessages; >> + >> + public TuscanyOSGiRuntimeBridge() { >> + // read test error mapping >> + expectedErrorMessages = new Properties(); >> + try { >> + InputStream propertiesStream = >> this.getClass().getResourceAsStream("/tuscany-oasis-sca-tests-errors.properties"); >> + expectedErrorMessages.load(propertiesStream); >> + } catch (IOException e) { >> + System.out.println("Unable to read >> oasis-sca-tests-errors.properties file"); >> + } >> + } >> + >> + public boolean startContribution(String compositeName, 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,contributionNames); >> + for (int i = 0; i < contributions.length; i++) { >> + contributions[i] = new Contribution(contributionNames[i], >> contributionURIs[i]); >> + } // end for >> + >> + node = launcher.createNode(compositeName, 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, >> String[] contributionNames) throws Exception { >> + String[] locations = new String[contributionNames.length]; >> + >> + if (locations != null && contributionLocation != null) { >> + >> + for (int i = 0; i < locations.length; i++) { >> + String aLocation = contributionLocation.replaceAll("%1", >> contributionNames[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(); >> + } // end if >> + if (launcher != null) { >> + launcher.destroy(); >> + } // end if >> + } // end method stopContribution >> + >> + >> + public void checkError(String testName, Throwable ex) throws Throwable { >> + String expectedMessage = >> expectedErrorMessages.getProperty(testName); >> + String receivedMessage = ex.getMessage(); >> + >> + if (expectedMessage == null){ >> + fail("Null expected error message for test " + testName + >> + "Please add message to oasis-sca-tests-errors.properties"); >> + } >> + >> + if (receivedMessage == null){ >> + fail("Null received error message for test " + testName); >> + } >> + >> + int messageStart = receivedMessage.indexOf("] - "); >> + >> + if (messageStart < 0){ >> + fail("Message separator not found for test " + testName); >> + } >> + >> + receivedMessage = receivedMessage.substring(messageStart + 4); >> + >> + assertEquals( expectedMessage, receivedMessage ); >> + >> + return; >> + } >> + >> +} // end class TuscanyRuntimeBridge >> >> Added: >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java >> URL: >> http://svn.apache.org/viewvc/tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java?rev=950041&view=auto >> ============================================================================== >> --- >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java >> (added) >> +++ >> tuscany/otest/newlayout/tuscany-jms-test-runner/src/test/tjava/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java >> Tue Jun 1 12:41:18 2010 >> @@ -0,0 +1,217 @@ >> +/* >> + * 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 static org.junit.Assert.assertEquals; >> +import static org.junit.Assert.fail; >> + >> +import java.io.BufferedWriter; >> +import java.io.FileWriter; >> +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.Node; >> +import org.apache.tuscany.sca.node.NodeFactory; >> + >> +import testClient.TestException_Exception; >> +import client.RuntimeBridge; >> + >> +/** >> + * 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; >> + >> + public TuscanyRuntimeBridge() { >> + // read test error mapping >> + expectedErrorMessages = new Properties(); >> + try { >> + InputStream propertiesStream = >> this.getClass().getResourceAsStream("/tuscany-oasis-sca-tests-errors.properties"); >> + expectedErrorMessages.load(propertiesStream); >> + } catch (IOException e) { >> + System.out.println("Unable to read >> oasis-sca-tests-errors.properties file"); >> + } >> + } >> + >> + public boolean startContribution(String compositeName, 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, contributionNames); >> + for (int i = 0; i < contributions.length; i++) { >> + contributions[i] = new Contribution(contributionNames[i], >> contributionURIs[i]); >> + } // end for >> + >> + node = launcher.createNode(compositeName, contributions); >> + // Start the node >> + node.start(); >> + >> + // For debugging >> + // print out the composites that have been read in success cases >> + // System.out.println(((NodeImpl)node).dumpDomainComposite()); >> + } 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, >> String[] contributionNames) throws Exception { >> + String[] locations = new String[contributionNames.length]; >> + >> + if (locations != null && contributionLocation != null) { >> + >> + for (int i = 0; i < locations.length; i++) { >> + String aLocation = contributionLocation.replaceAll("%1", >> contributionNames[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(); >> + } // end if >> + if (launcher != null) { >> + launcher.destroy(); >> + } // end if >> + } // end method stopContribution >> + >> + public void checkError(String testName, Throwable ex) throws Throwable { >> + >> + String expectedMessage = >> expectedErrorMessages.getProperty(testName); >> + String receivedMessage = getErrorMessage(ex);//ex.getMessage(); >> + >> + if (expectedMessage == null){ >> + writeMissingMessage(testName, ex); >> + fail("Null expected error message for test " + testName + >> + "Please add message to oasis-sca-tests-errors.properties"); >> + } // end if >> + >> + if (receivedMessage == null){ >> + ex.printStackTrace(); >> + fail("Null received error message for test " + testName); >> + } // end if >> + >> + if (expectedMessage.startsWith("*")) { >> + // allow using * to ignore a message comparison >> + return; >> + } >> + >> + // Deal with the case where the message has variable parts within it >> + // marked with the characters ***. Here we tokenize the expected >> string >> + // and make sure all the individual parts are present in the >> results string >> + String expectedMessageParts[] = expectedMessage.split("\\*\\*\\*"); >> + >> + if (expectedMessageParts.length > 1){ >> + int foundParts = 0; >> + for(int i = 0; i < expectedMessageParts.length; i++){ >> + if (receivedMessage.indexOf(expectedMessageParts[i]) > -1 ){ >> + foundParts++; >> + } >> + } >> + >> + if (foundParts == expectedMessageParts.length){ >> + return; >> + } >> + } >> + >> + >> + // Deal with the case where the end of the message is variable (eg >> contains absolute filenames) >> + // and where the only relevant part is the start of the message - >> in this case the expected >> + // message only contains the stem section which is unchanging... >> + if( receivedMessage.length() > expectedMessage.length() ) { >> + // Truncate the received message to the length of the expected >> message >> + receivedMessage = receivedMessage.substring(0, >> expectedMessage.length() ); >> + } // end if >> + >> + if (!expectedMessage.equals(receivedMessage)) { >> + writeIncorrectMessage(testName, expectedMessage, >> receivedMessage); >> + } >> + >> + assertEquals( expectedMessage, receivedMessage ); >> + >> + return; >> + >> + } >> + >> + protected void writeMissingMessage(String testName, Throwable ex) { >> + try { >> + BufferedWriter out = new BufferedWriter(new >> FileWriter("target/OTestMissingMsgs.txt", true)); >> + out.write(testName + "=*"); >> + out.newLine(); >> + out.close(); >> + } catch (IOException e) { >> + } >> + } >> + >> + protected void writeIncorrectMessage(String testName, String expected, >> String received) { >> + try { >> + BufferedWriter out = new BufferedWriter(new >> FileWriter("target/OTestIncorrectMsgs.txt", true)); >> + out.write(testName); out.newLine(); >> + out.write(" " + expected); out.newLine(); >> + out.write(" " + received); out.newLine(); >> + out.close(); >> + } catch (IOException e) { >> + } >> + } >> + >> + protected String getErrorMessage(Throwable ex) { >> + String errorMessage = null; >> + >> + if (ex instanceof TestException_Exception) { >> + TestException_Exception te = (TestException_Exception) ex; >> + errorMessage = te.getFaultInfo().getMessage(); >> + } else { >> + errorMessage = ex.getMessage(); >> + } >> + >> + return errorMessage; >> + } >> +} // end class TuscanyRuntimeBridge >> >> >> > > Hi Ant > > I want the WS version of this. Are you about to commit it or can I get > on with it? Don't want to repeat stuff you've already done. >
I've not done the WS one yet, i can do if you can wait a little otherwise np if you want to start on it yourself. ...ant
