Author: antelder
Date: Tue Jun  8 07:21:43 2010
New Revision: 952557

URL: http://svn.apache.org/viewvc?rev=952557&view=rev
Log:
Start of the ws binding oasis testsuite for the trunk build

Added:
    tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/   (with props)
    tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/pom.xml   (with 
props)
    tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/
    tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/
    tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/
    tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/
    
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/
    
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/
    
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/
    
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/otest/
    
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java
   (with props)
    tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/
    
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/oasis-sca-tests.properties
   (with props)
    
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/tuscany-oasis-sca-tests-errors.properties
   (with props)

Propchange: tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Jun  8 07:21:43 2010
@@ -0,0 +1,20 @@
+target
+work
+dojo
+*.iws
+*.ipr
+*.iml
+derby.log
+maven.log
+maven-eclipse.xml
+build.xml
+build-dependency.xml
+velocity.log*
+junit*.properties
+surefire*.properties
+.project
+.classpath
+.settings
+.deployables
+.wtpmodules
+.externalToolBuilders

Added: tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/pom.xml?rev=952557&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/pom.xml (added)
+++ tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/pom.xml Tue Jun  8 
07:21:43 2010
@@ -0,0 +1,120 @@
+<?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-compliance-tests</artifactId>
+        <version>2.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <artifactId>tuscany-compliance-test-binding-ws</artifactId>
+    <name>Apache Tuscany SCA Specification Compliance Tests Binding WS</name>
+
+    <dependencies>
+
+        <dependency>
+            <!-- This is only needed to get the module working in Eclipse 
which doesn't pick it up from the dependency plugin unpack -->
+            <!-- The dependency plugin unpack is needed as presently the 
surefire plugin wont run tests in a dependency jar -->
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>oasis-binding-ws-test-runner</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca.shades</groupId>
+            <artifactId>tuscany-base</artifactId>
+            <version>2.0-SNAPSHOT</version>
+        </dependency>
+
+         <!-- This is need when running with Sun JDK which gets an unsupported 
operation exception creating an XMLStreamReader from a DOMSource
+             when Tuscany is writing a property value  -->
+         <dependency>
+            <groupId>org.codehaus.woodstox</groupId>
+            <artifactId>wstx-asl</artifactId>
+            <version>3.2.4</version>
+            <scope>runtime</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>stax</groupId>
+                    <artifactId>stax-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </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-surefire-plugin</artifactId>
+         <configuration>
+           <excludes>
+              <!-- exclude>**/POJO_8011_TestCase.java</exclude -->
+           </excludes>
+         </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>unpack</id>
+            <phase>test-compile</phase>
+            <goals>
+              <goal>unpack</goal>
+            </goals>
+            <configuration>
+               <artifactItems>
+                 <artifactItem>
+                   <groupId>org.apache.tuscany.sca</groupId>
+                   <artifactId>oasis-binding-ws-contributions</artifactId>
+                   <version>1.0-SNAPSHOT</version>
+                   <type>zip</type>
+                   
<outputDirectory>${project.build.directory}/oasis-contributions</outputDirectory>
+                 </artifactItem>
+                 <artifactItem>
+                   <groupId>org.apache.tuscany.sca</groupId>
+                   <artifactId>oasis-binding-ws-test-runner</artifactId>
+                   <version>1.0-SNAPSHOT</version>
+                   <type>jar</type>
+                   
<excludes>commons-logging.properties,oasis-sca-tests.properties</excludes>
+                   
<outputDirectory>${project.build.directory}/test-classes</outputDirectory>
+                 </artifactItem>
+               </artifactItems>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+  </build>
+</project>

Propchange: tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java?rev=952557&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java
 (added)
+++ 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java
 Tue Jun  8 07:21:43 2010
@@ -0,0 +1,238 @@
+/*
+ * 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.File;
+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.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("/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 TestConfiguration getTestConfiguration() {
+        return testConfiguration;
+    }
+
+    public void setTestConfiguration(TestConfiguration testConfiguration) {
+        this.testConfiguration = testConfiguration;
+    }
+
+       public boolean startContribution(String compositeName,
+                       String contributionLocation, String[] contributionNames)
+                       throws Exception {
+               //TODO:
+               return startContribution(contributionLocation, 
contributionNames);
+       }
+       
+    public boolean startContribution(String contributionLocation, String[] 
contributionNames) throws Exception {
+        try {
+            // Tuscany specific code which starts the contribution(s) holding 
the test
+            Properties ps = new Properties();
+            ps.setProperty("defaultScheme", "vm");
+            
ps.setProperty("org.apache.tuscany.sca.binding.ws.jaxws.ri.JAXWSBindingProviderFactory.defaultPort",
 "8080");
+            launcher = NodeFactory.newInstance(ps);
+
+            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();
+            
+            // 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) 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]);
+                // Looks like bugs in the oasis code that sometimes still uses 
jars for some
+                if (aLocation.endsWith("_POJO.zip") && 
!aLocation.endsWith("ASM_8005_Java-1.0.zip")) {
+                    aLocation = aLocation.substring(0, aLocation.length()-3) + 
"jar";                  
+                }
+                if (!(new File(aLocation)).exists()) {
+                       aLocation = aLocation.replace(".zip", ".jar");
+                }
+                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 String getContributionLocation(Class<?> testClass) {
+        return 
ContributionLocationHelper.getContributionLocation(testConfiguration.getTestClass());
+    } // end method getContributionLocation
+    
+    public void checkError(String testName, Throwable ex) throws Throwable { 
+              
+        String expectedMessage = expectedErrorMessages.getProperty(testName);
+        String receivedMessage = 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 epected 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) {
+        } 
+    }
+
+} // end class TuscanyRuntimeBridge

Propchange: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/java/org/apache/tuscany/sca/otest/TuscanyRuntimeBridge.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/oasis-sca-tests.properties
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/oasis-sca-tests.properties?rev=952557&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/oasis-sca-tests.properties
 (added)
+++ 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/oasis-sca-tests.properties
 Tue Jun  8 07:21:43 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=POJO
+
+# 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=target/oasis-contributions/%1.zip
+

Propchange: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/oasis-sca-tests.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/oasis-sca-tests.properties
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/oasis-sca-tests.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/tuscany-oasis-sca-tests-errors.properties
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/tuscany-oasis-sca-tests-errors.properties?rev=952557&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/tuscany-oasis-sca-tests-errors.properties
 (added)
+++ 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/tuscany-oasis-sca-tests-errors.properties
 Tue Jun  8 07:21:43 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. 
+

Propchange: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/tuscany-oasis-sca-tests-errors.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/tuscany-oasis-sca-tests-errors.properties
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: 
tuscany/sca-java-2.x/trunk/compliance-tests/binding-ws/src/test/resources/tuscany-oasis-sca-tests-errors.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to