You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ms...@apache.org on 2007/10/31 03:45:57 UTC

svn commit: r590546 - in /ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar: ./ jdbc/ jdbc/JdbcExternalVariableEngineTest.java

Author: mszefler
Date: Tue Oct 30 19:45:57 2007
New Revision: 590546

URL: http://svn.apache.org/viewvc?rev=590546&view=rev
Log:
experimental: external variables

Added:
    ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar/
    ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar/jdbc/
    ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar/jdbc/JdbcExternalVariableEngineTest.java   (with props)

Added: ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar/jdbc/JdbcExternalVariableEngineTest.java
URL: http://svn.apache.org/viewvc/ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar/jdbc/JdbcExternalVariableEngineTest.java?rev=590546&view=auto
==============================================================================
--- ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar/jdbc/JdbcExternalVariableEngineTest.java (added)
+++ ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar/jdbc/JdbcExternalVariableEngineTest.java Tue Oct 30 19:45:57 2007
@@ -0,0 +1,137 @@
+package org.apache.ode.bpel.evar.jdbc;
+
+import java.sql.Connection;
+import java.sql.Statement;
+import java.util.ArrayList;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.ode.bpel.engine.extvar.ExternalVariableConf;
+import org.apache.ode.bpel.engine.extvar.ExternalVariableConf.Variable;
+import org.apache.ode.utils.DOMUtils;
+import org.apache.ode.utils.GUID;
+import org.apche.ode.bpel.evar.ExternalVariableModule.Locator;
+import org.apche.ode.bpel.evar.ExternalVariableModule.Value;
+import org.hsqldb.jdbc.jdbcDataSource;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+
+
+/**
+ * Test for the JDBC external variable engine.
+ * 
+ * @author Maciej Szefler <mszefler at gmail dot com>
+ *
+ */
+public class JdbcExternalVariableEngineTest extends TestCase {
+    
+    final Long _iid = 123L;
+    final QName _pid = new QName("foo", "pid");
+    
+    ExternalVariableConf _econf;
+    jdbcDataSource _ds;
+    JdbcExternalVariableEngine _engine;
+    Element _el1;
+
+    public void setUp() throws Exception {
+        _ds = new org.hsqldb.jdbc.jdbcDataSource();
+        _ds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
+        _ds.setUser("sa");
+       
+        Connection conn = _ds.getConnection();
+        Statement s = conn.createStatement();
+        s.execute("create table extvartable1 (" +
+                "id1 VARCHAR PRIMARY KEY," +
+                "_id2_ VARCHAR," +
+                "pid VARCHAR, " +
+                "iid INT," +
+                "cts DATETIME," +
+                "uts DATETIME," +
+                "foo VARCHAR," +
+                "bar VARCHAR );");
+        
+        _engine = new JdbcExternalVariableEngine();
+        _engine.registerDataSource("testds",_ds);
+        
+        _el1=DOMUtils.stringToDOM("<foobar><id2>ignored</id2><foo>foo</foo><bar>bar</bar></foobar>");
+    }
+    
+    @Test
+    public void testConfigurationParsing() throws Exception {
+        Document deploydoc = DOMUtils.parse(getClass().getResourceAsStream("evardeploy.xml"));
+        NodeList nl = deploydoc.getElementsByTagNameNS(ExternalVariableConf.EXTVARCONF_ELEMENT.getNamespaceURI(), 
+                ExternalVariableConf.EXTVARCONF_ELEMENT.getLocalPart());
+
+        ArrayList<Element> al = new ArrayList<Element>();
+        for (int i = 0; i < nl.getLength(); ++i) {
+            al.add((Element)nl.item(i));
+        }
+        
+        assertTrue(al.size() >= 1);
+        _econf = new ExternalVariableConf(al);
+        assertEquals(al.size(), _econf.getVariables().size());
+    }
+
+    
+    @Test
+    public void testConfigure() throws Exception {
+        testConfigurationParsing();
+        for (Variable v :_econf.getVariables())
+            _engine.configure(_pid, v.extVariableId, v.configuration);
+    }
+    
+    
+    @Test
+    public void testInitWriteValue() throws Exception {
+        testConfigure();
+        
+        Locator locator = new Locator("evar1",_pid,_iid);
+        Value value = new Value(locator, _el1, null);
+        value = _engine.writeValue(value);
+        assertNotNull(value);
+        assertNotNull(value.locator);
+        assertTrue(value.locator.containsKey("id1"));
+        assertTrue(value.locator.containsKey("id2"));
+    }
+
+    @Test
+    public void testWriteUpdate() throws Exception {
+        testConfigure();
+        
+        Locator locator = new Locator("evar1",_pid,_iid);
+        Value value = new Value(locator, _el1, null);
+        value = _engine.writeValue(value);
+        String domstr = DOMUtils.domToStringLevel2(value.value);
+        Value newvalue = new Value(value.locator,DOMUtils.stringToDOM(domstr.replaceAll("<bar>bar</bar>", "<bar>boohoo</bar>")),null);
+        _engine.writeValue(newvalue);
+        Value reread = _engine.readValue(newvalue.locator);
+        domstr = DOMUtils.domToString(reread.value);
+        assertTrue(domstr.contains("boohoo"));
+        assertFalse(domstr.contains(">bar<"));
+    }
+    
+    @Test
+    public void testRead() throws Exception {
+        testConfigure();
+        Locator locator = new Locator("evar1",_pid,_iid);
+        Value value = new Value(locator, _el1, null);
+        value = _engine.writeValue(value);
+        
+        
+        Value readVal = _engine.readValue(value.locator);
+        
+        assertEquals(_iid,readVal.locator.iid);
+        assertEquals(_pid,readVal.locator.pid);
+        assertEquals(2, readVal.locator.size());
+        assertTrue(readVal.locator.containsKey("id1"));
+        assertTrue(readVal.locator.containsKey("id2"));
+        assertEquals(value.locator.get("id1"), readVal.locator.get("id1"));
+        assertEquals(value.locator.get("id2"), readVal.locator.get("id2"));
+
+    }
+}

Propchange: ode/branches/extvar/bpel-runtime/src/test/java/org/apache/ode/bpel/evar/jdbc/JdbcExternalVariableEngineTest.java
------------------------------------------------------------------------------
    svn:eol-style = native