[Mulgara-svn] r796 - trunk/src/jar/resolver/java/org/mulgara/resolver
andrae at mulgara.org
andrae at mulgara.org
Fri Apr 18 02:15:04 UTC 2008
Author: andrae
Date: 2008-04-17 19:15:03 -0700 (Thu, 17 Apr 2008)
New Revision: 796
Modified:
trunk/src/jar/resolver/java/org/mulgara/resolver/AdvDatabaseSessionUnitTest.java
Log:
refs #100
Adds a test for a transaction bug found by James Leigh.
setAutoCommit(true);
query() -> answer;
setAutoCommit(false);
answer.close();
commit(); // fails attempting to reserveWriteLock.
setAutoCommit(true);
Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/AdvDatabaseSessionUnitTest.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/AdvDatabaseSessionUnitTest.java 2008-04-17 04:29:44 UTC (rev 795)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/AdvDatabaseSessionUnitTest.java 2008-04-18 02:15:03 UTC (rev 796)
@@ -117,6 +117,7 @@
suite.addTest(new AdvDatabaseSessionUnitTest("testConcurrentSubqueryQuery"));
suite.addTest(new AdvDatabaseSessionUnitTest("testConcurrentReadWrite"));
suite.addTest(new AdvDatabaseSessionUnitTest("testExplicitBasicQuery"));
+ suite.addTest(new AdvDatabaseSessionUnitTest("testAnswerWriteCloseIsolation"));
suite.addTest(new AdvDatabaseSessionUnitTest("testExplicitIsolationQuery"));
suite.addTest(new AdvDatabaseSessionUnitTest("testExplicitRollbackIsolationQuery"));
suite.addTest(new AdvDatabaseSessionUnitTest("testExplicitCommitIsolationQuery"));
@@ -672,6 +673,69 @@
}
+ public void testAnswerWriteCloseIsolation() throws URISyntaxException {
+ logger.info("Testing AnswerWriteCloseIsolation");
+
+ try {
+ Session session = database.newSession();
+ try {
+ Variable subjectVariable = new Variable("subject");
+ Variable predicateVariable = new Variable("predicate");
+ Variable objectVariable = new Variable("object");
+
+ List<SelectElement> selectList = new ArrayList<SelectElement>(3);
+ selectList.add(subjectVariable);
+ selectList.add(predicateVariable);
+ selectList.add(objectVariable);
+
+ // Evaluate the query
+ Answer answer = session.query(new Query(
+ selectList, // SELECT
+ new ModelResource(modelURI), // FROM
+ new ConstraintImpl(subjectVariable, // WHERE
+ predicateVariable,
+ objectVariable),
+ null, // HAVING
+ Arrays.asList(new Order[] { // ORDER BY
+ new Order(subjectVariable, true),
+ new Order(predicateVariable, true),
+ new Order(objectVariable, true)
+ }),
+ null, // LIMIT
+ 0, // OFFSET
+ new UnconstrainedAnswer() // GIVEN
+ ));
+ String[][] results = {
+ { "test:s01", "test:p01", "test:o01" },
+ { "test:s01", "test:p02", "test:o01" },
+ { "test:s01", "test:p02", "test:o02" },
+ { "test:s01", "test:p03", "test:o02" },
+ { "test:s02", "test:p03", "test:o02" },
+ { "test:s02", "test:p04", "test:o02" },
+ { "test:s02", "test:p04", "test:o03" },
+ { "test:s02", "test:p05", "test:o03" },
+ { "test:s03", "test:p01", "test:o01" },
+ { "test:s03", "test:p05", "test:o03" },
+ { "test:s03", "test:p06", "test:o01" },
+ { "test:s03", "test:p06", "test:o03" },
+ };
+ compareResults(results, answer);
+
+ session.setAutoCommit(false);
+
+ answer.close();
+
+ session.commit();
+ session.setAutoCommit(true);
+ } finally {
+ session.close();
+ }
+ } catch (Exception e) {
+ fail(e);
+ }
+ }
+
+
public void testExplicitIsolationQuery() throws URISyntaxException {
logger.info("testExplicitIsolationQuery");
URI fileURI = new File("data/xatest-model1.rdf").toURI();
More information about the Mulgara-svn
mailing list