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 2016/08/10 12:59:13 UTC

[07/12] jena git commit: JENA-1221: More tests

JENA-1221: More tests

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/176fb133
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/176fb133
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/176fb133

Branch: refs/heads/master
Commit: 176fb1331cb3c32725de7aefb708348c79c8bfa4
Parents: cd7f442
Author: Andy Seaborne <an...@apache.org>
Authored: Sun Aug 7 14:19:19 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sun Aug 7 14:19:19 2016 +0100

----------------------------------------------------------------------
 .../jena/fuseki/embedded/TS_EmbeddedFuseki.java |   3 +-
 .../fuseki/embedded/TestEmbeddedFuseki.java     | 182 ++++++++++++++-----
 .../testing/FusekiEmbedded/config.ttl           |  18 ++
 3 files changed, 156 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/176fb133/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java
index c0e06d2..c66149d 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TS_EmbeddedFuseki.java
@@ -36,12 +36,13 @@ public class TS_EmbeddedFuseki {
         LogCtl.setLevel(Fuseki.serverLogName,        "WARN");
         LogCtl.setLevel(Fuseki.actionLogName,        "WARN");
         LogCtl.setLevel(Fuseki.requestLogName,       "WARN");
+        LogCtl.setLevel(Fuseki.adminLogName,         "WARN");
         LogCtl.setLevel("org.eclipse.jetty",         "WARN");
         
         // Shouldn't see these in the embedded server.
 //        LogCtl.setLevel("org.apache.shiro",          "WARN") ;
 //        LogCtl.setLevel(Fuseki.configLogName,        "WARN");
-//        LogCtl.setLevel(Fuseki.adminLogName,         "WARN");
+
 //        LogCtl.setLevel(Fuseki.builderLogName,       "WARN");
 //        LogCtl.setLevel(Fuseki.servletRequestLogName,"WARN");
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/176fb133/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
index 2e2ff7b..d96faa0 100644
--- a/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
+++ b/jena-fuseki2/jena-fuseki-embedded/src/test/java/org/apache/jena/fuseki/embedded/TestEmbeddedFuseki.java
@@ -20,14 +20,18 @@ package org.apache.jena.fuseki.embedded;
 
 import static org.junit.Assert.assertEquals ;
 import static org.junit.Assert.assertFalse ;
+import static org.junit.Assert.assertNotNull ;
+import static org.junit.Assert.assertNull ;
 import static org.junit.Assert.assertTrue ;
 
 import java.io.OutputStream ;
+import java.util.function.Consumer ;
 
 import org.apache.http.HttpEntity ;
 import org.apache.http.entity.ContentProducer ;
 import org.apache.http.entity.EntityTemplate ;
 import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.atlas.web.HttpException ;
 import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.fuseki.server.DataAccessPointRegistry ;
 import org.apache.jena.fuseki.server.DataService ;
@@ -50,32 +54,35 @@ import org.apache.jena.system.Txn ;
 import org.apache.jena.update.UpdateExecutionFactory ;
 import org.apache.jena.update.UpdateFactory ;
 import org.apache.jena.update.UpdateRequest ;
+import org.apache.jena.web.HttpSC ;
 import org.junit.Test ;
 
 public class TestEmbeddedFuseki {
     
+    private static final String DIR = "testing/FusekiEmbedded/" ;
+
     @Test public void embedded_01() {
         DatasetGraph dsg = dataset() ;
         FusekiEmbeddedServer server = FusekiEmbeddedServer.make(3330, "/ds", dsg) ;
         assertTrue(DataAccessPointRegistry.get().isRegistered("/ds")) ;
         server.start() ;
-        try (QueryExecution qExec = QueryExecutionFactory.sparqlService("http://localhost:3330/ds/query", "SELECT * { ?s ?p ?o}") ) {
+        query("http://localhost:3330/ds/query", "SELECT * { ?s ?p ?o}", qExec-> {
             ResultSet rs = qExec.execSelect() ; 
             assertFalse(rs.hasNext()) ;
-        }
+        }) ;
         server.stop() ;
     }
-
+    
     @Test public void embedded_02() {
-        // test order !!!!
         DatasetGraph dsg = dataset() ;
         FusekiEmbeddedServer server = FusekiEmbeddedServer.make(3330, "/ds2", dsg) ;
         // But no /ds
         assertEquals(1,  DataAccessPointRegistry.get().size()) ;
         assertTrue(DataAccessPointRegistry.get().isRegistered("/ds2")) ;
         assertFalse(DataAccessPointRegistry.get().isRegistered("/ds")) ;
-        server.start() ;
-        server.stop() ;
+        try {
+            server.start() ;
+        } finally { server.stop() ; }
     }
     
     @Test public void embedded_03() {
@@ -85,17 +92,18 @@ public class TestEmbeddedFuseki {
             .add("/ds1", dsg) 
             .build() ;
         server.start() ;
-        // Add while live.
-        Txn.execWrite(dsg,  ()->{
-            Quad q = SSE.parseQuad("(_ :s :p _:b)") ;
-            dsg.add(q); 
-        }) ;
-        try (QueryExecution qExec = QueryExecutionFactory.sparqlService("http://localhost:3331/ds1/query", "SELECT * { ?s ?p ?o}") ) {
-            ResultSet rs = qExec.execSelect() ; 
-            int x = ResultSetFormatter.consume(rs) ;
-            assertEquals(1, x) ;
-        }
-        server.stop() ;
+        try {
+            // Add while live.
+            Txn.execWrite(dsg,  ()->{
+                Quad q = SSE.parseQuad("(_ :s :p _:b)") ;
+                dsg.add(q); 
+            }) ;
+            query("http://localhost:3331/ds1/query", "SELECT * { ?s ?p ?o}", qExec->{
+                ResultSet rs = qExec.execSelect() ; 
+                int x = ResultSetFormatter.consume(rs) ;
+                assertEquals(1, x) ;
+            }) ;
+        } finally { server.stop() ; }
     }
     
     
@@ -118,37 +126,113 @@ public class TestEmbeddedFuseki {
             .add("/data", dataService)
             .build() ;
         server.start() ;
-        
-        // Put data in.
-        String data = "(graph (:s :p 1) (:s :p 2) (:s :p 3))" ;
-        Graph g = SSE.parseGraph(data) ;
-        HttpEntity e = graphToHttpEntity(g) ;
-        HttpOp.execHttpPut("http://localhost:3332/data", e) ;
-
-        // Get data out.
-        try ( TypedInputStream in = HttpOp.execHttpGet("http://localhost:3332/data") ) { 
-            Graph g2 = GraphFactory.createDefaultGraph() ;
-            RDFDataMgr.read(g2, in, RDFLanguages.contentTypeToLang(in.getContentType())) ;
-            assertTrue(g.isIsomorphicWith(g2)) ;
-        }
-        // Query.
-        try (QueryExecution qExec = QueryExecutionFactory.sparqlService("http://localhost:3332/data", "SELECT * { ?s ?p ?o}") ) {
-            ResultSet rs = qExec.execSelect() ; 
-            int x = ResultSetFormatter.consume(rs) ;
-            assertEquals(3, x) ;
-        }
-        // Update
-        UpdateRequest req = UpdateFactory.create("CLEAR DEFAULT") ;
-        UpdateExecutionFactory.createRemote(req, "http://localhost:3332/data").execute(); 
-        // Query again.
-        try (QueryExecution qExec = QueryExecutionFactory.sparqlService("http://localhost:3332/data", "SELECT * { ?s ?p ?o}") ) {
-            ResultSet rs = qExec.execSelect() ; 
-            int x = ResultSetFormatter.consume(rs) ;
-            assertEquals(0, x) ;
-        }
+        try {
+            // Put data in.
+            String data = "(graph (:s :p 1) (:s :p 2) (:s :p 3))" ;
+            Graph g = SSE.parseGraph(data) ;
+            HttpEntity e = graphToHttpEntity(g) ;
+            HttpOp.execHttpPut("http://localhost:3332/data", e) ;
+    
+            // Get data out.
+            try ( TypedInputStream in = HttpOp.execHttpGet("http://localhost:3332/data") ) { 
+                Graph g2 = GraphFactory.createDefaultGraph() ;
+                RDFDataMgr.read(g2, in, RDFLanguages.contentTypeToLang(in.getContentType())) ;
+                assertTrue(g.isIsomorphicWith(g2)) ;
+            }
+            // Query.
+            query("http://localhost:3332/data", "SELECT * { ?s ?p ?o}", qExec->{
+                ResultSet rs = qExec.execSelect() ; 
+                int x = ResultSetFormatter.consume(rs) ;
+                assertEquals(3, x) ;
+            }) ;
+            // Update
+            UpdateRequest req = UpdateFactory.create("CLEAR DEFAULT") ;
+            UpdateExecutionFactory.createRemote(req, "http://localhost:3332/data").execute(); 
+            // Query again.
+            query("http://localhost:3332/data", "SELECT * { ?s ?p ?o}", qExec-> {
+                ResultSet rs = qExec.execSelect() ; 
+                int x = ResultSetFormatter.consume(rs) ;
+                assertEquals(0, x) ;
+            }) ;
+        } finally { server.stop() ; }
+    }
+    
+    @Test public void embedded_05() {
+        DatasetGraph dsg = dataset() ;
+        FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+            .setPort(3330)
+            .add("/ds0", dsg) 
+            .build() ;
+        server.start() ;
+        try {
+            // No stats
+            String x = HttpOp.execHttpGetString("http://localhost:3330/$/stats") ;
+            assertNull(x) ;  
+        } finally { server.stop() ; }
+    }
+    
+    @Test public void embedded_06() {
+        DatasetGraph dsg = dataset() ;
+        FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+            .setPort(3330)
+            .add("/ds0", dsg)
+            .enableStats(true)
+            .build() ;
+        server.start() ;
+        // No stats
+        String x = HttpOp.execHttpGetString("http://localhost:3330/$/stats") ;
+        assertNotNull(x) ;
         server.stop() ;
     }
-        
+
+    // Context path.
+    @Test public void embedded_07() {
+        DatasetGraph dsg = dataset() ;
+        FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+            .setPort(3330)
+            .setContextPath("/ABC")
+            .add("/ds", dsg) 
+            .build() ;
+        server.start() ;
+        try {
+            String x1 = HttpOp.execHttpGetString("http://localhost:3330/ds") ;
+            assertNull(x1) ;
+            String x2 = HttpOp.execHttpGetString("http://localhost:3330/ABC/ds") ;
+            assertNotNull(x2) ;
+        } finally { server.stop() ; }
+    }
+    
+    @Test public void embedded_08() {
+        DatasetGraph dsg = dataset() ;
+        FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+            .setPort(3330)
+            .parseConfigFile(DIR+"config.ttl") 
+            .build() ;
+        server.start() ;
+        try {
+            query("http://localhost:3330/FuTest", "SELECT * {}", x->{}) ;
+        } finally { server.stop() ; } 
+    }
+    
+    @Test public void embedded_09() {
+        DatasetGraph dsg = dataset() ;
+        FusekiEmbeddedServer server = FusekiEmbeddedServer.create()
+            .setPort(3330)
+            .setContextPath("/ABC")
+            .parseConfigFile(DIR+"config.ttl") 
+            .build() ;
+        server.start() ;
+        try {
+            try {
+                query("http://localhost:3330/FuTest", "ASK{}", x->{}) ;
+            } catch (HttpException ex) {
+                assertEquals(HttpSC.METHOD_NOT_ALLOWED_405, ex.getResponseCode()) ;
+            }
+
+            query("http://localhost:3330/ABC/FuTest","ASK{}",x->{}) ;
+        } finally { server.stop() ; } 
+    }
+
     /** Create an HttpEntity for the graph */  
     protected static HttpEntity graphToHttpEntity(final Graph graph) {
         final RDFFormat syntax = RDFFormat.TURTLE_BLOCKS ;
@@ -167,4 +251,10 @@ public class TestEmbeddedFuseki {
     private DatasetGraph dataset() {
         return DatasetGraphFactory.createTxnMem() ;
     }
+
+    private static void query(String URL, String query, Consumer<QueryExecution> body) {
+        try (QueryExecution qExec = QueryExecutionFactory.sparqlService(URL, query) ) {
+            body.accept(qExec);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/176fb133/jena-fuseki2/jena-fuseki-embedded/testing/FusekiEmbedded/config.ttl
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-embedded/testing/FusekiEmbedded/config.ttl b/jena-fuseki2/jena-fuseki-embedded/testing/FusekiEmbedded/config.ttl
new file mode 100644
index 0000000..5a7f84a
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-embedded/testing/FusekiEmbedded/config.ttl
@@ -0,0 +1,18 @@
+@prefix :        <#> .
+@prefix fuseki:  <http://jena.apache.org/fuseki#> .
+@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
+@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
+
+<#serviceInMemory> rdf:type fuseki:Service;
+    rdfs:label "test";
+    fuseki:name "FuTest";
+    fuseki:serviceQuery "query";
+    fuseki:serviceUpdate "update";
+    fuseki:serviceUpload "upload" ;
+    fuseki:dataset <#dataset> ;
+.
+
+<#dataset> rdf:type ja:RDFDataset;
+.