more on sparql testing

Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/33279b48
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/33279b48
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/33279b48

Branch: refs/heads/develop
Commit: 33279b482abbdfd7ab6d68ee68ecb6976df5c4c7
Parents: d86c1fa
Author: Sergio Fernández <[email protected]>
Authored: Mon Apr 8 15:59:04 2013 +0200
Committer: Sergio Fernández <[email protected]>
Committed: Mon Apr 8 15:59:04 2013 +0200

----------------------------------------------------------------------
 platform/marmotta-sparql/pom.xml                   |   16 ++-
 .../sparqlio/rdf/SPARQLGraphResultWriter.java      |   40 ++---
 .../sparql/webservices/SparqlWebServiceTest.java   |  125 ++++++++++++++-
 3 files changed, 150 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/33279b48/platform/marmotta-sparql/pom.xml
----------------------------------------------------------------------
diff --git a/platform/marmotta-sparql/pom.xml b/platform/marmotta-sparql/pom.xml
index c809d5c..5a985d2 100644
--- a/platform/marmotta-sparql/pom.xml
+++ b/platform/marmotta-sparql/pom.xml
@@ -30,13 +30,23 @@
 
     <name>Apache Marmotta Platform: SPARQL Endpoint</name>
     <description>
-        Provides support for SPARQL 1.1 Queries and Updates and offers a basic 
UI for exploring SPARQL
-        results.
+        Provides support for SPARQL 1.1 Queries and Updates and offers 
different 
+        UIs for exploring SPARQL results.
     </description>
 
-
     <build>
+
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+            <resource>
+                <directory>src/test/resources</directory>
+            </resource>
+        </resources>
+
         <plugins>
+
             <plugin>
                 <groupId>org.apache.marmotta</groupId>
                 <artifactId>buildinfo-maven-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/33279b48/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/services/sparqlio/rdf/SPARQLGraphResultWriter.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/services/sparqlio/rdf/SPARQLGraphResultWriter.java
 
b/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/services/sparqlio/rdf/SPARQLGraphResultWriter.java
index 8118308..0623365 100644
--- 
a/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/services/sparqlio/rdf/SPARQLGraphResultWriter.java
+++ 
b/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/services/sparqlio/rdf/SPARQLGraphResultWriter.java
@@ -17,6 +17,10 @@
  */
 package org.apache.marmotta.platform.sparql.services.sparqlio.rdf;
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Map;
+
 import org.openrdf.query.GraphQueryResult;
 import org.openrdf.query.QueryEvaluationException;
 import org.openrdf.repository.Repository;
@@ -29,24 +33,17 @@ import org.openrdf.rio.RDFWriter;
 import org.openrdf.rio.Rio;
 import org.openrdf.sail.memory.MemoryStore;
 
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Map;
-
 /**
- * Add file description here!
- * <p/>
+ * SPARQL grapg result writer for Sesam RIO
+ * 
  * Author: Sebastian Schaffert
  */
 public class SPARQLGraphResultWriter {
 
-
     private OutputStream outputStream;
 
-
     private RDFFormat format;
 
-
     public SPARQLGraphResultWriter(OutputStream outputStream) {
         this.outputStream = outputStream;
         format = RDFFormat.RDFXML;
@@ -57,38 +54,37 @@ public class SPARQLGraphResultWriter {
         this.format = RDFFormat.forMIMEType(mimeType, RDFFormat.RDFXML);
     }
 
-
     public void write(GraphQueryResult result) throws IOException {
         Repository repository = new SailRepository(new MemoryStore());
         try {
             repository.initialize();
 
-            RepositoryConnection con = repository.getConnection();
+            RepositoryConnection conn = repository.getConnection();
+
             for(Map.Entry<String,String> namespace : 
result.getNamespaces().entrySet()) {
-                con.setNamespace(namespace.getKey(),namespace.getValue());
+                conn.setNamespace(namespace.getKey(), namespace.getValue());
             }
 
-            while(result.hasNext()) {
-                con.add(result.next());
-            }
-            con.commit();
+            conn.add(result);           
+            conn.commit();
 
-            RDFWriter writer = Rio.createWriter(format,outputStream);
-            con.export(writer);
-            con.close();
+            RDFWriter writer = Rio.createWriter(format, outputStream);
+            conn.export(writer);
+            conn.close();
             repository.shutDown();
 
             outputStream.flush();
             outputStream.close();
 
         } catch (RepositoryException e) {
-            throw new IOException("query result writing failed because there 
was an error while creating temporary triple store",e);
+            throw new IOException("query result writing failed because there 
was an error while creating temporary triple store", e);
         } catch (QueryEvaluationException e) {
-            throw new IOException("query result writing failed because query 
evaluation had a problem",e);
+            throw new IOException("query result writing failed because query 
evaluation had a problem", e);
         } catch (RDFHandlerException e) {
-            throw new IOException("query result writing failed because writer 
could not handle rdf data",e);
+            throw new IOException("query result writing failed because writer 
could not handle rdf data", e);
         }
 
 
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/33279b48/platform/marmotta-sparql/src/test/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebServiceTest.java
----------------------------------------------------------------------
diff --git 
a/platform/marmotta-sparql/src/test/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebServiceTest.java
 
b/platform/marmotta-sparql/src/test/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebServiceTest.java
index d7d3a61..06d03eb 100644
--- 
a/platform/marmotta-sparql/src/test/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebServiceTest.java
+++ 
b/platform/marmotta-sparql/src/test/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebServiceTest.java
@@ -1,5 +1,7 @@
 package org.apache.marmotta.platform.sparql.webservices;
 
+import static com.jayway.restassured.RestAssured.expect;
+
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -11,6 +13,8 @@ import 
org.apache.marmotta.platform.core.test.base.JettyMarmotta;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.jayway.restassured.RestAssured;
 
@@ -22,17 +26,21 @@ import com.jayway.restassured.RestAssured;
  */
 public class SparqlWebServiceTest {
 
+       private static Logger log = 
LoggerFactory.getLogger(SparqlWebServiceTest.class);
+       
     private static JettyMarmotta marmotta;
 
     @BeforeClass
     public static void setUp() throws MarmottaImportException {
-        marmotta = new JettyMarmotta("/marmotta");
+        marmotta = new JettyMarmotta("/marmotta", SparqlWebService.class);
+        
         ImportService importService = marmotta.getService(ImportService.class);
         UserService userService = marmotta.getService(UserService.class);
         ContextService contextService = 
marmotta.getService(ContextService.class);
         InputStream is = 
Thread.currentThread().getContextClassLoader().getResourceAsStream("foaf.rdf"); 
-        importService.importData(is, "application/rdf+xml", 
userService.getAnonymousUser(), contextService.getDefaultContext());
-
+        int n = importService.importData(is, "application/rdf+xml", 
userService.getAnonymousUser(), contextService.getDefaultContext());
+        log.info("Imported RDF test suite with {} triples", n);
+        
         RestAssured.baseURI = "http://localhost";;
         RestAssured.port = marmotta.getPort();
         RestAssured.basePath = marmotta.getContext();
@@ -43,11 +51,116 @@ public class SparqlWebServiceTest {
     public static void tearDown() {
         marmotta.shutdown();
     }
-
+    
     @Test
-    public void testSet() throws IOException, InterruptedException {
-        
+    public void testSelect() throws IOException, InterruptedException {
+        expect().
+       log().ifError().
+               statusCode(200).
+       given().
+               param("query", "SELECT ?o WHERE { 
<http://www.wikier.org/foaf#wikier> ?p ?o }").
+               when().
+               get("/sparql/select");
+    }
+    
+    @Test
+    public void testSelectContentNegotiation() throws IOException, 
InterruptedException {
+        expect().
+       log().ifError().
+               statusCode(200).
+               contentType("application/sparql-results+xml").
+       given().
+                       header("Accept", "application/xml").
+               param("query", "SELECT ?o WHERE { 
<http://www.wikier.org/foaf#wikier> ?p ?o }").
+               when().
+               get("/sparql/select");
+    }
+    
+    @Test
+    public void testAsk() throws IOException, InterruptedException {
+        expect().
+       log().ifError().
+               statusCode(200).
+       given().
+               param("query", "ASK WHERE { <http://www.wikier.org/foaf#wikier> 
?p ?o }").
+               when().
+               get("/sparql/select");
+    }
+    
+    /*
+    @Test
+    public void testConstruct() throws IOException, InterruptedException {
+        expect().
+       log().ifError().
+               statusCode(200).
+       given().
+               param("query", "CONSTRUCT { <http://www.wikier.org/foaf#wikier> 
?p ?o } WHERE { <http://www.wikier.org/foaf#wikier> ?p ?o }").
+               when().
+               get("/sparql/select");
+    }
+    
+    @Test
+    public void testConstructContentNegotiationXml() throws IOException, 
InterruptedException {
+        expect().
+               log().ifError().
+               statusCode(200).
+               contentType("application/rdf+xml").
+       given().
+               header("Accept", "application/xml").
+               param("query", "CONSTRUCT { <http://www.wikier.org/foaf#wikier> 
?p ?o } WHERE { <http://www.wikier.org/foaf#wikier> ?p ?o }").
+               when().
+               get("/sparql/select");
+    }
+    
+    @Test
+    public void testConstructContentNegotiationPlain() throws IOException, 
InterruptedException {
+        expect().
+               log().ifError().
+               statusCode(200).
+               contentType("text/turtle").
+       given().
+               header("Accept", "plain/text").
+               param("query", "CONSTRUCT { <http://www.wikier.org/foaf#wikier> 
?p ?o } WHERE { <http://www.wikier.org/foaf#wikier> ?p ?o }").
+               when().
+               get("/sparql/select");
+    }
 
+    @Test
+    public void testDescribe() throws IOException, InterruptedException {
+        expect().
+       log().ifError().
+               statusCode(200).
+       given().
+               param("query", "DESCRIBE <http://www.wikier.org/foaf#wikier>").
+               when().
+               get("/sparql/select");
+    }
+    
+    @Test
+    public void testDescribeContentNegotiationXml() throws IOException, 
InterruptedException {
+        expect().
+               log().ifError().
+               statusCode(200).
+               contentType("application/rdf+xml").
+       given().
+               header("Accept", "application/xml").
+               param("query", "DESCRIBE <http://www.wikier.org/foaf#wikier>").
+               when().
+               get("/sparql/select");
+    }
+    
+    @Test
+    public void testDescribeContentNegotiationPlain() throws IOException, 
InterruptedException {
+        expect().
+               log().ifError().
+               statusCode(200).
+               contentType("text/turle").
+       given().
+               header("Accept", "plain/text").
+               param("query", "DESCRIBE <http://www.wikier.org/foaf#wikier>").
+               when().
+               get("/sparql/select");
     }
+    */
 
 }

Reply via email to