tuscany-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Laws <simonsl...@googlemail.com>
Subject Re: svn commit: r950041 - in /tuscany/otest/newlayout/tuscany-jms-test-runner: ./ src/ src/main/ src/main/resources/ src/test/ src/test/java/ src/test/resources/ src/test/tjava/ src/test/tjava/org/ src/test/tjava/org/apache/ src/test/tjava/org/apache
Date Tue, 01 Jun 2010 14:57:55 GMT
On Tue, Jun 1, 2010 at 1:41 PM,  <antelder@apache.org> 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

Mime
View raw message