You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/06/06 21:12:35 UTC

svn commit: r1347064 - in /jena/Scratch/AFS/Jena-Dev/trunk/src: dev/ dev/xsddt/ reports/archive/ reports/archive/xsddt_247/

Author: andy
Date: Wed Jun  6 19:12:35 2012
New Revision: 1347064

URL: http://svn.apache.org/viewvc?rev=1347064&view=rev
Log: (empty)

Added:
    jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena250_TestStoreRelease.java
    jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/Jena247_XSDDatimeTzBoundary.java
      - copied, changed from r1346974, jena/Scratch/AFS/Jena-Dev/trunk/src/dev/JENA247_XSDDatimeTzBoundary.java
    jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/
      - copied from r1346931, jena/Scratch/AFS/Jena-Dev/trunk/src/dev/xsddt/
Removed:
    jena/Scratch/AFS/Jena-Dev/trunk/src/dev/JENA247_XSDDatimeTzBoundary.java
    jena/Scratch/AFS/Jena-Dev/trunk/src/dev/xsddt/
Modified:
    jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/DT.java
    jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/XSDDateTime2.java

Added: jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena250_TestStoreRelease.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena250_TestStoreRelease.java?rev=1347064&view=auto
==============================================================================
--- jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena250_TestStoreRelease.java (added)
+++ jena/Scratch/AFS/Jena-Dev/trunk/src/dev/Jena250_TestStoreRelease.java Wed Jun  6 19:12:35 2012
@@ -0,0 +1,189 @@
+//package com.ibm.jena.tdb.tx.test;
+package dev ;
+
+import java.io.File ;
+import java.util.UUID ;
+
+import org.openjena.atlas.lib.FileOps ;
+
+import com.hp.hpl.jena.query.* ;
+import com.hp.hpl.jena.rdf.model.Model ;
+import com.hp.hpl.jena.rdf.model.Property ;
+import com.hp.hpl.jena.rdf.model.Resource ;
+import com.hp.hpl.jena.tdb.StoreConnection ;
+import com.hp.hpl.jena.tdb.TDB ;
+import com.hp.hpl.jena.tdb.TDBFactory ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
+import com.hp.hpl.jena.tdb.sys.SystemTDB ;
+
+/**
+ * @author shelsen
+ * 
+ */
+public class Jena250_TestStoreRelease {
+
+	final private static String INDEX_INFO_SUBJECT = "http://jazz.net/xmlns/foundation/1.0/test1"; 
+	final private static String TIMESTAMP_PREDICATE = "http://jazz.net/xmlns/foundation/1.0/test2"; 
+	final private static String URI_PREDICATE = "http://jazz.net/xmlns/foundation/1.0/test3"; 
+	final private static String VERSION_PREDICATE = "http://jazz.net/xmlns/foundation/1.0/test4"; 
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		System.out.println("Starting TestStoreRelease");
+
+		// we always use direct mode
+		ARQ.getContext().set(SystemTDB.symFileMode, "direct");
+		if (!SystemTDB.fileMode().toString().equals("direct")) {
+			throw new RuntimeException("file mode is not direct, but " + SystemTDB.fileMode()); //$NON-NLS-1$
+		}
+
+		TDB.getContext().set(TDB.symUnionDefaultGraph, true);
+	
+//		if (args.length == 0) {
+//			throw new RuntimeException("provide a location"); //$NON-NLS-1$
+//		}
+//
+//		String locationStr = args[0];
+		String locationStr = "DB" ;
+		if ( FileOps.exists(locationStr) )
+		{
+		    FileOps.clearDirectory(locationStr) ;
+		    new File(locationStr).delete() ;
+		}
+		
+		String absoluteLocationStr = new File(locationStr).getAbsolutePath();
+
+		System.out.println("Testing on store located at " + absoluteLocationStr);
+
+		Location location = new Location(absoluteLocationStr);
+
+		new Jena250_TestStoreRelease().testStoreRelease(location);
+
+		new Jena250_TestStoreRelease().testStoreRelease(location);
+    
+		new Jena250_TestStoreRelease().testStoreRelease(location);
+
+	}
+
+	private Location location;
+
+	public void testStoreRelease(Location location) {
+		this.location = location;
+		// create a dummy dataset at the provided location to force creation if the store does not exist
+		TDBFactory.createDataset(this.location);
+
+		System.out.println("The store size is " + this.storeSize());
+		
+		// insert a few triples
+		System.out.println("Writing triples");
+		this.saveSomeTriples();
+
+		System.out.println("The store size is " + this.storeSize());
+		
+		System.out.println("Writing more triples");
+		this.saveSomeTriples();
+		
+		System.out.println("Releasing the store at location: " + this.location.getDirectoryPath());
+		StoreConnection.release(this.location);
+	}
+
+	public interface QueryActivity<E> {
+		E run(QueryExecution qe) throws Exception;
+	}
+
+	private <E> E storeOperation(String query, QueryActivity<E> queryActivity) {
+		long t = System.currentTimeMillis();
+		Dataset dataset = TDBFactory.createDataset(this.location);
+		QueryExecution qe = null;
+		try {
+			dataset.begin(ReadWrite.READ);
+			qe = QueryExecutionFactory.create(query, dataset);
+			E e = queryActivity.run(qe);
+			dataset.commit();
+			return e;
+		} catch (Throwable e) {
+			dataset.abort();
+			throw new RuntimeException(e);
+		} finally {
+			try {
+				if (qe != null) {
+					qe.close();
+				}
+			} finally {
+				dataset.end();
+			}
+			//System.out.println("QueryActivity: " + (System.currentTimeMillis() - t) + "ms");
+		}
+	}
+
+	public interface ModelWriteActivity<E> {
+		E run(Model model) throws Exception;
+	}
+
+	private <E> E storeOperation(String graphName, ModelWriteActivity<E> modelWriteActivity) {
+		long t = System.currentTimeMillis();
+		Dataset dataset = TDBFactory.createDataset(this.location);
+		try {
+			dataset.begin(ReadWrite.WRITE);
+			Model m = dataset.getNamedModel(graphName);
+			E e = modelWriteActivity.run(m);
+			dataset.commit();
+			return e;
+		} catch (Throwable e) {
+			dataset.abort();
+			throw new RuntimeException(e);
+		} finally {
+			dataset.end();
+			//System.out.println("ModelWriteActivity: " + (System.currentTimeMillis() - t) + "ms"); 
+		}
+	}
+
+	protected void saveSomeTriples() {
+
+		this.storeOperation(INDEX_INFO_SUBJECT, new ModelWriteActivity<Void>() {
+
+			@Override
+            public Void run(Model timestampModel) throws Exception {
+				Resource subject = timestampModel.createResource(INDEX_INFO_SUBJECT);
+				Property predicate = timestampModel.createProperty(TIMESTAMP_PREDICATE);
+				timestampModel.addLiteral(subject, predicate, System.currentTimeMillis());
+				predicate = timestampModel.createProperty(URI_PREDICATE);
+				for (int i = 0; i < 9; i++) {
+					timestampModel.add(subject, predicate, timestampModel.createResource("https://localhost/" + UUID.randomUUID().toString()));
+				}
+				predicate = timestampModel.createProperty(VERSION_PREDICATE);
+				timestampModel.addLiteral(subject, predicate, 1.0);
+
+				return null;
+			}
+		});
+	}
+
+	private int storeSize() {
+		String queryStr = "SELECT (COUNT(?s) as ?c)\n" + 
+				"WHERE { \n" + 
+				"  ?s ?p ?o ." + 
+				"}  \n";
+
+		return this.storeOperation(queryStr, new QueryActivity<Integer>() {
+
+		    // AFS : properly close 
+		    // Added qe.close, and additional rs.hasNext
+			@Override
+            public Integer run(QueryExecution qe) throws Exception {
+			    ResultSet rs = qe.execSelect();
+			    try {
+				if (rs.hasNext()) {
+				    int x = rs.next().get("c").asLiteral().getInt();
+				    ResultSetFormatter.consume(rs) ;
+				    return x ;
+				}
+			    } finally { qe.close() ; }
+				return 0;
+
+			}
+		});
+	}
+}

Copied: jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/Jena247_XSDDatimeTzBoundary.java (from r1346974, jena/Scratch/AFS/Jena-Dev/trunk/src/dev/JENA247_XSDDatimeTzBoundary.java)
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/Jena247_XSDDatimeTzBoundary.java?p2=jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/Jena247_XSDDatimeTzBoundary.java&p1=jena/Scratch/AFS/Jena-Dev/trunk/src/dev/JENA247_XSDDatimeTzBoundary.java&r1=1346974&r2=1347064&rev=1347064&view=diff
==============================================================================
--- jena/Scratch/AFS/Jena-Dev/trunk/src/dev/JENA247_XSDDatimeTzBoundary.java (original)
+++ jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/Jena247_XSDDatimeTzBoundary.java Wed Jun  6 19:12:35 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package dev;
+package reports.archive;
 
 
 import java.text.SimpleDateFormat ;
@@ -26,8 +26,8 @@ import java.util.TimeZone ;
 
 import org.junit.Assert ;
 import org.junit.Test ;
-import dev.xsddt.DT ;
-import dev.xsddt.XSDDateTime2 ;
+import reports.archive.xsddt_247.DT ;
+import reports.archive.xsddt_247.XSDDateTime2 ;
 
  
 /* from
@@ -49,11 +49,11 @@ with:
 
  */
 
-public class JENA247_XSDDatimeTzBoundary {
+public class Jena247_XSDDatimeTzBoundary {
     
     public static void main(String ... argv) throws Exception
     {
-        new JENA247_XSDDatimeTzBoundary().test() ;
+        new Jena247_XSDDatimeTzBoundary().test() ;
     }
 
     

Modified: jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/DT.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/DT.java?rev=1347064&r1=1346931&r2=1347064&view=diff
==============================================================================
--- jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/DT.java (original)
+++ jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/DT.java Wed Jun  6 19:12:35 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package dev.xsddt;
+package reports.archive.xsddt_247;
 
 import com.hp.hpl.jena.datatypes.RDFDatatype;
 import com.hp.hpl.jena.datatypes.xsd.AbstractDateTime ;

Modified: jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/XSDDateTime2.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/XSDDateTime2.java?rev=1347064&r1=1346931&r2=1347064&view=diff
==============================================================================
--- jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/XSDDateTime2.java (original)
+++ jena/Scratch/AFS/Jena-Dev/trunk/src/reports/archive/xsddt_247/XSDDateTime2.java Wed Jun  6 19:12:35 2012
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package dev.xsddt;
+package reports.archive.xsddt_247;
 
 import java.util.Calendar ;
 import java.util.GregorianCalendar ;