From: Wolfgang M. M. <wol...@us...> - 2006-01-30 19:31:50
|
Update of /cvsroot/exist/eXist-1.0/src/org/exist/xquery/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12314/src/org/exist/xquery/test Modified Files: XPathQueryTest.java Log Message: 1) JUnit seems to keep references to test instances. To save memory, references to collections or services should be explicitely nulled in tearDown(), so they can be garbage collected 2) Included XPathQueryTest into remote server tests. Index: XPathQueryTest.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/xquery/test/XPathQueryTest.java,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** XPathQueryTest.java 28 Jan 2006 10:43:03 -0000 1.58 --- XPathQueryTest.java 30 Jan 2006 19:31:35 -0000 1.59 *************** *** 1,4 **** --- 1,6 ---- package org.exist.xquery.test; + import java.net.BindException; + import java.util.Iterator; import java.util.regex.Matcher; import java.util.regex.Pattern; *************** *** 7,12 **** --- 9,20 ---- import org.custommonkey.xmlunit.XMLTestCase; + import org.exist.StandaloneServer; import org.exist.storage.DBBroker; + import org.exist.xmldb.CollectionImpl; + import org.exist.xmldb.DatabaseInstanceManager; import org.exist.xmldb.XPathQueryServiceImpl; + import org.exist.xquery.XPathException; + import org.mortbay.util.MultiException; + import org.w3c.dom.Node; import org.xmldb.api.DatabaseManager; import org.xmldb.api.base.Collection; *************** *** 23,28 **** public class XPathQueryTest extends XMLTestCase { - - private final static String URI = "xmldb:exist://" + DBBroker.ROOT_COLLECTION; private final static String nested = --- 31,34 ---- *************** *** 108,119 **** "<test-self><a>Hello</a><b>World!</b></test-self>"; private Collection testCollection; private String query; - - public XPathQueryTest(String name) { - super(name); - } protected void setUp() { try { // initialize driver --- 114,131 ---- "<test-self><a>Hello</a><b>World!</b></test-self>"; + private static String uri = "xmldb:exist://" + DBBroker.ROOT_COLLECTION; + + public static void setURI(String collectionURI) { + uri = collectionURI; + } + + private static StandaloneServer server = null; + private Collection testCollection; private String query; protected void setUp() { + if (uri.startsWith("xmldb:exist://localhost")) + initServer(); try { // initialize driver *************** *** 125,129 **** Collection root = DatabaseManager.getCollection( ! URI, "admin", null); --- 137,141 ---- Collection root = DatabaseManager.getCollection( ! uri, "admin", null); *************** *** 134,142 **** testCollection = service.createCollection("test"); assertNotNull(testCollection); - - // XMLResource doc = - // (XMLResource) root.createResource("r_and_j.xml", "XMLResource"); - // doc.setContent(new File("samples/shakespeare/r_and_j.xml")); - // root.storeResource(doc); } catch (ClassNotFoundException e) { } catch (InstantiationException e) { --- 146,149 ---- *************** *** 147,150 **** --- 154,207 ---- } + private void initServer() { + try { + if (server == null) { + server = new StandaloneServer(); + if (!server.isStarted()) { + try { + System.out.println("Starting standalone server..."); + String[] args = {}; + server.run(args); + while (!server.isStarted()) { + Thread.sleep(1000); + } + } catch (MultiException e) { + boolean rethrow = true; + Iterator i = e.getExceptions().iterator(); + while (i.hasNext()) { + Exception e0 = (Exception)i.next(); + if (e0 instanceof BindException) { + System.out.println("A server is running already !"); + rethrow = false; + break; + } + } + if (rethrow) throw e; + } + } + } + } catch(Exception e) { + fail(e.getMessage()); + } + } + + protected void tearDown() throws Exception { + try { + if (!((CollectionImpl) testCollection).isRemoteCollection()) { + DatabaseInstanceManager dim = + (DatabaseInstanceManager) testCollection.getService( + "DatabaseInstanceManager", "1.0"); + dim.shutdown(); + } + testCollection = null; + + System.out.println("tearDown PASSED"); + + } catch (XMLDBException e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + public void testPathExpression() { try { *************** *** 153,162 **** //Invalid path expression left operand (not a node set). - boolean exceptionThrown = false; String message = ""; try { queryAndAssert(service, "('a', 'b', 'c')/position()", -1, null); } catch (XMLDBException e) { - exceptionThrown = true; message = e.getMessage(); } --- 210,217 ---- *************** *** 164,178 **** //Undefined context sequence - exceptionThrown = false; message = ""; try { queryAndAssert(service, "for $a in (<a/>, <b/>, doh, <c/>) return $a", -1, null); } catch (XMLDBException e) { - exceptionThrown = true; message = e.getMessage(); } assertTrue("Exception wanted: " + message, message.indexOf("XPDY0002") > -1); - exceptionThrown = false; message = ""; try { --- 219,230 ---- *************** *** 180,184 **** queryAndAssert(service, "let $a := (1, 2, 3) for $b in $a[1 to 2] return $b", -1, null); } catch (XMLDBException e) { - exceptionThrown = true; message = e.getMessage(); } --- 232,235 ---- *************** *** 211,215 **** XMLResource resource = (XMLResource)result.getResource(0); ! assertEquals("XPath: " + query, "item", resource.getContentAsDOM().getNodeName()); query = "/test/item [ @type='alphanum' ]"; --- 262,269 ---- XMLResource resource = (XMLResource)result.getResource(0); ! Node node = resource.getContentAsDOM(); ! if (node.getNodeType() == Node.DOCUMENT_NODE) ! node = node.getFirstChild(); ! assertEquals("XPath: " + query, "item", node.getNodeName()); query = "/test/item [ @type='alphanum' ]"; *************** *** 833,838 **** ResourceSet result = service.execute(expr); ! Resource r = result.getResource(0); ! assertEquals("string", ((XMLResource)r).getContentAsDOM().getNodeName()); } catch (XMLDBException e) { System.out.println("testExternalVars(): XMLDBException"); --- 887,895 ---- ResourceSet result = service.execute(expr); ! XMLResource r = (XMLResource) result.getResource(0); ! Node node = r.getContentAsDOM(); ! if (node.getNodeType() == Node.DOCUMENT_NODE) ! node = node.getFirstChild(); ! assertEquals("string", node.getNodeName()); } catch (XMLDBException e) { System.out.println("testExternalVars(): XMLDBException"); *************** *** 1196,1214 **** try { XQueryService service = getQueryService(); - ResourceSet result; query = "() except ()"; ! result = queryAndAssert( service, query, 0, ""); query = "() except (1)"; ! result = queryAndAssert( service, query, 0, ""); - boolean exceptionThrown = false; String message = ""; try { query = "(1) except ()"; ! result = queryAndAssert( service, query, 0, ""); } catch (XMLDBException e) { - exceptionThrown = true; message = e.getMessage(); } --- 1253,1268 ---- try { XQueryService service = getQueryService(); query = "() except ()"; ! queryAndAssert( service, query, 0, ""); query = "() except (1)"; ! queryAndAssert( service, query, 0, ""); String message = ""; try { query = "(1) except ()"; ! queryAndAssert( service, query, 0, ""); } catch (XMLDBException e) { message = e.getMessage(); } *************** *** 1216,1225 **** query = "<a/> except ()"; ! result = queryAndAssert( service, query, 1, ""); query = "() except <a/>"; ! result = queryAndAssert( service, query, 0, ""); //Not the same nodes query = "<a/> except <a/>"; ! result = queryAndAssert( service, query, 1, ""); } catch (XMLDBException e) { --- 1270,1279 ---- query = "<a/> except ()"; ! queryAndAssert( service, query, 1, ""); query = "() except <a/>"; ! queryAndAssert( service, query, 0, ""); //Not the same nodes query = "<a/> except <a/>"; ! queryAndAssert( service, query, 1, ""); } catch (XMLDBException e) { *************** *** 1274,1279 **** } public static void main(String[] args) { junit.textui.TestRunner.run(XPathQueryTest.class); } ! } --- 1328,1353 ---- } + public void testCompile() throws XMLDBException { + String invalidQuery = "for $i in (1 to 10)\n return $b"; + String validQuery = "for $i in (1 to 10) return $i"; + org.exist.xmldb.XQueryService service = (org.exist.xmldb.XQueryService) getQueryService(); + boolean exceptionOccurred = false; + try { + service.compileAndCheck(invalidQuery); + } catch (XPathException e) { + assertEquals(e.getLine(), 2); + exceptionOccurred = true; + } + assertTrue("Expected an exception", exceptionOccurred); + + try { + service.compileAndCheck(validQuery); + } catch (XPathException e) { + fail(e.getMessage()); + } + } + public static void main(String[] args) { junit.textui.TestRunner.run(XPathQueryTest.class); } ! } \ No newline at end of file |