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. Simon -- Apache Tuscany committer: tuscany.apache.org Co-author of a book about Tuscany and SCA: tuscanyinaction.com
